我曾经react-native init MyApp
初始化一个新的 React Native 应用程序。这创建了一个带有 package 的 Android 项目com.myapp
。
更改此包名称的最佳方法是什么,例如:com.mycompany.myapp
?
我尝试更改它,AndroidManifest.xml
但它产生了其他错误,所以我假设它不是这样。
任何想法?
我曾经react-native init MyApp
初始化一个新的 React Native 应用程序。这创建了一个带有 package 的 Android 项目com.myapp
。
更改此包名称的最佳方法是什么,例如:com.mycompany.myapp
?
我尝试更改它,AndroidManifest.xml
但它产生了其他错误,所以我假设它不是这样。
任何想法?
我已将项目的子文件夹从:“ 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/app/BUCK中:
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
要将包名称从更改com.myapp
为:(com.mycompany.myapp
例如),
android/app
文件夹里的那个。你会找到// ...
defaultConfig {
applicationId com.myapp
// ...
}
// ...
更改com.myapp
为您需要的任何内容。
希望这可以帮助。
你可以简单地使用 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
and 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
在下创建一个新的包层次结构 com.mycompany.myappandroid/app/src/main/java
将所有类复制com.myapp
到com.mycompany.myapp
使用 Android Studio GUI
Android Studio 将负责为所有复制的类放置合适的包名称。如果您有一些自定义模块并且不想手动替换所有 .java 文件,这很有用。
更新android/app/src/main/AndroidManifest.xml
和android/app/build.gradle
(替换com.myapp
为com.mycompany.myapp
同步项目(gradle build)
init 脚本会根据您给它的名称(例如com.acmeapp
for AcmeApp
)为 Android 生成一个唯一标识符。
您可以通过在 中查找 applicationId 键来查看生成的名称android/app/build.gradle
。
如果您需要更改该唯一标识符,请立即按照以下说明进行操作:
在/android
文件夹中,替换所有出现的com.acmeapp
bycom.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
并在“查找”中输入您的旧包名称,然后在“替换”中输入您的新包。然后按“替换所有匹配项”。
绝对不是务实的方式。但是,它对我来说已经成功了。
在撰写此答案之日, react-native-rename非常适合重命名我的项目的应用程序和捆绑标识符。
更新应用名称:
npx react-native-rename "New App Label"
要更新捆绑标识符:npx react-native-rename -b "appname.example.com"
让原始应用名称为: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;
To重命名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
我有一个基于@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.找到你的Package Name
和Replace All
你的new Package Name
。
类型"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 清理您的项目。
按照简单的步骤重命名您的app name
,Package name
如果您没有在 android 文件夹中进行任何自定义更改(即您刚刚初始化项目的场景)
name
中的package.json
内容并保存即可。react-native upgrade
注意:正如评论中提到的ivoteje50,如果您已经按照官方说明生成密钥库,请不要删除 android 文件夹,因为它会删除密钥库并且您无法再次签署新应用程序。
转到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
确保也转到并重命名应用程序 ID Build.gradle
,android/app/...
如下所示:
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中重命名包名。
谢谢你。
非常简单的方法:
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
我将为您提供逐步的程序。
首先,我们需要了解为什么我们需要重命名一个包?主要用于唯一标识 App 对吗?所以 React Native 是一个跨平台的开发应用程序,可以在 iOS 和 Android 上运行。所以我建议在两个平台上都需要相同的标识符。如果Android Package Name是您的 App 的唯一标识符,而对于iOS ,它的bundle ID。
脚步:
npm install react-native-rename -g
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,如下所示:
光盘
吊舱安装
光盘..
现在您完成了对 ios 的所有更改,最后一步是打开 Android Studio>打开现有项目>选择 projectfolder/android 文件夹>单击打开
让它加载并完成所有过程,然后在“构建”菜单中单击“清理项目”,然后在“文件菜单”>“关闭项目”中
关闭所有编辑器,现在您可以尝试在 ios 和 android 上运行项目的命令,它将在启动服务器时使用重命名的打包运行添加额外的标志 --reset-cache:
npm start --reset-cache
享受它现在可以工作了
This information can be helpful for you so listen properly...
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
Otherwise you will get this error below
Invariant Violation: "Your new package name" has not been registered
我在尝试更改包名称时发现的一种最简单的方法是使用“搜索”选项并替换 VS Code 中的所有内容。
在搜索中使用 (com.yourprojectname) 并将其替换为 (com.newProjectName)
“react-native-rename” npm 包做同样的事情,所以如果你不想安装任何包,你可以尝试上面的那个。
但是,如果您使用的是 firebase,则步骤会有所不同
您可以使用 react-native-rename 包,它将在包名下进行所有必要的更改
但请确保手动更改 java/com 文件夹下所有文件的包名。因为当我创建启动屏幕活动时,旧包名称没有更新。
要更改软件包,我已经搜索并尝试了很多方法,但有些方法非常困难,有些方法已经过时。在搜索时,我发现一个网站讨论了一个非常简单的方法,经过测试,我个人也使用过这个方法。链接:https ://www.geoclassifieds.in/2021/02/change-package-name-react-native.html
在到处重命名包名称后,来自 android studio。File -> Invalidate caches/Restart 可能会修复此类错误
这对我有用
只需使用我的 IDE 的搜索和替换工具就可以了。
转到文件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="(你要输入的字符串)"
为我工作,希望它会有所帮助。