2017-04-25 8 views
1

무엇 때문에 빌드 도구가 부족한 등 내 전화 갭 프로젝트에서 많은 차이가 발생하고 있습니다.여러 번로드 된 플러그인 빌드 프로세스가 실패합니다.

나는 다음과 같은 설정이 있습니다

... 
Uncaught module cordova-plugin-vibration.notification already defined 
define @ cordova.js:79 
(anonymous) @ vibration.js:1 
cordova.js:79 Uncaught module cordova-plugin-vibration.notification already defined 
define @ cordova.js:79 
(anonymous) @ vibration.js:1 
cordova.js:79 Uncaught module cordova-plugin-vibration.Vibration already defined 
define @ cordova.js:79 
(anonymous) @ Vibration.js:1 
cordova.js:79 Uncaught module cordova-plugin-vibration.Vibration already defined 
define @ cordova.js:79 
(anonymous) @ Vibration.js:1 
cordova.js:79 Uncaught module cordova-plugin-vibration.Vibration already defined 
define @ cordova.js:79 
(anonymous) @ Vibration.js:1 
cordova.js:79 Uncaught module cordova-plugin-vibration.Vibration already defined 
define @ cordova.js:79 
(anonymous) @ Vibration.js:1 
cordova.js:79 Uncaught module cordova-plugin-vibration.Vibration already defined 
define @ cordova.js:79 
(anonymous) @ Vibration.js:1 
cordova.js:79 Uncaught module cordova-plugin-vibration.Vibration already defined 
define @ cordova.js:79 
(anonymous) @ Vibration.js:1 
cordova.js:79 Uncaught module cordova-plugin-qrscanner.QRScanner already defined 
define @ cordova.js:79 
(anonymous) @ www.min.js:1 
cordova.js:79 Uncaught module phonegap-plugin-barcodescanner.BarcodeScanner already defined 
define @ cordova.js:79 
(anonymous) @ barcodescanner.js:1 
cordova.js:79 Uncaught module phonegap-plugin-barcodescanner.BarcodeScanner already defined 
define @ cordova.js:79 
(anonymous) @ barcodescanner.js:1 
cordova.js:79 Uncaught module phonegap-plugin-barcodescanner.BarcodeScanner already defined 
define @ cordova.js:79 
(anonymous) @ barcodescanner.js:1 
cordova.js:79 Uncaught module phonegap-plugin-barcodescanner.BarcodeScanner already defined 
define @ cordova.js:79 
(anonymous) @ barcodescanner.js:1 
cordova.js:79 Uncaught module phonegap-plugin-barcodescanner.BarcodeScanner already defined 
define @ cordova.js:79 
(anonymous) @ barcodescanner.js:1 
cordova.js:79 Uncaught module phonegap-plugin-barcodescanner.BarcodeScanner already defined 
define @ cordova.js:79 
(anonymous) @ barcodescanner.js:1 
cordova.js:79 Uncaught module cordova-plugin-qrscanner.QRScannerProxy already defined 
define @ cordova.js:79 
(anonymous) @ plugin.min.js:1 
cordova.js:79 Uncaught module phonegap-plugin-barcodescanner.BarcodeScannerProxy already defined 
define @ cordova.js:79 
(anonymous) @ BarcodeScannerProxy.js:1 
cordova.js:79 Uncaught module phonegap-plugin-barcodescanner.BarcodeScannerProxy already defined 
define @ cordova.js:79 
(anonymous) @ BarcodeScannerProxy.js:1 
cordova.js:79 Uncaught module phonegap-plugin-barcodescanner.BarcodeScannerProxy already defined 
define @ cordova.js:79 
(anonymous) @ BarcodeScannerProxy.js:1 
cordova.js:79 Uncaught module phonegap-plugin-barcodescanner.BarcodeScannerProxy already defined 
define @ cordova.js:79 
(anonymous) @ BarcodeScannerProxy.js:1 
cordova.js:79 Uncaught module phonegap-plugin-barcodescanner.BarcodeScannerProxy already defined 
define @ cordova.js:79 
(anonymous) @ BarcodeScannerProxy.js:1 
cordova.js:79 Uncaught module phonegap-plugin-barcodescanner.BarcodeScannerProxy already defined 
.... 

