我使用 react-native init MyApp
来初始化一个新的 React Native 应用程序。这创建了一个带有包 com.myapp
的 Android 项目。
更改此包名称的最佳方法是什么,例如:com.mycompany.myapp
?
我尝试在 AndroidManifest.xml
中更改它,但它产生了其他错误,所以我假设它不是这样。
任何想法?
npx react-native init MycompanyMyapp
,2- 仅更改 android/app/build.gradle
中的 applicationId "com.mycompany.myapp"
。 “但是,应用程序 ID 和包名称是相互独立的” – developer.android.com/studio/build/application-id
我已将项目的子文件夹从:“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;
在 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_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
git checkout -b newBranchName
要将软件包名称从 com.myapp
更改为:com.mycompany.myapp
(例如),
对于 react 应用程序的 iOS 应用程序,使用 xcode - 一般。对于 android 应用,在模块级别打开 build.gradle。 android/app 文件夹中的那个。你会找到
// ...
defaultConfig {
applicationId com.myapp
// ...
}
// ...
将 com.myapp
更改为您需要的任何内容。
希望这可以帮助。
./gradlew clean
,然后执行 ./gradlew app:assembleRelease
。
applicationId
和本地 package
名称是相互独立的”、“applicationId
在设备上和 Google Play 商店中唯一标识您的应用” – developer.android.com/studio/build/application-id
No matching client found for package name 'xxxxx'
你可以简单地使用 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
但请注意,此库会删除您的 MainActivity.java
和 MainApplication.java
。在更改您的包名称之前,请从这两个文件中备份,并在更改包名称后将其放回原处。这个解决方案对我有用
更多信息:react-native-rename
转到安卓工作室
右键单击您的包(很可能是 com)-> Refractor -> Rename -> 在对话框中输入新包名称 -> Do Refractor
它会在任何地方重命名你的包名。
最简单的一个:
npx react-native-rename YourNewAppName -b com.YourCompanyName.YourNewAppName
如果您使用的是 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/
在 VS Code 中,按 Ctrl + Shift + F
并在“查找”中输入您的旧包名称并在“替换”中输入您的新包。然后按“替换所有匹配项”。
绝对不是务实的方式。但是,它对我来说已经成功了。
android/app/src/main/java
和 android/app/src/debug/java
下的文件夹。文件夹结构如com/acme/awesomeapp
,反映包名结构。
反应 0.64 | 2021年无博览会
让原始应用名称为: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
在撰写此答案之日,react-native-rename 非常适合重命名我的项目的应用程序和捆绑标识符。
更新应用程序名称:npx react-native-rename "New App Label" 更新包标识符:npx react-native-rename -b "appname.example.com"
我有一个基于@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 的注释。它在评论中有“包裹”这个词。由于脚本的工作方式,它会在其中包含单词“package”的任何行并替换它。正因为如此,这个脚本可能不会在未来得到证明,因为在其他地方可能会使用相同的词。
第二个免责声明:前 3 个 sed 命令从名为 javaFiles 的目录编辑 java 文件。我自己创建了这个目录,因为我想要从那里复制一组 java 文件(因为我将来可能会向它添加新包)。你可能想做同样的事情。因此,从 java 文件夹中复制所有文件(通过其子文件夹查找实际的 java 文件)并将它们放在一个名为 javaFiles 的新文件夹中。
第三免责声明:您需要编辑 packageName 变量以符合脚本顶部和底部的路径(com.MyWebsite.MyAppName 到 com/MyWebsite/MyAppName)
使用npx react-native-rename <newName>
使用自定义 Bundle Identifier(仅限 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
我使用了 react-native-rename 包。
在终端运行命令进行安装:
npm install react-native-rename -g
在 React Native 项目的根目录中,运行以下命令:
react-native-rename "NewNameOfApp" -b com.companyname.newnameofapp
如果您使用 VSCode
和 Windows
。
1.按 Control + Shift + F
。
2.通过您的 new Package Name
找到您的 Package Name
和 Replace All
。
键入“cd android”键入“./gradlew clean”
要更改包名称,您必须编辑项目中的四个文件:
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
前 2 个文件的包名称如下所示。
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 清理您的项目。
转到Android Studio,打开应用程序,右键单击java并选择New,然后选择Package。
提供您想要的名称(例如 com.something)。
将文件从另一个包(您要重命名)移动到新包。删除旧包。
在编辑器中转到您的项目并使用快捷方式搜索所有文件(在 mac 上是 shift cmd F)。输入旧包的名称。更改对新包名称的所有引用。
转到 Android Studio,构建,清理项目,重建项目。
完毕!
快乐编码:)
我通过在以下位置手动更新包名称来解决此问题
1) app.json | ./
2) index.js | ./
3) package.json | ./
4) settings.gradle | ./android/
5) BUCK | ./android/app/
6) build.gradle | ./android/app/
7) AndroidManifest.xml | ./android/app/src/main/
8) MainActivity.java | ./android/app/src/main/java/**
9) MainApplication.java | ./android/app/src/main/java/**
10)strings.xml | ./android/app/src/main/res/values
11)ReactNativeFlipper.java| ./android/app/src/debug/java/com/<package-name>/
运行后:
react-native-rename "MyApp" -b com.mycompany.myapp
确保还转到 android/app/...
下的 Build.gradle
并重命名应用程序 ID,如下所示:
defaultConfig {
applicationId:com.appname.xxx
........
}
在更改您的反应本机包名称之前!请备份 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 中重命名包名。
谢谢你。
npm install -g react-native-rename
。可以运行 npx react-native-rename "new_project_name" -b com.mycompany.newprojectname
。此外,您必须手动更正 google-services.json
等文件。
我将为您提供逐步的过程。
首先,我们需要了解为什么我们需要重命名一个包?主要用于唯一标识 App 对吗?所以 React Native 是一个跨平台的开发应用程序,可以在 iOS 和 Android 上运行。所以我建议在两个平台上都需要相同的标识符。如果 Android 包名称是您的应用程序的唯一标识符,而对于 iOS,它的包 ID。
脚步:
首先关闭所有编辑器/工作室,例如:xcode android studio vscode,然后通过运行命令在终端中安装包“react-native-rename”(如果您觉得不安全,请将您的项目文件夹副本保存在另一个文件夹中进行备份) :
npm install react-native-rename -g
成功安装包后,在终端中打开您的项目文件夹并点击以下命令,其中“双引号内的您的应用名称”是应用名称,<您的不带双引号/单引号的包名称> 替换为包/捆绑名称/id:
react-native-rename "<你的应用名称在双引号内>" -b <你的包名没有双引号/单引号>
示例:react-native-rename "Aptitude Test App" -b com.vaibhavmojidra.aptitudetestapp
注意 确保包/捆绑包名称/ID 全部为小写
这还没有完成,现在每个文件都将更改它具有包/包名称的位置,除了 ios 项目中的一个,我们需要手动打开 xcode>打开项目或文件>从项目文件夹/ios/项目名称中选择文件.xcodeproj 并单击打开单击项目导航器中的第一个文件 projectname.xcodeproj,然后在 Bundle identifier 字段中输入包名称/Bundle ID,如下所示:
https://i.stack.imgur.com/JGadE.gif
之后在终端中运行
光盘
然后运行
吊舱安装
然后运行
光盘..
现在您完成了对 ios 的所有更改,最后一步是打开 Android Studio>打开现有项目>选择 projectfolder/android 文件夹>单击打开让它加载并完成所有过程,然后在构建菜单中单击“清理项目”和在文件菜单 > 关闭项目关闭所有编辑器,现在您可以尝试在 ios 和 android 上运行项目的命令,它将在启动服务器时使用重命名的打包运行添加额外的标志 --reset-cache:
npm start --reset-cache
享受它现在可以工作了
您可以使用 react-native-rename 包,它将在包名下进行所有必要的更改
应用程序/mainapplication.java
AndroidManifest.xml
但请确保手动更改 java/com 文件夹下所有文件的包名。因为当我创建启动屏幕活动时,旧的包名称没有更新。
https://www.npmjs.com/package/react-native-rename
只需使用我的 IDE 的搜索和替换工具就可以了。
非常简单的方法:
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
要更改软件包,我已经搜索并尝试了很多方法,但有些方法非常困难,有些方法已经过时。在搜索时,我发现一个网站讨论了一个非常简单的方法,经过测试,我个人也使用过这个方法。链接:https://www.geoclassifieds.in/2021/02/change-package-name-react-native.html
在到处重命名包名称后,来自 android studio。 File -> Invalidate caches/Restart 可能会修复此类错误
这对我有用
我在尝试更改包名称时发现的一种最简单的方法是使用“搜索”选项并替换 VS Code 中的所有内容。
在搜索中使用 (com.yourprojectname) 并将其替换为 (com.newProjectName)
“react-native-rename” npm 包做同样的事情,所以如果你不想安装任何包,你可以尝试上面的那个。
但是,如果您使用的是 firebase,则步骤会有所不同
此信息可能对您有所帮助,因此请正确聆听...
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
转到文件 android/app/src/main/AndroidManifest.xml -
更新 :
attr android:Element 应用程序的标签为:
旧值 - android:label="@string/app_name" 新值 - android:label="(你要放置的字符串)"
和
attr android:Element 活动的标签为:
旧值 - android:label="@string/app_name" 新值 - android:label="(你要放置的字符串)"
为我工作,希望它会有所帮助。
android/app/src/main/java/com/old_app_name/
重命名为...com/new_app_name/
,它似乎可以工作。MainApplication#initializeFlipper
中更改另一个 LoC:Class<?> aClass = Class.forName("MY.APP.NEW_ID");
google-services.json
的两个package_name
实例中替换旧包值