我使用React - Native init MyApp初始化一个新的React Native应用程序。 这创建了一个带有com.myapp包的Android项目。
更改这个包名称的最佳方法是什么,例如:com.mycompany.myapp?
我尝试在AndroidManifest.xml中更改它,但它创建了其他错误,所以我假设这不是方法。
任何想法?
我使用React - Native init MyApp初始化一个新的React Native应用程序。 这创建了一个带有com.myapp包的Android项目。
更改这个包名称的最佳方法是什么,例如:com.mycompany.myapp?
我尝试在AndroidManifest.xml中更改它,但它创建了其他错误,所以我假设这不是方法。
任何想法?
当前回答
我会给你提供循序渐进的程序。
首先,我们需要了解为什么我们需要重命名一个包? 主要用于唯一识别应用程序,对吗?React Native是一个跨平台的应用程序,可以在iOS和Android上运行。所以我的建议是在两个平台中需要相同的标识符。Android包名是你应用的唯一标识符,iOS是它的捆绑包ID。
步骤:
首先关闭所有编辑器/studio,例如:xcode android studio vscode,然后在终端上运行命令安装“react-native-rename”包(如果您觉得不安全,请将您的项目文件夹副本保存在另一个文件夹中进行备份):
NPM安装react-native-rename -g
成功安装包后,在终端中打开你的项目文件夹,点击以下命令,其中“your app name Within double quotes”是app名称,< your package name without双/单引号>被替换为package/bundle name/id:
react-native-rename "<你的应用名称包含双引号>" -b <你的包名称不包含双引号或单引号>
例如:react-native-rename "Aptitude Test App" -b com.vaibhavmojidra.aptitudetestapp
注意:确保包/包名/id都是小写的
这还没有完成,现在每个文件都会改变它有包/包的名字,除了一个在ios项目,我们手动需要做的,打开xcode>打开一个项目或文件>选择文件从projectfolder/ios/projectname。Xcodeproj,然后单击打开 单击您的项目名。xcodeproj是项目导航器中的第一个文件,然后在Bundle identifier字段中输入包名/Bundle ID,如下所示:
之后在终端上运行
cd ios
然后运行
正在安装
然后运行
cd . .
现在你完成了ios的所有更改,最后一步是打开Android Studio>打开现有项目>选择projectfolder/ Android文件夹>单击打开 让它加载并完成所有过程,然后在构建菜单中单击“清理项目”,然后在文件菜单中>关闭项目 关闭所有编辑器,现在你可以尝试在ios和android上运行项目的命令,它将以重命名的打包方式运行,同时启动服务器,添加额外的标志——reset-cache:
NPM start -reset-cache
现在就享受吧
其他回答
我会给你提供循序渐进的程序。
首先,我们需要了解为什么我们需要重命名一个包? 主要用于唯一识别应用程序,对吗?React Native是一个跨平台的应用程序,可以在iOS和Android上运行。所以我的建议是在两个平台中需要相同的标识符。Android包名是你应用的唯一标识符,iOS是它的捆绑包ID。
步骤:
首先关闭所有编辑器/studio,例如:xcode android studio vscode,然后在终端上运行命令安装“react-native-rename”包(如果您觉得不安全,请将您的项目文件夹副本保存在另一个文件夹中进行备份):
NPM安装react-native-rename -g
成功安装包后,在终端中打开你的项目文件夹,点击以下命令,其中“your app name Within double quotes”是app名称,< your package name without双/单引号>被替换为package/bundle name/id:
react-native-rename "<你的应用名称包含双引号>" -b <你的包名称不包含双引号或单引号>
例如:react-native-rename "Aptitude Test App" -b com.vaibhavmojidra.aptitudetestapp
注意:确保包/包名/id都是小写的
这还没有完成,现在每个文件都会改变它有包/包的名字,除了一个在ios项目,我们手动需要做的,打开xcode>打开一个项目或文件>选择文件从projectfolder/ios/projectname。Xcodeproj,然后单击打开 单击您的项目名。xcodeproj是项目导航器中的第一个文件,然后在Bundle identifier字段中输入包名/Bundle ID,如下所示:
之后在终端上运行
cd ios
然后运行
正在安装
然后运行
cd . .
现在你完成了ios的所有更改,最后一步是打开Android Studio>打开现有项目>选择projectfolder/ Android文件夹>单击打开 让它加载并完成所有过程,然后在构建菜单中单击“清理项目”,然后在文件菜单中>关闭项目 关闭所有编辑器,现在你可以尝试在ios和android上运行项目的命令,它将以重命名的打包方式运行,同时启动服务器,添加额外的标志——reset-cache:
NPM start -reset-cache
现在就享受吧
Ivan Chernykh的答案对于react-native 0.67及以下是正确的 对于react-native 0.68及以上版本的新架构,只要你遵循了Ivan Chernykh提到的步骤
对于android,你必须进入app => src => main => jni文件夹
在MainApplicationTurboModuleManagerDelegate.h
以下更改
static constexpr auto kJavaDescriptor =
"Lcom/yournewpackagename/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;";
在MainComponentsRegistry.h
constexpr static auto kJavaDescriptor =
"Lcom/yournewpackagename/newarchitecture/components/MainComponentsRegistry;";
反应Native@0.70.x 尝试从com重命名包名。X到com.y.z
我通过以下方法度过了这个痛苦的过程:
将app.json中的displayName更改为z。
{
"name": "<THIS_SHOULD_STAY_SAME>",
"displayName": "<Z>"
}
修改strings.xml中字符串app_name的内容
<resources>
...
<string name="app_name"><Z></string>
...
</resources>
在react-native项目中搜索com。X和替换所有com。X与com.y.z
重要:以防您正在使用外部服务,以及以防如果 你生成了一个文件,把它放在/android下 确保您正在使用的服务仍然正常工作。我建议 您必须使用新的包名生成一个新的配置文件 Com.y.z,然后把它放在完成下面描述的步骤之后。
更新文件夹结构如下:
old: .../android/app/src/main/java/com/x
new: .../android/app/src/main/java/com/y/z
将所有文件移动到…/android/app/src/main/java/com/x到/android/app/src/main/java/com/y/z。 清理。
$ ./gradlew clean
构建。
$ react-native run-android
我使用react-native-rename* npm包。通过
npm install react-native-rename -g
然后,从你的React Native项目的根目录,执行以下命令:
react-native-rename "MyApp" -b com.mycompany.myapp
2021年没有世博会
设原App名称为:com.myApp 让新的应用程序名称:com.newname.myApp
android\app\src\main\AndroidManifest.xml
重命名xml属性:' package="com.newname.myApp"
android主要\ app \ src \ \ java \ com \ [yourAppName] \ MainActivity.java
重命名包com.myApp的第一行;来打包com.newname.myApp;
android主要\ app \ src \ \ java \ com \ [yourAppName] \ MainApplication.java
重命名第一行到包com.newname.myApp;
在类中私有静态void initializeFlipper 复述这句话:
Class<?> aClass = Class.forName(“com.myApp.ReactNativeFlipper”);
To
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