내가 생각 : 일반 예를 들어, HTML 파일로

<?xml version='1.0' encoding='utf-8'?> 
<widget id="com.example.qrreader" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0"> 
    <name>My Example QR Reader</name> 
    <description> 
     Example QR Reader 
    </description> 
    <author email="[email protected]" href="http://example.com"> 
     Repox 
    </author> 
    <content src="index.html" /> 
    <preference name="DisallowOverscroll" value="true" /> 
    <preference name="android-minSdkVersion" value="14" /> 
    <preference name="android-build-tool" value="gradle" /> 
    <preference name="orientation" value="portrait" /> 
    <plugin name="cordova-plugin-battery-status" source="npm" spec="~1.1.1" /> 
    <plugin name="cordova-plugin-camera" source="npm" spec="~2.1.1" /> 
    <plugin name="cordova-plugin-media-capture" source="npm" spec="~1.2.0" /> 
    <plugin name="cordova-plugin-console" source="npm" spec="~1.0.2" /> 
    <plugin name="cordova-plugin-contacts" source="npm" spec="~2.0.1" /> 
    <plugin name="cordova-plugin-device" source="npm" spec="~1.1.1" /> 
    <plugin name="cordova-plugin-device-motion" source="npm" spec="~1.2.0" /> 
    <plugin name="cordova-plugin-device-orientation" source="npm" spec="~1.0.2" /> 
    <plugin name="cordova-plugin-dialogs" source="npm" spec="~1.2.0" /> 
    <plugin name="cordova-plugin-file" source="npm" spec="~4.1.1" /> 
    <plugin name="cordova-plugin-file-transfer" source="npm" spec="~1.5.0" /> 
    <plugin name="cordova-plugin-geolocation" source="npm" spec="~2.1.0" /> 
    <plugin name="cordova-plugin-globalization" source="npm" spec="~1.0.3" /> 
    <plugin name="cordova-plugin-inappbrowser" source="npm" spec="~1.3.0" /> 
    <plugin name="cordova-plugin-media" source="npm" spec="~2.2.0" /> 
    <plugin name="cordova-plugin-network-information" source="npm" spec="~1.2.0" /> 
    <plugin name="cordova-plugin-splashscreen" source="npm" spec="~3.2.1" /> 
    <plugin name="cordova-plugin-statusbar" source="npm" spec="~2.1.2" /> 
    <plugin name="cordova-plugin-vibration" source="npm" spec="~2.1.0" /> 
    <plugin name="cordova-plugin-whitelist" source="npm" spec="~1.2.1" /> 
    <plugin name="phonegap-plugin-barcodescanner" spec="~6.0.6" /> 
    <plugin name="cordova-plugin-qrscanner" spec="~2.5.0" /> 
    <icon src="www/res/icon.png" /> 
    <icon gap:platform="ios" height="60" src="www/res/icons/ios/icon-60.png" width="60" /> 
    <icon gap:platform="ios" height="120" src="www/res/icons/ios/icon-60-2x.png" width="120" /> 
    <icon gap:platform="ios" height="180" src="www/res/icons/ios/icon-60-3x.png" width="180" /> 
    <icon gap:platform="ios" height="76" src="www/res/icons/ios/icon-76.png" width="76" /> 
    <icon gap:platform="ios" height="152" src="www/res/icons/ios/icon-76-2x.png" width="152" /> 
    <icon gap:platform="ios" height="40" src="www/res/icons/ios/icon-40.png" width="40" /> 
    <icon gap:platform="ios" height="80" src="www/res/icons/ios/icon-40-2x.png" width="80" /> 
    <icon gap:platform="ios" height="57" src="www/res/icons/ios/icon-57.png" width="57" /> 
    <icon gap:platform="ios" height="114" src="www/res/icons/ios/icon-57-2x.png" width="114" /> 
    <icon gap:platform="ios" height="72" src="www/res/icons/ios/icon-72.png" width="72" /> 
    <icon gap:platform="ios" height="144" src="www/res/icons/ios/icon-72-2x.png" width="144" /> 
    <icon gap:platform="ios" height="29" src="www/res/icons/ios/icon-small.png" width="29" /> 
    <icon gap:platform="ios" height="58" src="www/res/icons/ios/icon-small-2x.png" width="58" /> 
    <icon gap:platform="ios" height="50" src="www/res/icons/ios/icon-50.png" width="50" /> 
    <icon gap:platform="ios" height="100" src="www/res/icons/ios/icon-50-2x.png" width="100" /> 
    <icon gap:platform="android" gap:qualifier="ldpi" src="www/res/icons/android/icon-36-ldpi.png" /> 
    <icon gap:platform="android" gap:qualifier="mdpi" src="www/res/icons/android/icon-48-mdpi.png" /> 
    <icon gap:platform="android" gap:qualifier="hdpi" src="www/res/icons/android/icon-72-hdpi.png" /> 
    <icon gap:platform="android" gap:qualifier="xhdpi" src="www/res/icons/android/icon-96-xhdpi.png" /> 
    <icon gap:platform="android" gap:qualifier="xxhdpi" src="www/res/icons/android/icon-144-xxhdpi.png" /> 
    <icon gap:platform="android" gap:qualifier="xxxhdpi" src="www/res/icons/android/icon-192-xxxhdpi.png" /> 
    <splash src="www/res/splash.png" /> 
    <splash gap:platform="ios" height="480" src="www/res/screens/ios/screen-iphone-portrait.png" width="320" /> 
    <splash gap:platform="ios" height="960" src="www/res/screens/ios/screen-iphone-portrait-2x.png" width="640" /> 
    <splash gap:platform="ios" height="1024" src="www/res/screens/ios/screen-ipad-portrait.png" width="768" /> 
    <splash gap:platform="ios" height="2048" src="www/res/screens/ios/screen-ipad-portrait-2x.png" width="1536" /> 
    <splash gap:platform="ios" height="768" src="www/res/screens/ios/screen-ipad-landscape.png" width="1024" /> 
    <splash gap:platform="ios" height="1536" src="www/res/screens/ios/screen-ipad-landscape-2x.png" width="2048" /> 
    <splash gap:platform="ios" height="1136" src="www/res/screens/ios/screen-iphone-568h-2x.png" width="640" /> 
    <splash gap:platform="ios" height="1334" src="www/res/screens/ios/screen-iphone-portrait-667h.png" width="750" /> 
    <splash gap:platform="ios" height="2208" src="www/res/screens/ios/screen-iphone-portrait-736h.png" width="1242" /> 
    <splash gap:platform="ios" height="1242" src="www/res/screens/ios/screen-iphone-landscape-736h.png" width="2208" /> 
    <splash gap:platform="android" gap:qualifier="land-hdpi" src="www/res/screens/android/screen-hdpi-landscape.png" /> 
    <splash gap:platform="android" gap:qualifier="land-ldpi" src="www/res/screens/android/screen-ldpi-landscape.png" /> 
    <splash gap:platform="android" gap:qualifier="land-mdpi" src="www/res/screens/android/screen-mdpi-landscape.png" /> 
    <splash gap:platform="android" gap:qualifier="land-xhdpi" src="www/res/screens/android/screen-xhdpi-landscape.png" /> 
    <splash gap:platform="android" gap:qualifier="port-hdpi" src="www/res/screens/android/screen-hdpi-portrait.png" /> 
    <splash gap:platform="android" gap:qualifier="port-ldpi" src="www/res/screens/android/screen-ldpi-portrait.png" /> 
    <splash gap:platform="android" gap:qualifier="port-mdpi" src="www/res/screens/android/screen-mdpi-portrait.png" /> 
    <splash gap:platform="android" gap:qualifier="port-xhdpi" src="www/res/screens/android/screen-xhdpi-portrait.png" /> 
    <access origin="*" /> 
    <allow-intent href="http://*/*" /> 
    <allow-intent href="https://*/*" /> 
    <allow-intent href="tel:*" /> 
    <allow-intent href="sms:*" /> 
    <allow-intent href="mailto:*" /> 
    <allow-intent href="geo:*" /> 
    <platform name="android"> 
     <allow-intent href="market:*" /> 
    </platform> 
    <platform name="ios"> 
     <allow-intent href="itms:*" /> 
     <allow-intent href="itms-apps:*" /> 
    </platform> 
    <gap:config-file platform="ios" parent="NSCameraUsageDescription" overwrite="true"> 
     <string>To read QR codes</string> 
    </gap:config-file> 

