在 React Native 中更改 Android 的包名称

Change package name for Android in React Native

我使用 react-native init MyApp 初始化了一个新的 React Native 应用程序。 这创建了一个包含 com.myapp.

包的 Android 项目。

更改此包名称的最佳方法是什么,例如:com.mycompany.myapp

我尝试在 AndroidManifest.xml 中更改它,但它产生了其他错误,所以我假设不是这样。

有什么想法吗?

我已将项目的子文件夹从“android/app/src/main/java/MY/APP/OLD_ID/”重命名为: "android/app/src/main/java/MY/APP/NEW_ID/"

然后手动切换新旧包id:

在: android/app/src/main/java/MY/APP/NEW_ID/MainActivity.java:

package MY.APP.NEW_ID;

android/app/src/main/java/MY/APP/NEW_ID/MainApplication.java:

package MY.APP.NEW_ID;

android/app/src/main/AndroidManifest.xml:

package="MY.APP.NEW_ID"

并且在android/app/build.gradle:

applicationId "MY.APP.NEW_ID"

android/app/BUCK:

android_build_config(
  package="MY.APP.NEW_ID"
)
android_resource(
  package="MY.APP.NEW_ID"
)

Gradle'清理结束(在/android文件夹中):

./gradlew clean

转到文件 android/app/src/main/AndroidManifest.xml -

更新:

元素 application 的属性 android:label as :

Old value - android:label="@string/app_name"

New Value - android:label="(string you want to put)"

attr android:元素 activity 的标签 as :

Old value - android:label="@string/app_name"

New Value - android:label="(string you want to put)"

为我工作,希望它会有所帮助。

我有一个基于@Cherniv 的回答的解决方案(适用于我的 macOS)。两个区别:我在 java 文件夹中有一个 Main2Activity.java ,我对它做同样的事情,而且我不打扰调用 ./gradlew clean 因为它似乎是 react-native 打包程序自动执行的无论如何。

无论如何,我的解决方案与 Cherniv 的一样,除了我为它制作了一个 bash shell 脚本,因为我正在使用一组代码构建多个应用程序并且希望能够轻松地每当我 运行 我的 npm 脚本时更改包名称。

这是我使用的 bash 脚本。您需要修改要使用的 packageName,并向其中添加任何其他内容……但这是基础知识。您可以创建一个 .sh 文件,授予权限,然后 运行 从您 运行 react-native 来自的同一文件夹中 运行 它:

rm -rf ./android/app/src/main/java


mkdir -p ./android/app/src/main/java/com/MyWebsite/MyAppName
    packageName="com.MyWebsite.MyAppName"
    sed -i '' -e "s/.*package.*/package "$packageName";/" ./android/app/src/main/javaFiles/Main2Activity.java
    sed -i '' -e "s/.*package.*/package "$packageName";/" ./android/app/src/main/javaFiles/MainActivity.java
    sed -i '' -e "s/.*package.*/package "$packageName";/" ./android/app/src/main/javaFiles/MainApplication.java
    sed -i '' -e "s/.*package=\".*/    package=\""$packageName"\"/" ./android/app/src/main/AndroidManifest.xml
    sed -i '' -e "s/.*package = '.*/  package = '"$packageName"',/" ./android/app/BUCK
    sed -i '' -e "s/.*applicationId.*/    applicationId \""$packageName"\"/" ./android/app/build.gradle

    cp -R ./android/app/src/main/javaFiles/ ./android/app/src/main/java/com/MyWebsite/MyAppName

免责声明:您需要先在 java 文件底部附近编辑 MainApplication.java 的评论。它在评论中有单词 'package'。由于脚本的工作方式,它会将其中包含单词 'package' 的任何行替换掉。因此,此脚本可能无法在未来得到验证,因为其他地方可能会使用相同的词。

第二个免责声明:前 3 个 sed 命令从名为 javaFiles 的目录中编辑 java 文件。我自己创建了这个目录,因为我想从那里复制一组 java 文件(因为我将来可能会向其中添加新包)。您可能会想做同样的事情。因此,复制 java 文件夹中的所有文件(通过其子文件夹找到实际的 java 文件)并将它们放入名为 javaFiles.

