Aut*_*ico 15 android android-manifest cordova
我使用两个不同的插件到cordova,它们都有相同的uses-feature,一个有android:required="false"一个没有.
这会导致构建时出错:
processDebugManifest
/path/to/project/platforms/android/AndroidManifest.xml:31:5 Error:
Element uses-feature#android.hardware.camera at AndroidManifest.xml:31:5 duplicated with element declared at AndroidManifest.xml:27:5
/path/to/project/platforms/android/AndroidManifest.xml:32:5 Error:
Element uses-feature#android.hardware.camera.autofocus at AndroidManifest.xml:32:5 duplicated with element declared at AndroidManifest.xml:28:5
/path/to/project/platforms/android/AndroidManifest.xml:0:0 Error:
Validation failed, exiting
:processDebugManifest FAILED
.....
ERROR building one of the platforms: Error: /path/to/project/platforms/android/cordova/build: Command failed with exit code 1
You may not have the required environment or OS to build this project
Run Code Online (Sandbox Code Playgroud)
编译后的清单在构建时具有以下内容:
...
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
...
Run Code Online (Sandbox Code Playgroud)
有什么办法可以解决这个问题吗?
cordova版本5.4.1
小智 10
我有使用cordova-plugin-camera和phonegap-plugin-barcodescanner的理智问题.我的修复:
ionic cordova platform rm android
ionic cordova platform rm ios
ionic cordova plugin rm phonegap-plugin-barcodescanner
rm -r plugins
rm -r node_modules
rm package-lock.json
Run Code Online (Sandbox Code Playgroud)
接下来删除package.json的phonegap-plugin-barcodescanner.跑:
npm install
ionic cordova platform add android
Run Code Online (Sandbox Code Playgroud)
接下来做一个新的构建:
ionic cordova run android
Run Code Online (Sandbox Code Playgroud)
接下来再次添加插件:
ionic cordova plugin add phonegap-plugin-barcodescanner
Run Code Online (Sandbox Code Playgroud)
小智 9
1.打开插件/ [你的插件名称] /plugin.xml
2.删除此行:
`<uses-feature android:name="android.hardware.camera" android:required="false" />`
Run Code Online (Sandbox Code Playgroud)
3.重建你的项目
上述解决方案都不令人满意,因为您需要修改一些生成的输出或调整一些插件。只有“临时”修复。我们应该能够通过只修改我们的源代码来解决这个问题。
从 Cordova 6.4+ 开始,我们可以利用文件中的edit-config标签config.xml。以下解决方案也适用于 CI 和自动化构建。
它已经针对类似的场景进行了测试,其中两个cordova插件定义了相同的<uses-feature>名称:
/Users/me/dev/wkspace/project/cordova/platforms/android/app/src/main/AndroidManifest.xml:55:5-66 Error:
Element uses-feature#android.hardware.location.gps at AndroidManifest.xml:55:5-66 duplicated with element declared at AndroidManifest.xml:50:5-90
/Users/me/dev/wkspace/project/cordova/platforms/android/app/src/main/AndroidManifest.xml Error:
Validation failed, exiting
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml 片段:
<!-- ... -->
<uses-feature android:name="android.hardware.location.gps" android:required="true" />
<uses-feature android:name="android.hardware.location.gps" />
<!-- ... -->
Run Code Online (Sandbox Code Playgroud)
解决方案:
内config.xml:
<platform name="android">
<!-- ... -->
<edit-config file="app/src/main/AndroidManifest.xml" mode="overwrite" target="/manifest/uses-feature[@android:name='android.hardware.location.gps']">
<uses-feature android:name="android.hardware.location.gps" />
</edit-config>
</platform>
Run Code Online (Sandbox Code Playgroud)
构建时,错误消失了。
因此,对于作者描述的问题,您可以尝试在 中添加以下内容config.xml:
<edit-config file="app/src/main/AndroidManifest.xml" mode="overwrite" target="/manifest/uses-feature[@android:name='android.hardware.camera']">
<uses-feature android:name="android.hardware.camera" />
</edit-config>
<edit-config file="app/src/main/AndroidManifest.xml" mode="overwrite" target="/manifest/uses-feature[@android:name='android.hardware.camera.autofocus']">
<uses-feature android:name="android.hardware.camera.autofocus" />
</edit-config>
Run Code Online (Sandbox Code Playgroud)
除了删除plugins.xml文件中的重复行之外,还可以转到[your project] /platforms/android/android.json并删除文件中的重复行.
在再次编译项目之前重新打开命令终端.
以下步骤帮助我解决了这个问题:
从您的config.xml中删除重复的元素
从platform / android / android.json文件中删除重复的对象。
从platform / android / app / src / main / AndroidManifest.xml文件中删除重复的元素。
关闭您的IDE /文本编辑器(特别是在使用VS Code的情况下)。
现在运行“ cordova build android”。
| 归档时间: |
|
| 查看次数: |
9642 次 |
| 最近记录: |