</widget> 

를 콘솔 내 응용 프로그램은 코르도바 플러그인을 여러 번로드하려고 하더군요 이러한 것들이 또한 나의 건축을 실패하게 만듭니다. Phonegap Build를 통해 내 IOS 또는 Android 앱을 더 이상 만들 수 없습니다.

내장 안드로이드에 대한 로그는 말한다 다음

BUILD 실패

Total time: 13.921 secs 
Error: /project/gradlew: Command failed with exit code 1 Error output: 
Note: Some input files use or override a deprecated API. 
Note: Recompile with -Xlint:deprecation for details. 
Note: Some input files use or override a deprecated API. 
Note: Recompile with -Xlint:deprecation for details. 
/project/AndroidManifest.xml:31:5-90 Error: 
    Element uses-permission#android.permission.CAMERA at AndroidManifest.xml:31:5-90 duplicated with element declared at AndroidManifest.xml:28:5-65 
/project/AndroidManifest.xml:32:5-85 Error: 
    Element uses-feature#android.hardware.camera at AndroidManifest.xml:32:5-85 duplicated with element declared at AndroidManifest.xml:30:5-84 
/project/AndroidManifest.xml Error: 
    Validation failed, exiting 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':processDebugManifest'. 
> Manifest merger failed with multiple errors, see logs 

