在React Native中更改Android的软件包名称


179

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

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

我尝试更改它,AndroidManifest.xml但它创建了其他错误,因此我假设这不是方法。

任何想法?


左键单击程序包名称,然后转到Refactor-> Rename选项以重命名程序包名称。
2016年

现在最适合我的是找到并替换
mllm

3
您也可以尝试使用此saumya.github.io/ray/articles/72
Andy


对我来说搜索和替换工作有效
shesh nath

Answers:


411

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

23
我还需要编辑BUCK文件,用新的替换旧的包装值。顺便说一句,应该将2个文件MainAcitivity.java和MainApplication.java重定位到新的物理路径。
Golden Thumb

4
我还将该目录重命名android/app/src/main/java/com/old_app_name/...com/new_app_name/,它似乎可以正常工作。
尼古拉斯

我遇到错误“无法最终完成会话:INSTALL_FAILED_UPDATE_INCOMPATIBLE”,直到我手动强制清洁了android设备模拟器:adb卸载my.package.name ...这样的指示就可以了,但是android模拟器可以“保留”到旧信息中这使它看起来像是行不通的坏方法。(而且仅卸载应用程序并不能解决问题!)
Bill Patterson

我正在阅读有关内容,并尝试了该库: npmjs.com/package/react-native-rename 似乎可以很好地工作,它不仅可以重命名应用程序,还可以更改包标识符
fray88

1
android /文件夹@Anuj中进行操作
切尔诺夫

76

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

npm install react-native-rename -g

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

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

多数民众赞成在那简单而棘手,我只需要手动更新MainApplication.java。
Gopal Devra's

59
谢谢,打破了项目
飞跃鹰

@AkashRajput您是否已解决问题?如果您找到任何解决方案,请告诉我们
Saleem Khan

@SaleemKhan必须再次创建该项目。这次使用react-native init。只需复制文件。
飞鹰队

5
它破坏了我的项目,不得不创建一个新项目:(
MujtabaFR

24

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

  1. 对于react应用的iOS应用,请在常规下使用xcode。
  2. 对于Android应用,请在模块级别打开build.gradle。android/app文件夹中的一个。你会找到
// ...
defaultConfig {
     applicationId com.myapp
     // ...
}
// ...

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

希望这可以帮助。


4
这是更改软件包名称的最简单方法。不更改您本地的软件包名称,这将更改您的下一个构建软件包。谢谢!完成此操作后,请执行./gradlew clean然后./gradlew app:assembleRelease
迈克尔·哈雷

2
“但是,applicationId和本地package名称彼此独立”,“ applicationId在设备上和Google Play商店中唯一标识您的应用” – developer.android.com/studio/build/application-id
8

对我不起作用No matching client found for package name 'xxxxx'
MichaelMao

10

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

更多信息: react-native-rename


1
如果您不更改应用程序名称“请尝试使用其他名称”,则无效。

1
实际上,我为项目尝试使用其他名称。但是当我更改项目名称时,react-native-rename将从项目中删除了这两个文件。
Moein Hosseini

8

转到Android Studio

右键单击您的软件包(最有可能是com)-> Refractor->重命名->在对话框中输入新的软件包名称->做Refractor

它将在任何地方重命名您的包名称。


我猜这不会影响整个项目结构。
Kishan Oza

如何使用React-Native JS项目?
Arifur Ra​​hman

8

初始化脚本会根据您为其提供的名称(例如,com.acmeapp针对AcmeApp)生成Android的唯一标识符。

您可以通过在中查找applicationId键来查看生成的名称android/app/build.gradle

如果您需要更改该唯一标识符,请按照以下说明立即进行操作:

/android文件夹,替换所有出现com.acmeappcom.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

如果您使用的是Android Studio,

更改com.myappcom.mycompany.myapp

  1. 在下面创建一个新的包层次结构com.mycompany.myapp android/app/src/main/java

  2. 使用Android Studio GUI 将所有类从复制com.myappcom.mycompany.myapp

  3. Android Studio将负责为所有复制的类放置合适的包名称。如果您有一些自定义模块并且不想在所有.java文件中手动替换,则此功能很有用。

  4. 更新android/app/src/main/AndroidManifest.xmlandroid/app/build.gradle(替换com.myappcom.mycompany.myapp

  5. 同步项目(逐步构建)


5

我有一个基于@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”的任何行并将其替换。因此,该脚本可能不会在将来进行验证,因为在其他地方可能使用了相同的单词。

第二个免责声明:前三个sed命令可从名为javaFiles的目录中编辑Java文件。我自己创建了这个目录,因为我想从那里复制一组Java文件(因为将来可能会向其中添加新的软件包)。您可能会想做同样的事情。因此,从java文件夹复制所有文件(通过其子文件夹查找实际的Java文件),然后将它们放在一个名为javaFiles的新文件夹中。

第三个免责声明:您需要编辑packageName变量,使其与脚本顶部和底部的路径一致(com.MyWebsite.MyAppName到com / MyWebsite / MyAppName)


2

在VS Code中,按Ctrl + Shift + F并在“查找”中输入您的旧软件包名称,然后在“替换”中输入您的新软件包。然后按“全部替换”。

绝对不是务实的方式。但是,它为我完成了窍门。


2

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


1

按照简单的步骤来重命名您的名称app namePackage name以防万一您没有在android文件夹中进行任何自定义更改(例如,您刚刚初始化项目的情况)

  1. 简单地改变name了在package.json文件中,你需要和保存。
  2. 删除名为android的文件夹
  3. 运行命令 react-native upgrade

注意:正如ivoteje50的注释中所述,如果您已经按照官方说明生成了密钥库,请不要删除android文件夹,因为它将删除密钥库,并且您无法再次签署新的应用程序。


1
如果您已经按照官方说明生成了密钥库,请不要删除android文件夹,因为它将删除密钥库,并且您无法再次签署新的应用程序。
Ivotje50

2
别做!您可能会在Android代码中拥有大量无法重新创建的自定义代码
pie6k

1

转到Android Studio,打开应用程序,右键单击Java,然后选择“新建”,然后选择“打包”。

输入您想要的名称(例如com.something)。

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

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

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

做完了!

快乐的编码:)


1

我用过react-native-rename包。

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

npm install react-native-rename -g

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

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

0

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

app / mainapplication.java

AndroidManifest.xml

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

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


0

只需使用我的IDE的搜索和替换工具即可达到目的。


0

运行此命令后:

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

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

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

-3

转到文件的Android /应用/ src目录/主/ AndroidManifest.xml中 -

更新:

attr android: Element 应用程序的标签为:

旧值-android:label =“ @ string / app_name”

新值-android:label =“(您要放入的字符串)”

attr android: Element 活动的标签为:

旧值-android:label =“ @ string / app_name”

新值-android:label =“(您要放入的字符串)”

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


2
老实说,我认为这个答案不应该被原谅。但是,这个答案确实 没有解决什么问的问题-如何更改包名。但是,它回答了“如何更改启动器中显示的应用程序标题”的问题。这是一个相关的答案吗?并不是的。它包含有用的信息吗?是。因此,我建议你找一个问题,询问关于启动标题和发布您的解决方案出现,而不是在这里。
Dev-iL
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.