一 Android Studio 修改过程
修改项目包名,实现不覆盖安装(如果只是想不覆盖安装,更改build.gradle里面的包名就OK了,那这篇博文到这里就可以结束了,如果希望项目层次的包名也更改的话,请往下看)
1.首先新建一个项目,默认结构如下,红色的就是包名
2,更改显示项目结构方式,首先1,点击齿轮的图案。然后把第二步中的勾去掉
3更改项目结构显示后如下:
4,选中要修改的报名,快捷键shift + F6修改包名,选择Rename package
5,填好包名后点击Refactor
6 然后选择图中的Do Refactor
7。如下我们就修改好了包名
8。然后手动修改app build的applicationId.改成和我们之前修改的包名
9激动人心时刻,最后一步。包名都一样后,点击Sync Now。等一会,就这样大功告成
温馨提示:相信这样你已经包名修改成功了,运行一下
如果不行就clear项目和Rebuild一下项目。
另外说明一点,在 Studio 里面我们的 getPackageName 对应的是 applicationId , 而manifest 的那个package,在这里的作用其实是为了引用内部资源文件,以及保证 Activity 等源文件的路径正确而已,所以,在 Studio 中修改发布程序包名,则只需要在 build 文件中修改 applicationId 就可以了
参考:
https://www.cnblogs.com/jpfss/p/9875582.html
二 eclipse的modules的相关概念
在还没有从eclipse转到Android Studio开发的时候,我们都知道一个项目的包名定义在AndroidManifest文件中的package,如下图:
我们来看下定义:
包名(package):指定本应用内java主程序包的包名。当没有指定apk的文件名时,编译后产生程序包将以此命名。本包名应当在Android系统运行时唯一。
在两个不同的Application之间,用Application A的Activity A调用Application B的Activity B的时候,在AndroidManifest.xml中的package名称不能一样,否则安装完一个apk之后,再去安装另一个Application的apk的时候,会提示不存在,会有冲突,(install的时候,以内部package名字等信息为准,不是apk的名字为准),即使apk名字不同,AndroidManifest.xml中的package名相同会提示冲突。
所以,不同的Application,AndroidManifest.xml中的package名一定要不同,当一个Application中有多个package的时候,以这个Application的入口(MAIN+LAUNCHER的intent-filter)所在的包名为AndroidManifest.xml中的package名。如果一个Application没有入口程序,如packages/apps/Bluetooth,那以哪个包名作为AndroidManifest.xml中的package名都可以。
同时R文件对应的引用地址也是包名地址,所以每次更改工程包名我都十分痛苦,要替换所有文件中R文件的引用路径,如下图:
但是Android Studio却拯救了我,当我把工程从eclipse转到Android Studio之后,他出现了一个新的定义:ApplicationId,他允许我们在不改变AndroidManifest文件中的package情况下,更改applicationID,不同的applicationID相当于不同的包名程序,具体官方文档翻译:http://blog.csdn.net/maosidiaoxian/article/details/41719357
可以清楚地看到,我们的package包名在工程中的作用只剩下索引R文件,而ApplicationId成为了真正的包名,并且要注意的是,在集成jpush第三方sdk的时候,需要我们提供包名等信息,这里要引用applicationId
因此,总的来说就一句话:在Android Studio中build.gradle构建工程后,manifest文件中的packagename只用作R文件的引用包名,而applicationId变成了这个程序真正的包名。
原文链接:https://blog.csdn.net/qq1072313099/article/details/52872800
三 react-native修改包名
3.1 两个java文件
android/app/src/main/java/com/PROJECT_NAME/MainActivity.java
android/app/src/main/java/com/PROJECT_NAME/MainApplication.java
修改第一行
package com.oc.objective;
3.2 安卓的描述文件
修改第二行,把package的至改为com.oc.objective
android/app/src/main/AndroidManifest.xml
package="com.oc.objective"
3.3 两个打包脚本
3.3.1 android/app/BUCK
修改两个package的值package = 'com.oc.objective'
android_build_config(
...
package = "com.oc.objective",
)
android_resource(
...
package = "com.oc.objective",
...
)
3.3.2 android/app/build.gradle
修改applicationId
defaultConfig {
applicationId "com.oc.objective"
...
}
修改完成后,命令行进入android目录,执行./gradlew clean清除缓存即可(windows上是 gradlew.bat)
3.3.3 java文件放入包名匹配的目录
至此差不多修改完成,能够打包出正确包名的apk。不过在开发过程中,如果需要自动link原生模块,会导致命令出错无法link成功。所以还是建议按照java的规范把java文件放入包名匹配的目录中。
把两个java文件移入新创建的目录android/app/src/main/java/com/oc/objective/里面,就能够react-native link了。
android/app/src/main/java/com/PROJECT_NAME/MainActivity.java
android/app/src/main/java/com/PROJECT_NAME/MainApplication.java
其他
原文链接 https://www.cnblogs.com/qiqi715/p/9479004.html
————————————————
转载于:https://blog.csdn.net/qq_34823218/article/details/118379427