在React Native中更改Android的包名称

mll*_*llm 138 android react-native react-native-android

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

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

我尝试更改它AndroidManifest.xml但它创建了其他错误,所以我假设它不是那样的.

任何的想法?

Che*_*niv 321

我已将项目'子文件夹名称从:" 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;
Run Code Online (Sandbox Code Playgroud)

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

package MY.APP.NEW_ID;
Run Code Online (Sandbox Code Playgroud)

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

package="MY.APP.NEW_ID"
Run Code Online (Sandbox Code Playgroud)

android/app/build.gradle中:

applicationId "MY.APP.NEW_ID"
Run Code Online (Sandbox Code Playgroud)

(可选)在android/app/BUCK中:

android_build_config(
  package="MY.APP.NEW_ID"
)
android_resource(
  package="MY.APP.NEW_ID"
)
Run Code Online (Sandbox Code Playgroud)

Gradle'清理到底(在/ android文件夹中):

./gradlew clean
Run Code Online (Sandbox Code Playgroud)

  • 我还需要编辑文件BUCK以用新的替换旧的包值.顺便说一下,应该将2个文件MainAcitivity.java和MainApplication.java重新定位到新的物理路径. (19认同)
  • 对于 RN 0.60+,必须在 `MainApplication#initializeFlipper` 中更改另一个 LoC:`Class<?> aClass = Class.forName("MY.APP.NEW_ID");` (5认同)
  • 如果您使用 **firebase** 那么您还需要替换 `google-services.json` 中 `package_name` 的两个实例中的旧包值 (4认同)
  • 我还将目录`android/app/src/main/java/com/old_app_name /`重命名为`... com/new_app_name /`,它似乎工作. (3认同)
  • 我有错误“无法完成会话:INSTALL_FAILED_UPDATE_INCOMPATIBLE”,直到我手动强制清理android设备模拟器:adb uninstall my.package.name ...所以方向很好,但android模拟器可以“保留”旧信息糟糕的方式使它看起来方向不起作用。(简单地卸载应用程序并不能解决这个问题!) (2认同)

Jav*_*uzi 67

我使用react-native-rename npm包.

安装使用

npm install react-native-rename -g
Run Code Online (Sandbox Code Playgroud)

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

react-native-rename "MyApp" -b com.mycompany.myapp
Run Code Online (Sandbox Code Playgroud)

在npm上反应原生重命名

  • 谢谢,打破了这个项目 (37认同)
  • @AchaBill 这个答案是从 2017 年开始的,自从……以后事情发生了变化……要小心。 (8认同)
  • 这对我有用。确保创建一个 git 分支以防万一:`git checkout -b newBranchName` (3认同)
  • 它破坏了我的项目,不得不创建一个新项目:( (2认同)
  • 像魅力一样打破了我的项目。 (2认同)

Olu*_*ola 12

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

  1. 对于react应用程序的iOS应用程序,请使用xcode - 一般情况下.
  2. 对于Android应用程序,在模块级别打开build.gradle.android/app文件夹中的那个.你会找到

    ... defaultConfig { applicationId com.myapp ... } ...

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

希望这可以帮助.

  • 这是更改包名称的最简单方法。不过,不更改您的本地包名称,这将更改您的下一个构建包。谢谢!完成此操作后,执行“./gradlew clean”,然后执行“./gradlew app:assembleRelease”。 (6认同)
  • “但是,`applicationId` 和本地 `package` 名称是相互独立的”,“`applicationId` 唯一标识设备上和 Google Play 商店中的应用程序” – https://developer.android.com/studio /构建/应用程序 ID (2认同)

Fed*_*Baù 11

反应 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 reneme 中这一行:

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
    
    Run Code Online (Sandbox Code Playgroud)

  • 如果您也有,请检查 google-services.json。 (4认同)

小智 10

最简单的一种:

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

  • 警告 - 这个包几年前似乎没有维护。 (2认同)

Moe*_*ini 9

您可以简单地使用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

但请注意,此lib删除了您MainActivity.javaMainApplication.java。更改软件包名称之前,请从这两个文件进行备份,更改软件包名称后,只需将其放回原处即可。这个解决方案对我有用

更多信息: react-native-rename

  • 实际上,我为我的项目尝试了不同的名称。但是当我更改项目名称时,react-native-rename 会从我的项目中删除这两个文件。 (2认同)

Atu*_*dav 8

初始化脚本会根据您为其提供的名称(例如,com.acmeapp针对AcmeApp)为Android生成唯一标识符。

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

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

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


sam*_*nge 8

如果您正在使用VSCodeWindows.

1.按Control + Shift + F

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

  1. 类型"cd android"

  2. 类型"./gradlew clean"


Var*_*mar 7

如果您使用的是Android Studio,

更改com.myappcom.mycompany.myapp

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

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

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

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

  5. 同步项目(逐步构建)


Ais*_*rya 7

转到Android Studio

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

它将在任何地方重命名您的包名称。


Kir*_* JD 7

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

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

  • 这还不够(好吧,如果您使用的是 Expo,也许就足够了)。您还必须重命名“android/app/src/main/java”和“android/app/src/debug/java”下的文件夹。文件夹结构例如“com/acme/awesomeapp”,反映了包名称结构。 (2认同)

Muh*_*dar 6

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

 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
Run Code Online (Sandbox Code Playgroud)

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

 package com.WHATEVER_YOUR_PACKAGE_NAME_IS;
Run Code Online (Sandbox Code Playgroud)

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

 package com.YOUR_DESIRED_PACKAGE_NAME;
Run Code Online (Sandbox Code Playgroud)

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

  android/app/build.gradle

  android/app/src/main/AndroidManifest.xml
Run Code Online (Sandbox Code Playgroud)

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

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


Kje*_*ell 5

我有一个基于@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
Run Code Online (Sandbox Code Playgroud)

免责声明:您需要首先在Java文件底部附近编辑MainApplication.java的注释。注释中有“包装”一词。由于脚本的工作方式,它会在其中包含单词“ package”的任何行并将其替换。因此,该脚本可能不会在将来进行验证,因为在其他地方可能会使用相同的单词。

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

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


Far*_*bir 5

npx react-native-rename <newName>

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

$ npx react-native-rename <newName> -b <bundleIdentifier>
Run Code Online (Sandbox Code Playgroud)

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

$ git checkout -b rename-app
Run Code Online (Sandbox Code Playgroud)

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

使用自定义捆绑标识符

$ npx react-native-rename "Travel App" -b com.junedomingo.travelapp 
Run Code Online (Sandbox Code Playgroud)

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

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

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