的新文件夹中

第三个免责声明:您需要编辑 packageName 变量以符合脚本顶部和底部的路径(com.MyWebsite.MyAppName 到 com/MyWebsite/MyAppName)

我使用 react-native-rename* npm 包。通过

安装
npm install react-native-rename -g

然后,从 React Native 项目的根目录执行以下命令:

react-native-rename "MyApp" -b com.mycompany.myapp

如果您正在使用 Android Studio-

com.myapp 更改为 com.mycompany.myapp

  1. android/app/src/main/java

  2. 下创建新的包层次结构 com.mycompany.myapp
  3. 使用 Android studio GUI

  4. com.myapp 中的所有 类 复制到 com.mycompany.myapp
  5. Android 工作室将负责为所有复制的 类 添加合适的包名称。如果您有一些自定义模块并且不想手动替换所有 .java 文件,这将很有用。

  6. 更新android/app/src/main/AndroidManifest.xmlandroid/app/build.gradle(将com.myapp替换为com.mycompany.myapp

  7. 同步项目(gradle构建)

转到Android工作室

右键单击您的包(最有可能是 com)-> Refractor -> 重命名 -> 在对话框中输入新的包名称 -> Do Refractor

它会在所有地方重命名你的包名。

将包名从com.myapp更改为:com.mycompany.myapp(例如),

  1. 对于react app的iOS app,使用xcode - under general.
  2. 对于 android 应用程序,在模块级别打开 build.gradle。 android/app 文件夹中的那个。你会发现
// ...
defaultConfig {
     applicationId com.myapp
     // ...
}
// ...

com.myapp 更改为您需要的任何内容。

希望这对您有所帮助。

init 脚本根据您给它的名称为 Android 生成一个唯一标识符(例如 com.acmeappAcmeApp)。

您可以通过在 android/app/build.gradle 中查找 applicationId 键来查看生成的名称。

如果您需要更改该唯一标识符,请按如下所述立即进行:

/android 文件夹中,将所有出现的 com.acmeapp 替换为 com.acme.app

然后使用以下命令更改目录结构:

mkdir android/app/src/main/java/com/acme

mv android/app/src/main/java/com/acmeapp android/app/src/main/java/com/acme/app

应用标识符中的每个点都需要一个文件夹级别。

来源:https://blog.elao.com/en/dev/from-react-native-init-to-app-stores-real-quick/

你可以简单地使用 react-native-rename npm package。

使用

安装

npm install react-native-rename -g

然后从 React Native 项目的根目录执行以下命令

react-native-rename "MyApp" -b com.mycompany.myapp

react-native-rename on npm

但请注意,此库删除了您的 MainActivity.javaMainApplication.java。 在更改您的包名称之前,请从这两个文件中备份,并且在更改包名称之后将其放回原来的位置。这个解决方案对我有用

更多信息: react-native-rename

在 VS Code 中,按 Ctrl + Shift + F 并在 'Find' 中输入您的旧包名称,并在 'Replace' 中输入您的新包。然后按 'Replace all occurrences'.

绝对不是务实的方式。但是,它对我有用。

转到 Android Studio,打开应用程序,右键单击 java 并选择 新建然后打包。

输入您想要的名称(例如 com.something)。

将文件从另一个包(您要重命名)移动到新包。删除旧包。

在编辑器中转到您的项目并使用快捷方式搜索所有文件(在 mac 上是 shift cmd F)。输入旧包的名称。更改对新包名称的所有引用。

转到 Android Studio、构建、清理项目、重建项目。

完成!

编码愉快:)

我用过 react-native-rename 包。

在终端中 运行 安装命令:

npm install react-native-rename -g

在 React Native 项目的根目录中,运行以下命令:

react-native-rename "NewNameOfApp" -b com.companyname.newnameofapp

您可以使用 react-native-rename 包,它将在

下对包名进行所有必要的更改

app/mainapplication.java

AndroidManifest.xml

但一定要手动更改java/com文件夹下所有文件的包名。因为当我创建启动画面时 activity 旧包名称未更新。

https://www.npmjs.com/package/react-native-rename

