我使用 react-native init MyApp 来初始化一个新的React Native应用程序 . 这创建了包含 com.myapp 包的Android项目 .
react-native init MyApp
com.myapp
更改此包名称的最佳方法是什么,例如: com.mycompany.myapp ?
com.mycompany.myapp
我尝试在 AndroidManifest.xml 中更改它但是它创建了其他错误,所以我不是这样的 .
AndroidManifest.xml
任何的想法?
我有一个基于@Cherniv答案的解决方案(适用于macOS) . 两个不同之处:我在java文件夹中有一个Main2Activity.java,我做同样的事情,而且我不打扰调用./gradlew clean,因为看起来反应原生包装器会自动执行此操作 .
无论如何,我的解决方案做了切尔诺夫的工作,除了我为它制作了一个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 to com / MyWebsite / MyAppName)
要将包名称从com.myapp更改为:com.mycompany.myapp(例如),
对于react应用程序的iOS应用程序,请使用xcode - 一般情况下 .
对于Android应用程序,在模块级别打开build.gradle . android / app文件夹中的那个 . 你会找到
... defaultConfig { applicationId com.myapp ... } ...
将“com.myapp”更改为您需要的任何内容 .
希望这可以帮助 .
转到档案 android/app/src/main/AndroidManifest.xml -
更新:
元素 application 的attr android:label 如下:
旧值 - android:label =“@ string / app_name”新值 - android:label =“(你要放的字符串)”
和
元素 activity 的attr android:label 如下:
为我工作,希望它会有所帮助 .
如果您使用的是Android Studio-
将 com.myapp 更改为 com.mycompany.myapp
在 android/app/src/main/java 下创建一个新的包层次结构com.mycompany.myapp
android/app/src/main/java
使用Android studio GUI将所有类从 com.myapp 复制到 com.mycompany.myapp
Android studio将负责为所有复制的类添加合适的包名称 . 如果您有一些自定义模块并且不想在所有.java文件中手动替换,这将非常有用 .
更新 android/app/src/main/AndroidManifest.xml 和 android/app/build.gradle (将 com.myapp 替换为 com.mycompany.myapp
android/app/src/main/AndroidManifest.xml
android/app/build.gradle
同步项目(gradle build)
init脚本根据您提供的名称为Android生成唯一标识符(例如 com.acmeapp 表示 AcmeApp ) .
com.acmeapp
AcmeApp
您可以通过在 android/app/build.gradle 中查找applicationId键来查看生成的名称 .
如果您需要更改该唯一标识符,请按照以下说明立即执行:
在 /android 文件夹中,将所有出现的 com.acmeapp 替换为 com.acme.app
/android
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/
转到Android工作室
右键单击您的包(最可能是com) - > Refractor - > Rename - >在对话框中输入新的包名 - > Do Refractor
它会在任何地方重命名您的包名称 .
我使用 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
我've changed project'子文件夹名称来自:“android / app / src / main / java / MY / APP / OLD_ID / " to: " 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中:
在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
按照简单的步骤重命名 app name 和 Package name
简单地改变 package.json 文件中的 name 根据需要保存 .
删除名为android的文件夹
运行命令 react-native upgrade
9 回答
我有一个基于@Cherniv答案的解决方案(适用于macOS) . 两个不同之处:我在java文件夹中有一个Main2Activity.java,我做同样的事情,而且我不打扰调用./gradlew clean,因为看起来反应原生包装器会自动执行此操作 .
无论如何,我的解决方案做了切尔诺夫的工作,除了我为它制作了一个bash shell脚本,因为我使用一组代码构建多个应用程序,并且希望能够在运行我的npm脚本时轻松更改包名称 .
这是我使用的bash脚本 . 您需要修改要使用的packageName,并添加您想要的任何其他内容......但这是基础知识 . 您可以创建.sh文件,授予权限,然后从您运行react-native的同一文件夹中运行它:
免责声明:您需要首先在java文件底部附近编辑MainApplication.java的注释 . 它在评论中有“包”字样 . 由于脚本的工作方式,它需要包含“package”一词的任何行并替换它 . 因此,此脚本可能无法进行验证,因为在其他地方可能会使用相同的单词 .
第二个免责声明:前3个sed命令从名为javaFiles的目录编辑java文件 . 我自己创建了这个目录,因为我想拥有一组从那里复制的java文件(因为我将来可能会向它添加新的包) . 你可能想要做同样的事情 . 因此,从java文件夹中复制所有文件(通过其子文件夹查找实际的java文件)并将它们放在一个名为javaFiles的新文件夹中 .
第三个免责声明:您需要编辑packageName变量,使其与脚本顶部和底部的路径一致(com.MyWebsite.MyAppName to com / MyWebsite / MyAppName)
要将包名称从com.myapp更改为:com.mycompany.myapp(例如),
对于react应用程序的iOS应用程序,请使用xcode - 一般情况下 .
对于Android应用程序,在模块级别打开build.gradle . android / app文件夹中的那个 . 你会找到
... defaultConfig { applicationId com.myapp ... } ...
将“com.myapp”更改为您需要的任何内容 .
希望这可以帮助 .
转到档案 android/app/src/main/AndroidManifest.xml -
更新:
元素 application 的attr android:label 如下:
和
元素 activity 的attr android:label 如下:
为我工作,希望它会有所帮助 .
如果您使用的是Android Studio-
将
com.myapp
更改为com.mycompany.myapp
在
android/app/src/main/java
下创建一个新的包层次结构com.mycompany.myapp使用Android studio GUI将所有类从
com.myapp
复制到com.mycompany.myapp
Android studio将负责为所有复制的类添加合适的包名称 . 如果您有一些自定义模块并且不想在所有.java文件中手动替换,这将非常有用 .
更新
android/app/src/main/AndroidManifest.xml
和android/app/build.gradle
(将com.myapp
替换为com.mycompany.myapp
同步项目(gradle build)
init脚本根据您提供的名称为Android生成唯一标识符(例如
com.acmeapp
表示AcmeApp
) .您可以通过在
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/
转到Android工作室
右键单击您的包(最可能是com) - > Refractor - > Rename - >在对话框中输入新的包名 - > Do Refractor
它会在任何地方重命名您的包名称 .
我使用 react-native-rename npm包 .
安装使用
然后从React Native项目的根目录执行以下操作
react-native-rename on npm
我've changed project'子文件夹名称来自:“android / app / src / main / java / MY / APP / OLD_ID / " to: " android / app / src / main / java / MY / APP / NEW_ID /”
然后手动切换旧的和新的包ID:
在:android / app / src / main / java / MY / APP / NEW_ID / MainActivity.java:
在android / app / src / main / java / MY / APP / NEW_ID / MainApplication.java中:
在android / app / src / main / AndroidManifest.xml中:
在android / app / build.gradle中:
(可选)在android / app / BUCK中:
Gradle'清理到底(在/ android文件夹中):
按照简单的步骤重命名 app name 和 Package name
简单地改变 package.json 文件中的 name 根据需要保存 .
删除名为android的文件夹
运行命令 react-native upgrade