集成@viro-community/react-viro时AndroidManifest.xml冲突报错求助
React Native集成@viro-community/react-viro时AndroidManifest冲突解决
问题核心
你遇到的冲突是**com.google.ar.core.min_apk_version**这个meta-data标签的版本值冲突:[:arcore_client]提供的值是211680000,而com.google.ar:core:1.31.0提供的值是220920000。你之前在com.google.ar.core的meta-data标签加tools:replace,但这和冲突的标签不是同一个,所以无效。
解决步骤
在
AndroidManifest.xml的<application>标签内部,添加专门针对冲突标签的meta-data配置:<meta-data android:name="com.google.ar.core.min_apk_version" android:value="220920000" tools:replace="android:value"/>(value可以选你想保留的版本号,比如
220920000或211680000,也可以留空让Gradle自动处理)修改后的完整AndroidManifest.xml示例(重点看新增的meta-data):
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <!-- added xmlns or xmlns:tools attribute --> <uses-permission android:name="android.permission.INTERNET" /> <!-- viro --> <uses-permission android:name="android.permission.CAMERA" /> <!-- You may need these if doing any screen recording from within the app --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!-- Other camera related features --> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" tools:replace="required"/> <!-- Specifying OpenGL verison or requirements --> <uses-feature android:glEsVersion="0x00030000" android:required="false" tools:node="remove" tools:replace="required" /> <!-- Usage of accelerometer and gyroscope --> <uses-feature android:name="android.hardware.sensor.accelerometer" android:required="false" tools:replace="required" /> <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="false" tools:replace="required" /> <application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="false" android:theme="@style/AppTheme"> <!-- added below line for viro --> <meta-data android:name="com.google.ar.core" android:value="optional" tools:replace="android:value"/> <!-- 新增的冲突解决标签 --> <meta-data android:name="com.google.ar.core.min_apk_version" android:value="220920000" tools:replace="android:value"/> <activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest>清理并重新构建项目:
cd android ./gradlew clean ./gradlew assembleDebug
补充说明
如果不需要指定具体版本,也可以用tools:node="merge"让Gradle自动合并,或者tools:node="remove"移除其中一个依赖的该标签,但tools:replace是最直接的覆盖方式。
内容的提问来源于stack exchange,提问作者chris aimsworth
相关产品推荐
相关产品推荐

