配置config.xml解决Ionic+Cordova构建时相机插件重复问题
解决Ionic+Cordova中AndroidManifest.xml重复相机uses-feature节点问题
执行ionic cordova prepare android后,AndroidManifest.xml会出现重复的<uses-feature android:name="android.hardware.camera"/>节点(分别带required="false"和required="true"属性),必须手动删除才能正常部署。你之前尝试的edit-config配置无效,可通过以下几种方式解决:
方法一:先移除所有重复节点,再添加统一配置
在config.xml中添加以下配置,先清理所有冲突的相机feature节点,再添加你需要的单一配置:
<!-- 移除所有名称为android.hardware.camera的uses-feature节点 --> <remove-config file="app/src/main/AndroidManifest.xml" target="/manifest/uses-feature[@android:name='android.hardware.camera']"/> <!-- 添加你需要的相机相关feature和权限 --> <uses-feature android:name="android.hardware.camera"/> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.FLASHLIGHT"/>
注意:如果你的项目中AndroidManifest.xml路径不同(比如旧版Cordova可能是platforms/android/AndroidManifest.xml),请调整file属性的路径。
方法二:统一相机插件的配置参数
重复节点通常是多个依赖相机的插件(比如cordova-plugin-camera、扫码插件等)各自添加feature导致的。可以在config.xml中给相机插件指定统一的required属性,避免重复生成:
<plugin name="cordova-plugin-camera" spec="^6.0.0"> <!-- 根据需求设置CAMERA_REQUIRED为true或false,确保所有插件统一配置 --> <variable name="CAMERA_REQUIRED" value="false"/> </plugin>
如果还有其他依赖相机的插件,也需要检查其文档,设置对应的参数来控制uses-feature的生成。
验证方法
修改config.xml后,执行ionic cordova prepare android --clean,重新生成Android平台文件,此时查看AndroidManifest.xml,应该已经自动清理了重复节点,无需手动修改。
内容的提问来源于stack exchange,提问作者max
相关产品推荐
相关产品推荐

