253

我曾经react-native init MyApp初始化一个新的 React Native 应用程序。这创建了一个带有 package 的 Android 项目com.myapp

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

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

任何想法?

4

30 回答 30

579

我已将项目的子文件夹从:“ 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
于 2016-05-23T11:40:36.753 回答
94

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

npm install react-native-rename -g

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

react-native-rename "MyApp" -b com.mycompany.myapp
于 2017-09-17T10:28:54.127 回答
38

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

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

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

希望这可以帮助。

于 2018-07-02T10:17:26.793 回答
18

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

安装使用

npm install react-native-rename -g

然后从您的 React Native 项目的根目录执行以下操作

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

react-native-rename on npm

但请注意,这个库会删除你的MainActivity.javaand MainApplication.java。在更改您的包名称之前,请从这两个文件中备份,并在更改包名称后将其放回原处。这个解决方案对我有用

更多信息: react-native-rename

于 2019-01-30T08:55:17.907 回答
10

转到安卓工作室

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

它会在任何地方重命名你的包名。

于 2018-03-27T12:52:10.213 回答
10

最简单的一个:

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

于 2020-08-02T05:29:39.053 回答
9

如果您使用的是 Android Studio-

更改com.myappcom.mycompany.myapp

  1. 在下创建一个新的包层次结构 com.mycompany.myappandroid/app/src/main/java

  2. 将所有类复制com.myappcom.mycompany.myapp使用 Android Studio GUI

  3. Android Studio 将负责为所有复制的类放置合适的包名称。如果您有一些自定义模块并且不想手动替换所有 .java 文件,这很有用。

  4. 更新android/app/src/main/AndroidManifest.xmlandroid/app/build.gradle(替换com.myappcom.mycompany.myapp

  5. 同步项目(gradle build)

于 2018-01-15T06:28:47.357 回答
9

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

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

如果您需要更改该唯一标识符,请立即按照以下说明进行操作:

/android文件夹中,替换所有出现的com.acmeappbycom.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/

于 2018-08-18T17:18:42.030 回答
8

在 VS Code 中,按Ctrl + Shift + F并在“查找”中输入您的旧包名称,然后在“替换”中输入您的新包。然后按“替换所有匹配项”。

绝对不是务实的方式。但是,它对我来说已经成功了。

于 2019-05-24T12:09:39.157 回答
8

在撰写此答案之日, react-native-rename非常适合重命名我的项目的应用程序和捆绑标识符。

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

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

于 2021-07-26T03:19:04.587 回答
8

反应 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;To重命名package com.newname.myApp;


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

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

在课堂private 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
    
于 2021-08-04T09:21:20.687 回答
6

我有一个基于@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”的任何行并替换它。正因为如此,这个脚本可能不会在未来得到证明,因为在其他地方可能会使用相同的词。

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

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

于 2017-06-03T18:59:24.713 回答
6

利用 npx react-native-rename <newName>

使用自定义 Bundle Identifier(仅限 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

于 2020-01-19T08:35:26.290 回答
5

我使用了react-native-rename包。

在终端运行命令进行安装:

npm install react-native-rename -g

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

react-native-rename "NewNameOfApp" -b com.companyname.newnameofapp
于 2019-11-10T14:44:35.957 回答
4

如果您正在使用VSCodeWindows

1.按Control + Shift + F

2.找到你的Package NameReplace All你的new Package Name

  1. 类型"cd android"

  2. 类型"./gradlew clean"

于 2020-11-10T11:49:43.850 回答
4

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

 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 清理您的项目。

于 2021-07-02T12:51:14.457 回答
3

按照简单的步骤重命名您的app namePackage name如果您没有在 android 文件夹中进行任何自定义更改(即您刚刚初始化项目的场景)

  1. 只需根据需要更改文件name中的package.json内容并保存即可。
  2. 删除名为 android 的文件夹
  3. 运行命令react-native upgrade

注意:正如评论中提到的ivoteje50,如果您已经按照官方说明生成密钥库,请不要删除 android 文件夹,因为它会删除密钥库并且您无法再次签署新应用程序。

于 2018-09-07T11:53:18.513 回答
3

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

给出您想要的名称(例如 com.something)。

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

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

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

完毕!

快乐编码:)

于 2019-05-28T20:40:00.877 回答
2

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

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>/
于 2021-12-28T03:41:46.627 回答
1

运行后:

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

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

defaultConfig {
        applicationId:com.appname.xxx
........
}
于 2020-06-25T20:09:55.540 回答
1

在更改您的反应本机包名称之前!请备份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中重命名包名。

谢谢你。

于 2021-01-06T09:05:34.880 回答
0

非常简单的方法:

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
于 2020-11-16T12:31:37.117 回答
0

我将为您提供逐步的程序。

首先,我们需要了解为什么我们需要重命名一个包?主要用于唯一标识 App 对吗?所以 React Native 是一个跨平台的开发应用程序,可以在 iOS 和 Android 上运行。所以我建议在两个平台上都需要相同的标识符。如果Android Package Name是您的 App 的唯一标识符,而对于iOS ,它的bundle ID

脚步:

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

npm install react-native-rename -g

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

react-native-rename "<你的应用名称在双引号内>" -b <你的包名没有双引号/单引号>

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

注意确保包/捆绑包名称/ID 全部为小写

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

  2. 单击项目导航器中的第一个文件 projectname.xcodeproj,然后在Bundle identifier 字段中输入包名称/Bundle ID,如下所示:

在此处输入图像描述

  1. 之后在终端中运行

光盘

  1. 然后运行

吊舱安装

  1. 然后运行

光盘..

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

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

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

npm start --reset-cache

享受它现在可以工作了

于 2021-12-10T19:40:52.607 回答
0

This information can be helpful for you so listen properly...

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

Otherwise you will get this error below

Invariant Violation: "Your new package name" has not been registered
于 2022-01-31T17:24:34.157 回答
0

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

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

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

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

于 2021-09-27T06:40:56.780 回答
0

您可以使用 react-native-rename 包,它将在包名下进行所有必要的更改

应用程序/mainapplication.java

AndroidManifest.xml

但请确保手动更改 java/com 文件夹下所有文件的包名。因为当我创建启动屏幕活动时,旧包名称没有更新。

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

于 2019-11-21T03:50:59.780 回答
0

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

于 2021-02-12T04:03:06.220 回答
0

在到处重命名包名称后,来自 android studio。File -> Invalidate caches/Restart 可能会修复此类错误

这对我有用

于 2021-03-15T20:42:20.743 回答
0

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

于 2020-03-15T21:03:25.040 回答
-3

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

更新 :

attr android: Element应用程序的标签为:

旧值 - android:label="@string/app_name"

新值 - android:label="(你要输入的字符串)"

attr android: Element活动的标签为:

旧值 - android:label="@string/app_name"

新值 - android:label="(你要输入的字符串)"

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

于 2016-05-23T13:05:19.603 回答