내가 어디에 내 문제에 대한 해결책을 찾아야하는지 아무 생각이 없다 모듈이 여러 번로드하려고하는 이유와 빌드가 갑자기 실패하는 이유를 알 수 없습니다.

+0

문제의 플러그를 제거하고 하나씩 추가하여 문제의 원인을 찾으세요. – Michael

답변

1

From searching around, 마치 interesting Android issue을 우연히 만난 것처럼 보입니다. 당신은 폰갭은 빌드 사용하고 있기 때문에

<uses-permission android:name="android.permission.CAMERA" /> 

불행하게도, 당신이 AndroidManifest를 파일을 편집 할 수 없습니다 : 기본적으로 두 개 이상의 참조 플러그인 비슷한에 파일의 AndroidManifest.xml에 중복 사용 권한 항목을 추가한다. 위의 설정을 사용하여, 나는 바코드 스캐너 플러그인 라인을 제거하여 성공적으로 구축 할 수 있었다 : 나는 QR 스캐너 및 카메라 플러그인도 카메라 권한을 지정 같은데요

<plugin name="phonegap-plugin-barcodescanner" spec="~6.0.6" /> 

. 세 가지가 모두 필요합니까? 하나의 플러그인이 다른 플러그인의 기능에 번들로 제공 될 수 있습니다. 그렇지 않으면 플러그인을 포크하고 AndroidManifest 권한을 업데이트하고 다시 컴파일해야합니다. 쉬운 작업이 아닙니다.

+2

당신은 올바른 방향으로 나를 잡았습니다. 문제는 phonegap-plugin-barcodescanner에 의해 발생합니다. – Repox

+0

달콤한! 다행히 도울 수있어. – dotNetkow