React Native:错误:找不到包名

5

将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来包含软件包名称?文档中没有找到相关信息。

谢谢

3个回答

25

对我来说,解决方法是在清单标记中添加“package”标记。我不需要创建另一个虚拟文件夹。

现在清单开放标记看起来像这样:

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

2
在将 Android Gradle 插件升级到 7.2.0 后,我在 React Native 项目中遇到了这个问题。添加 package 属性解决了这个问题。谢谢! - Aleksi
@Aleksi 但是我不明白 - package属性在新版本的React Native中已被弃用,它让我将其添加到build.gradle(命名空间)中,但仍然出现错误。 - chenop
为什么没有它就无法编译呢? - undefined
最后,我成功地使用包规范构建了它,然后安全地将其移除(因为库在抱怨它已经过时了)。 - undefined

4
如果有人遇到相同的问题,当拥有多个口味和AndroidManifest.xml文件时,我的结论是: RN存在某种错误,它要求在android/app/src中按字母顺序排列的第一个文件夹必须具有package属性。否则,它将抛出错误。 一个简单的解决方案是创建一个虚拟文件夹,例如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>

0

对我来说,这个错误是在将sdkVersion从31升级到33和Gradle版本之后开始出现的。

我检查了Git中的更改,并注意到AndroidManifest.xml中的package属性被删除了。

所以我又加回了这个属性。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接