ChatGPT解决这个技术问题 Extra ChatGPT

在 React Native 中更改 Android 的包名称

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

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

我尝试在 AndroidManifest.xml 中更改它,但它产生了其他错误,所以我假设它不是这样。

任何想法?

左键单击包名,然后选择 Refactor--> Rename 选项来重命名包名。
现在最适合我的就是查找和替换
您也可以试试这个saumya.github.io/ray/articles/72
对我来说搜索和替换工作
务实的方法:1- npx react-native init MycompanyMyapp,2- 更改 android/app/build.gradle 中的 applicationId "com.mycompany.myapp"。 “但是,应用程序 ID 和包名称是相互独立的” – developer.android.com/studio/build/application-id

K
Khurshid Ansari

我已将项目的子文件夹从:“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

我还需要编辑文件 BUCK 以将旧包值替换为新包值。顺便说一句,两个文件 MainAcitivity.java 和 MainApplication.java 应该重新定位到新的物理路径。
我还将目录 android/app/src/main/java/com/old_app_name/ 重命名为 ...com/new_app_name/,它似乎可以工作。
我有错误“无法完成会话:INSTALL_FAILED_UPDATE_INCOMPATIBLE”,直到我手动强制清理 android 设备模拟器:adb uninstall my.package.name ... 所以方向很好,但 android 模拟器可以“保留”旧信息不好的方式使它看起来方向不起作用。 (并且简单地卸载应用程序并不能解决这个问题!)
对于 RN 0.60+,必须在 MainApplication#initializeFlipper 中更改另一个 LoC:Class<?> aClass = Class.forName("MY.APP.NEW_ID");
如果您使用的是 firebase,那么您还需要在 google-services.json 的两个 package_name 实例中替换旧包值
B
B--rian

我使用 react-native-rename* npm 包。通过安装它

npm install react-native-rename -g

然后,从你的 React Native 项目的根目录,执行以下命令:

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

谢谢,破坏了项目
它破坏了我的项目,不得不创建一个新项目:(
@AchaBill 这个答案是从 2017 年开始,事情已经发生了变化……小心外面。
在“react-native”中像魅力一样工作:“0.63.4”,感谢您节省我的时间。 :)
这对我有用。确保创建一个 git 分支以防万一:git checkout -b newBranchName
M
Mufaddal Hamid

要将软件包名称从 com.myapp 更改为:com.mycompany.myapp(例如),

对于 react 应用程序的 iOS 应用程序,使用 xcode - 一般。对于 android 应用,在模块级别打开 build.gradle。 android/app 文件夹中的那个。你会找到

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

com.myapp 更改为您需要的任何内容。

希望这可以帮助。


这是更改软件包名称的最简单方法。 Tho,不更改您的本地包名称,这将更改您的下一个构建包。谢谢!完成此操作后,执行 ./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'
为了更改android的包名,我遇到了这个错误并修复了stackoverflow.com/questions/35131769/…
R
Robert

你可以简单地使用 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.javaMainApplication.java。在更改您的包名称之前,请从这两个文件中备份,并在更改包名称后将其放回原处。这个解决方案对我有用

更多信息:react-native-rename


如果您不更改应用名称“请尝试其他名称”,则无效。
实际上,我为我的项目尝试了不同的名称。但是当我更改我的项目名称时,react-native-rename 会从我的项目中删除这两个文件。
A
Aishwarya

转到安卓工作室

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

它会在任何地方重命名你的包名。


我猜它不会影响整个项目结构。
如何使用 React-Native JS 项目?
P
Park Keeper

最简单的一个:

npx react-native-rename YourNewAppName -b com.YourCompanyName.YourNewAppName


警告 - 这个包几年前似乎没有维护。
V
Varun Kumar

如果您使用的是 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)


A
Atul Yadav

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/


K
Kiran JD

在 VS Code 中,按 Ctrl + Shift + F 并在“查找”中输入您的旧包名称并在“替换”中输入您的新包。然后按“替换所有匹配项”。

绝对不是务实的方式。但是,它对我来说已经成功了。


这在 Mac 上运行良好。就我而言,我在 iOS 和 Android 上有一个 RN 项目。我只需要确保我没有对 iOS proj 进行任何更改。
可能还想搜索/替换 com/you/package 映射以及 com.your.package。
这还不够(好吧,也许是,如果您使用的是 Expo)。您还必须重命名 android/app/src/main/javaandroid/app/src/debug/java 下的文件夹。文件夹结构如com/acme/awesomeapp,反映包名结构。
F
Federico Baù

