【问题标题】:React Native: Error: Package name not foundReact Native:错误:找不到包名称
【发布时间】:2023-01-05 04:46:44
【问题描述】:

将 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]

据我了解,问题是相关的 AndroidManifest.xml 文件中没有 package 属性。由于我的项目有很多风格,package 属性是在编译时通过 app/build.gradle 动态添加的:

def pkgDataEntry = getRightValue(packagesData, variantMap)
variant.getMergedFlavor().applicationId = pkgDataEntry.pkg 

这样最终合并的清单文件具有 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}`);
  }

有没有办法让 RN 读取合并的清单文件? 如果不是,我如何修改userConfig以包含包名?我在文档中找不到任何相关信息。

谢谢

【问题讨论】:

    标签: android react-native


    【解决方案1】:

    对我来说,解决方案是将“package”标签添加到清单标签中。 我不必创建另一个虚拟文件夹。

    清单打开标签现在看起来像这样:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.yourProjectName">
    

    【讨论】:

    • 将 Android Gradle 插件升级到 7.2.0 后,React Native 项目开始出现此问题。添加包属性解决了这个问题。谢谢!
    • @Aleksi 但我不明白 - 在新版本的 react-native 中不推荐使用 package 属性,它要求我将它添加到 build.gradle (命名空间),但仍然出现错误
    【解决方案2】:

    如果有人遇到同样的问题,当有多种口味和AndroidManifest.xml文件,这是我的结论: RN 有某种错误,它需要第一的按字母顺序排列的文件夹,在android/应用程序/src, 其中有AndroidManifest.xml文件,有包裹属性。否则,它会抛出错误。

    一个简单的解决方案是创建一个虚拟文件夹,例如啊啊(首先按字母顺序排列)并创建AndroidManifest.xml在其中,具有以下属性 -包裹:

    <?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>
    

    【讨论】:

      【解决方案3】:

      对我来说,这个错误在将 sdkVersion 从 31 升级到 33 和 gradle 版本后开始。

      我确实检查了 git 中的更改,并注意到 package 属性已从 AndroidManifest.xml 中删除。

      所以我确实再次添加了这个属性。

      <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yourpackage">
      

      【讨论】:

        猜你喜欢
        • 2020-04-27
        • 2020-08-08
        • 1970-01-01
        • 2017-03-02
        • 2020-04-17
        • 2021-11-08
        • 2016-01-24
        • 2018-05-25
        相关资源
        最近更新 更多