She*_* Mi 5 android react-native
将 RN 集成到现有 Android 项目中后,出现以下错误:
Error: Package name not found in /home/.../AndroidManifest.xml at Object.projectConfig (/home/.../rn_integrated_app/node_modules/@react-native-community/cli-platform-android/build/config/index.js:74:11) at Object.get project [as project]
package
据我了解,问题是相关的 AndroidManifest.xml 文件中没有属性。由于我的项目有很多风格,因此package
在编译时通过 app/build.gradle 动态添加该属性:
def pkgDataEntry = getRightValue(packagesData, variantMap)
variant.getMergedFlavor().applicationId = pkgDataEntry.pkg
Run Code Online (Sandbox Code Playgroud)
这样最终合并的清单文件确实具有该package
属性。
错误发生在这里(@react-native-community/cli-platform-android/build/config/index.js
):
const packageName = userConfig.packageName || getPackageName(manifest);
if (!packageName) {
throw new Error(`Package name not found in ${manifestPath}`);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让RN读取合并后的manifest文件?如果没有,我该如何修改userConfig
以包含包名称?我在文档中找不到任何有关它的信息。
谢谢
Pat*_*rty 27
对我来说,解决方案是将“package”标签添加到清单标签中。我不必创建另一个虚拟文件夹。
清单开放标签现在如下所示:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yourProjectName">
Run Code Online (Sandbox Code Playgroud)
如果有人遇到同样的问题,当有多种风格和AndroidManifest.xml文件时,这是我的结论:RN 有某种错误,它需要按字母顺序排列的第一个文件夹,在android/app/src中,其中有AndroidManifest.xml文件,具有包属性。否则,它会抛出错误。
一个简单的解决方案是创建一个虚拟文件夹,例如aaa (按字母顺序排列)并在其中创建AndroidManifest.xml ,并具有以下属性 - package:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="aaa"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission
android:name="android.permission.GET_ACCOUNTS"
tools:node="remove"/>
</manifest>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27126 次 |
最近记录: |