反应 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


如果您也有,请检查 google-services.json。
S
Sudeep Bashistha

在撰写此答案之日,react-native-rename 非常适合重命名我的项目的应用程序和捆绑标识符。

更新应用程序名称:npx react-native-rename "New App Label" 更新包标识符:npx react-native-rename -b "appname.example.com"


K
Kjell

我有一个基于@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)


F
Farhad Kabir

使用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


W
Waqar UlHaq

我使用了 react-native-rename 包。

在终端运行命令进行安装:

npm install react-native-rename -g

在 React Native 项目的根目录中,运行以下命令:

react-native-rename "NewNameOfApp" -b com.companyname.newnameofapp

P
Pouria Hemati

如果您使用 VSCodeWindows

1.按 Control + Shift + F

2.通过您的 new Package Name 找到您的 Package NameReplace All

键入“cd android”键入“./gradlew clean”


M
Muhammad Haidar

要更改包名称,您必须编辑项目中的四个文件:

 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 清理您的项目。


F
Fotios Tsakiris

转到Android Studio,打开应用程序,右键单击java并选择New,然后选择Package。

提供您想要的名称(例如 com.something)。

将文件从另一个包(您要重命名)移动到新包。删除旧包。

在编辑器中转到您的项目并使用快捷方式搜索所有文件(在 mac 上是 shift cmd F)。输入旧包的名称。更改对新包名称的所有引用。

转到 Android Studio,构建,清理项目,重建项目。

完毕!

快乐编码:)


D
Damitha Dayananda

我通过在以下位置手动更新包名称来解决此问题

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>/

P
Paul Roub

运行后:

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

确保还转到 android/app/... 下的 Build.gradle 并重命名应用程序 ID,如下所示:

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

J
JRV

在更改您的反应本机包名称之前!请备份 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 等文件。
V
Vaibhav Mojidra

我将为您提供逐步的过程。

首先,我们需要了解为什么我们需要重命名一个包?主要用于唯一标识 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

享受它现在可以工作了


这只是这个问题的最佳答案。
G
Geetha Tulasi Balam

您可以使用 react-native-rename 包,它将在包名下进行所有必要的更改

应用程序/mainapplication.java

AndroidManifest.xml

但请确保手动更改 java/com 文件夹下所有文件的包名。因为当我创建启动屏幕活动时,旧的包名称没有更新。

https://www.npmjs.com/package/react-native-rename


T
Tenesse

只需使用我的 IDE 的搜索和替换工具就可以了。


A
Ansyori

非常简单的方法:

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

P
Pankaj

要更改软件包,我已经搜索并尝试了很多方法,但有些方法非常困难,有些方法已经过时。在搜索时,我发现一个网站讨论了一个非常简单的方法,经过测试,我个人也使用过这个方法。链接:https://www.geoclassifieds.in/2021/02/change-package-name-react-native.html


链接断开。 Stackoverflow 规则说在这里描述比发布链接更好。
N
Nikhil bhatia

在到处重命名包名称后,来自 android studio。 File -> Invalidate caches/Restart 可能会修复此类错误

这对我有用


S
S.Kishore

我在尝试更改包名称时发现的一种最简单的方法是使用“搜索”选项并替换 VS Code 中的所有内容。

在搜索中使用 (com.yourprojectname) 并将其替换为 (com.newProjectName)

“react-native-rename” npm 包做同样的事情,所以如果你不想安装任何包,你可以尝试上面的那个。

但是,如果您使用的是 firebase,则步骤会有所不同


M
Muhammad Rafeh Atique

此信息可能对您有所帮助,因此请正确聆听...

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

A
Anshul Singh

转到文件 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="(你要放置的字符串)"

为我工作,希望它会有所帮助。


老实说,我认为这个答案不应该像以前那样被否决。但是,此答案并未解决问题中的问题-如何更改包名称。然而,它回答了“如何更改出现在启动器中的应用程序的标题”的问题。这是一个相关的答案吗?并不真地。它是否包含有用的信息?是的。因此,我建议您找到一个询问启动器标题的问题,然后在此处而不是此处发布您的解决方案。