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

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

我尝试在AndroidManifest.xml中更改它,但它创建了其他错误,所以我假设这不是方法。

任何想法?


当前回答

将包名从“com”更改为“。”Myapp到com.mycompany.myapp(例如),

对于react应用的iOS应用,在general下使用xcode -。 对于android应用程序,打开构建。在模块级Gradle。android/app文件夹里的那个。你会发现

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

改变名称。Myapp给你任何你需要的。

希望这能有所帮助。

其他回答

我有一个基于@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注释。它在评论中有“包”这个词。由于脚本的工作方式,它将任何带有“包”字样的行替换掉。因此,此脚本可能无法在未来进行验证,因为在其他地方可能会使用相同的单词。

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

第三个免责声明:您需要编辑packageName变量,使其与脚本顶部和底部的路径(com.MyWebsite。MyAppName到com/MyWebsite/MyAppName

我重命名了项目的子文件夹从:“android/app/src/main/java/MY/ app/ OLD_ID/”到:“android/app/src/main/java/MY/ app/ NEW_ID/”

然后手动切换新旧包id:

: android / app / src / main / java /我的/ app / NEW_ID / MainActivity.java:

package MY.APP.NEW_ID;

在android / app / src / main / java /我的/ 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 /美元:

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

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

./gradlew clean

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

npm install react-native-rename -g

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

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

在VS Code中,按Ctrl + Shift + F,在“Find”中输入旧的包名,在“Replace”中输入新包名。然后按“替换所有事件”。

绝对不是务实的方式。但是,这对我来说很管用。

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

npm install react-native-rename -g

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

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