我使用react-native init MyApp
初始化一个新的React Native应用。
这创建了包含com.myapp
包的Android项目。
更改此软件包名称的最佳方法是什么,例如:com.mycompany.myapp
?
我尝试在AndroidManifest.xml
中更改它,但它产生了其他错误,所以我假设它不是那样。
有什么想法吗?
答案 0 :(得分:259)
我改变了项目'子文件夹名称来自:" android / app / src / main / java / MY / APP / OLD_ID / " to:" android / app / src / main / java / MY / APP / NEW_ID / "
然后手动切换旧的和新的包ID:
在: 机器人/应用/ SRC /主/爪哇/ 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"
)
摇篮'最后清理(在 / android 文件夹中):
./gradlew clean
答案 1 :(得分:61)
我使用 react-native-rename npm包。
使用
安装npm install react-native-rename -g
然后从React Native项目的根目录执行以下
react-native-rename "MyApp" -b com.mycompany.myapp
答案 2 :(得分:9)
要将软件包名称从com.myapp更改为:com.mycompany.myapp,例如,
对于android应用,在模块级别打开build.gradle。 android / app文件夹中的一个。您会发现
...
defaultConfig {
applicationId com.myapp
...
}
...
将“ com.myapp”更改为您所需的任何内容。
希望这会有所帮助。
答案 3 :(得分:7)
您可以简单地使用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.java
和MainApplication.java
。
更改软件包名称之前,请从这两个文件进行备份,更改软件包名称后,只需将其放回原处即可。这个解决方案对我有用
更多信息: react-native-rename
答案 4 :(得分:6)
如果您使用的是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)
答案 5 :(得分:6)
转到Android工作室
右键单击您的包裹(最可能是com) - >折射器 - >重命名 - >在对话框中输入新的包名称 - >做折射器
它会在任何地方重命名您的包名称。
答案 6 :(得分:6)
初始化脚本会根据您提供的名称为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/
答案 7 :(得分:3)
我有一个基于@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)
答案 8 :(得分:3)
最简单的一个:
Row
答案 9 :(得分:3)
使用
npx react-native-rename <newName>
带有自定义的捆绑包标识符(仅限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
中查看更多答案 10 :(得分:2)
如果您使用的是VSCode
和Windows
。
1。按Control + Shift + F
。
2。用您的Package Name
查找您的Replace All
和new Package Name
。
类型"cd android"
类型"./gradlew clean"
答案 11 :(得分:1)
react-native-rename 非常适合为我的项目重命名应用程序和包标识符。
更新应用名称:
npx react-native-rename "New App Label"
更新包标识符:npx react-native-rename -b "appname.example.com"
答案 12 :(得分:1)
在更改您的 React Native 包名称之前!请备份MainActivity.java 和MainApplication.java 文件。因为这个库删除了你的 MainActivity.java 和 MainApplication.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.java 和 MainApplication.java 中重命名包名称。
谢谢。
答案 13 :(得分:1)
运行此命令后:
react-native-rename "MyApp" -b com.mycompany.myapp
请确保还转到Build.gradle
下的android/app/...
并按如下所示重命名应用程序ID:
defaultConfig {
applicationId:com.appname.xxx
........
}
答案 14 :(得分:1)
我使用了react-native-rename软件包。
在终端中运行命令进行安装:
thread group
Loop controller
Constant throughput timer
JSR223sampler1 (sleep time 3000ms)
JSR223sampler2 (sleep time 3000ms)
JSR223sampler3 (sleep time 3000ms)
JSR223sampler4 (sleep time 3000ms)
summary report.
在您的React Native项目的根目录中,运行以下命令:
npm install react-native-rename -g
答案 15 :(得分:1)
如果您尚未在android文件夹中进行任何自定义更改,请按照以下简单步骤将您的 app name
和 Package name
重命名您刚刚初始化项目的场景)
name
文件中的 package.json
并保存。react-native upgrade
注意:如评论中的ivoteje50所述,如果您已经按照官方说明生成了密钥库,请不要删除android文件夹,因为它将删除密钥库,并且您无法重新签名再次应用。
答案 16 :(得分:0)
到处重命名包名后, 来自安卓工作室。 File -> Invalidate caches/Restart 可能会修复这种类型的错误
这对我有用
答案 17 :(得分:0)
要更改包名称,您必须编辑项目中的四个文件:
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
前两个文件的包名如下所示。
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 清理您的项目。
答案 18 :(得分:0)
您可以使用react-native-rename软件包,该软件包将对
下的软件包名称进行所有必要的更改。,但是请确保手动更改java / com文件夹下所有文件的软件包名称。因为当我创建启动画面活动时,旧的软件包名称不会更新。
答案 19 :(得分:0)
为了换包,我搜索并尝试了很多方法,但有些方法很难,有些方法已经过时。在搜索时,我发现了一个网站,该网站讨论了一种经过测试的非常简单的方法,我个人也使用过这个方法。链接:https://www.geoclassifieds.in/2021/02/change-package-name-react-native.html
答案 20 :(得分:0)
让原始应用名称为:com.myApp
让新的应用程序名称:'com.newname.myApp`
android\app\src\main\AndroidManifest.xml
重命名xml属性:`package="com.newname.myApp"
android\app\src\main\java\com\[yourAppName]\MainActivity.java
将第一行从 package com.myApp;
重命名为 package com.newname.myApp;
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");
android\app\build.gradle
在 defaultConfig
重命名 applicationId
到“com.newname.myApp”
在命令行上运行:
$ npx react-native start
$ npx react-native run-android
答案 21 :(得分: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
答案 22 :(得分:0)
仅使用我的IDE的搜索和替换工具即可达到目的。
答案 23 :(得分:0)
转到Android Studio,打开应用,右键单击Java并选择 新建,然后打包。
提供所需的名称(例如com.something)。
将文件从另一个程序包(要重命名)移动到新程序包。删除旧软件包。
在编辑器中转到您的项目,并使用快捷方式搜索所有文件(在Mac上为shift cmd F)。键入旧软件包的名称。将所有引用更改为新的程序包名称。
转到Android Studio,构建,清理项目,重建项目。
完成!
快乐编码:)
答案 24 :(得分:0)
在VS Code中,按Ctrl + Shift + F
,然后在“查找”中输入您的旧程序包名称,然后在“替换”中输入您的新程序包。然后按“替换所有匹配项”。
绝对不是务实的方式。但是,它为我完成了窍门。
答案 25 :(得分:-5)
转到文件 android / app / src / main / AndroidManifest.xml -
更新:
元素应用程序的attr android:label :
旧值 - android:label =“@ string / app_name”
新值 - android:label =“(你要放的字符串)”
和
元素活动的attr android:label :
旧值 - android:label =“@ string / app_name”
新值 - android:label =“(你要放的字符串)”
为我工作,希望它会有所帮助。