使用 npx react-native-rename <newName>

使用自定义捆绑包标识符(仅限 Android。对于 iOS,请使用 Xcode)

$ npx react-native-rename <newName> -b <bundleIdentifier>

首先,切换到新分支(可选但推荐)

$ git checkout -b rename-app

然后,重命名您的应用 $ npx react-native-rename "Travel App"

使用自定义捆绑包标识符

$ npx react-native-rename "Travel App" -b com.junedomingo.travelapp 

更改名称后,请确保转到 android 文件夹和 运行 gradlew clean。然后回到主项目和 运行 npx react-native run-android

此外,如果您之前的项目中有 google-services.json 文件,请根据新项目进行相应更改...那么您就可以开始了:)

在这里查看更多内容 https://github.com/junedomingo/react-native-rename#readme

只需使用我的 IDE 的搜索和替换工具就可以了。

在 运行 之后:

react-native-rename "MyApp" -b com.mycompany.myapp

确保也转到 android/app/... 下的 Build.gradle 并重命名应用程序 ID,如下所示:

defaultConfig {
        applicationId:com.appname.xxx
........
}

最简单的:

npx react-native-rename YourNewAppName -b com.YourCompanyName.YourNewAppName

如果您使用 VSCodeWindows

1.Press Control + Shift + F.

2.Find 你的 Package NameReplace All 与你的 new Package Name.

  1. 输入"cd android"

  2. 输入"./gradlew clean"

非常简单的方法:

cd /your/project/dir

运行 这个命令:

grep -rl "com.your.app" . | xargs sed -i 's/com.your.app/com.yournew.newapp/g'

重命名您的文件夹

android/app/src/main/java/com/your/app

改为

android/app/src/main/java/com/yournew/newapp

在更改你的 React Native 包名之前!请备份 MainActivity.javaMainApplication.java 文件。因为这个库删除了你的 MainActivity.javaMainApplication.java.

完成此操作后,您可以简单地使用 react-native-rename npm 包。

安装

npm install react-native-rename -g

然后从 React Native 项目的根目录执行以下命令

react-native-rename "new_project_name" -b com.mycompany.newprojectname

您终于可以在 AndroidManifest.xml 中查看您的新软件包名称了。 不要忘记在 MainActivity.javaMainApplication.java 中重命名包名称。

谢谢。

要更改包,我已经搜索并尝试了很多方法,但有些很难,有些已经过时了。在搜索时,我发现一个网站讨论了一种非常简单的方法,该方法已经过测试,我个人也使用过它。 Link : https://www.geoclassifieds.in/2021/02/change-package-name-react-native.html

到处重命名包名后, 来自 android 工作室。文件 -> 无效 caches/Restart 可能会修复此类错误

这对我有用

要更改包名称,您必须编辑项目中的四个文件:

 1. android/app/src/main/java/com/reactNativeSampleApp/MainActivity.java
 2. android/app/src/main/java/com/reactNativeSampleApp/MainApplication.java
 3. android/app/src/main/AndroidManifest.xml
 4. android/app/build.gradle

前 2 个文件的包名称如下所示。

 package com.WHATEVER_YOUR_PACKAGE_NAME_IS;

将其更改为您想要的包名称。

 package com.YOUR_DESIRED_PACKAGE_NAME;

您还必须编辑其他 2 个文件中的包名称。

  android/app/build.gradle

  android/app/src/main/AndroidManifest.xml

请注意,如果您的项目中有 google-services.json 文件,那么您还必须更改该文件中的包名称。

在此之后,您必须 ./gradlew 清理您的项目。

react-native-rename 截至撰写此答案之日,我的项目重命名应用程序和包标识符时效果很好。

  1. 要更新应用名称: npx react-native-rename "New App Label"

  2. 要更新包标识符:npx react-native-rename -b "appname.example.com"

反应 0.64 | 2021 年没有世博会

让原始应用名称为:com.myApp 让新应用名称:'com.newname.myApp`

  1. android\app\src\main\AndroidManifest.xml

