React Native:错误:找不到包名称

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)

  • 将 Android Gradle 插件升级到 7.2.0 后,React Native 项目中开始出现此问题。添加包属性修复了这个问题。谢谢! (2认同)

She*_* Mi 4

如果有人遇到同样的问题,当有多种风格和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)