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

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

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

任何想法?


当前回答

如果您正在使用Android Studio-

com的变化。Myapp到com.mycompany.myapp

create a new package hierarchy com.mycompany.myapp under android/app/src/main/java Copy all classes from com.myapp to com.mycompany.myapp using Android studio GUI Android studio will take care of putting suitable package name for all copied classes. This is useful if you have some custom modules and don't want to manually replace in all the .java files. Update android/app/src/main/AndroidManifest.xml and android/app/build.gradle (replace com.myapp to com.mycompany.myapp Sync the project (gradle build)

其他回答

这些信息对你很有帮助,所以仔细听……

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

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

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

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

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

希望这能有所帮助。

我今天才知道这个答案,但添加这个答案是为了帮助别人。你只需要在app/build中添加一个命名空间。Gradle引用旧的名字,像这样:

defaultConfig {
  applicationId "com.mycompany.myapp"
  namespace "com.myapp"
}

然后你可以有一个bash脚本,用这样的东西改变applicationId:

function sedi {
  if [ "$(uname)" == "Linux" ]; then
    \sed -i "$@"
  else
    \sed -i "" "$@"
  fi
}

bundle_name=com.mycompany.myapp

sedi -E "s/applicationId \"[-0-9a-zA-Z._]*\"/applicationId \"${bundle_name}\"/" android/app/build.gradle

Goto Android工作室

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

它将重命名您的包的名称。

运行后:

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

确保也转到构建。Gradle在android/app/… 并重命名应用程序Id如下所示:

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