重命名 xml 属性:`package="com.newname.myApp"


  1. android\app\src\main\java\com\[yourAppName]\MainActivity.java

将第一行从 package com.myApp; 重命名为 package com.newname.myApp;


  1. android\app\src\main\java\com\[yourAppName]\MainApplication.java

将第一行重命名为 package com.newname.myApp;

在classprivate static void initializeFlipper 重新命名此行:

Class<?> aClass = Class.forName("com.myApp.ReactNativeFlipper");

Class<?> aClass = Class.forName("com.newname.myApp.ReactNativeFlipper");


  1. android\app\build.gradle

关于defaultConfig重命名applicationId

到“com.newname.myApp”


  1. 运行 在命令行上:

      $ npx react-native start
      $ npx react-native run-android
    

我在尝试更改包名称时发现的一种最简单的方法是使用“搜索”选项并替换 VS Code 中的所有内容。

在搜索中使用 (com.yourprojectname) 并将其替换为 (com.newProjectName)

“react-native-rename”npm 包做同样的事情所以如果你不想安装任何包你可以试试上面的包。

但如果您使用的是 firebase,则步骤会略有不同

我会一步步给你提供程序。

首先我们要明白为什么要重命名一个包? 主要是为了唯一标识 App 对吧?因此,React Native 是一个跨平台,用于开发 运行 同时支持 iOS 和 Android 的应用程序。所以我建议在两个平台上都需要相同的标识符。如果 Android Package Name 是您应用程序的唯一标识符并且 iOS 它的 包 ID.

步骤:

  1. 首先关闭所有 editors/studio eg: xcode android studio vscode 然后通过 [=135= 在终端中安装包“react-native-rename” ] 执行命令(如果您觉得不安全,请将您的项目文件夹副本保存在另一个文件夹中进行备份):

npm install react-native-rename -g

  1. 成功安装软件包后,在终端中打开您的项目文件夹并点击以下命令,其中“双引号内的应用程序名称”是应用程序名称,<不带 double/single 引号的软件包名称> 替换为 package/bundle name/id:

react-native-rename "< Your app name Within double quotes >" -b <Your Package Name without double/single quotes>

示例:react-native-rename "Aptitude Test App" -b com.vaibhavmojidra.aptitudetestapp

注意确保package/bundlename/id都是小号

  1. 这还没有完成,现在每个文件都会更改它具有 bundle/package 名称的位置,除了 ios 项目中的一个文件,我们需要手动为此打开xcode>打开项目或文件> 从 projectfolder/ios/projectname.xcodeproj 中选择文件并 单击打开

  2. 项目导航器中单击第一个文件projectname.xcodeproj,然后在Bundle identifier[=77]字段中单击=] 输入包裹name/Bundle ID如下:

  1. 之后运行在终端

cd ios

  1. 然后运行

pod install

  1. 然后运行

cd ..

  1. 现在您已完成 ios 的所有更改,最后一步是打开 Android Studio> 打开现有项目> select projectfolder/android文件夹>点击打开

  2. 让它加载并完成所有过程,然后在 Build 菜单中单击“Clean Project”,然后文件菜单 > 关闭项目

  3. 关闭所有编辑器,现在您可以尝试在 ios 和 android 上 运行 项目的命令,它将 运行 重命名打包在启动服务器时添加额外的标志 --reset-cache:

npm start --reset-cache

享受它现在就可以工作了

我通过在以下位置手动更新包名称来修复此问题

1) app.json               |  ./
2) index.js               |  ./
3) package.json           |  ./
4) settings.gradle        |  ./android/
5) BUCK                   |  ./android/app/
6) build.gradle           |  ./android/app/
7) AndroidManifest.xml    |  ./android/app/src/main/
8) MainActivity.java      |  ./android/app/src/main/java/**
9) MainApplication.java   |  ./android/app/src/main/java/**
10)strings.xml            |  ./android/app/src/main/res/values
11)ReactNativeFlipper.java|  ./android/app/src/debug/java/com/<package-name>/

此信息可能对您有所帮助,请仔细聆听...

After updating package name and changing files, don't forget to change in 
package.json and app.json file at the root directory of your react native project

否则会出现下面这个错误

Invariant Violation: "Your new package name" has not been registered