android修改packagename

本文介绍了两种修改Android应用包名的方法:一是只修改AndroidManifest.xml和build.gradle中的ID,二是同时涉及源代码。重点讲解了为何不推荐修改源代码包名,并详细说明了如何修改AndroidManifest.xml、R引用和BuildConfig引用。

方案1:修改AndroidManifest.xml中的package属性以及build.gradle中的applicationId属性,不修改源代码目录的包名

当代码很多时,修改源代码目录的包名是不会refactor成功的,因为会提示java代码中大量的直接引用原包名.类的引用路径(项目大时,refactor时会提示代码中有几千个,上万个直接引用原包名的地方 References in code to directory XXX 8886 usages `References in generated code to directory XXX 552 usages),各种直接使用原包名的引用,还有各种文件中可能也是使用的原包名的引用,要确保都修改成功了,当代码很多时,不推荐修改源代码目录的包名。只需修改AndroidManifest.xml中的package属性以及build.gradle中的applicationId属性,以及AndroidManifest.xml 清单文件中的所有组件改为使用全路径引用,修改R引用,修改BuildConfig引用。

① 修改 applicationId : 修改主 Module 下的 build.gradle 中的 applicationId ;

② 修改AndroidManifest.xml中package : 修改 AndroidManifest.xml 清单文件中的 packge 包名 ;
建议使用shift+F6进行修改,这样AndroidManifest.xml中的组件的包名会自动修改为全路径包名。避免使用缺省包名的形式,包名缺省 , 如果修改根节点的 package 属性 , 就无法找到对应的组件了。

③ AndroidManifest.xml 清单文件修改 : 所有的组件都使用全路径名称 , FileProvider 的 authorities 也要进行相应修改 ;

④ 修改 R 引用 : 修改 Java 代码中的 package.R 引用 ;

很多java类里面用到了R类的资源,但由于修改前的源代码的包名和AndroidManifest.xml中的package的名字一致,因此java文件的import语句块那里可以忽略 import packageNameXXX.R 这个import语句,修改了包名后,这个时候就要在java文件里加入 import packageNameXXX.R 这个import语句。

由于R.java文件是生成在AndroidManifest.xml中的package的目录下的,因此如果源代码的包名和AndroidManifest.xml中的package的名字一致,就可以直接使用R.java,不需要添加 import packageNameXXX.R 语句。

⑤ 修改 BuildConfig 引用 : 修改 Java 代码中的 package.BuildConfig 引用 ;

方案2:修改AndroidManifest.xml中的package属性以及build.gradle中的applicationId属性,同时修改源代码目录的包名

这种方案的不好的地方就是:修改源代码目录的包名时会提示java代码中有大量原包名的引用,可能还有一些配置文件也是使用的原包名的引用,要确保都被修改成功了。

applicationId与AndroidManifest.xml中的package属性的区别

每个Android应用都有一个唯一的应用ID,在Android设备和市场上,这个ID是你应用的唯一标识。若想在市场上更新应用,新应用的ID必须和原来apk的应用ID一致。所以一旦发布了应用,就不能再改变应用ID.

在Eclipse中没有applicationId这个概念,在Eclipse中applicationId即等同于包名。但是到了Android Studio中,这两个概念做个区分。包名的定义在清单文件中:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.example.myapplicationtest" >

应用ID是在moudle层的build.gradle中定义,applicationId值即为应用ID,如下所示:

android {

	defaultConfig {

		applicationId "com.example.myapplicationtest"

	...

在Android Studio中创建一个新项目时,applicationId默认是和项目的包名一致的。所以常常有开发者会将两者混淆,以为它们是一个概念。实际上,应用ID和包名是相互独立的。改变包名不会影响应用ID,反之亦然。

通常Android的应用ID与包名是绑定的,所以在Android API中,一些方法和参数从名称上看似乎它们返回的是包名,事实上它们返回的是应用ID值。例如,Context.getPackageName()方法返回的是应用ID,而不是包名。不信我们来看:
在这里插入图片描述

图中,包名是:com.example.myapplicationtest 应用ID:com.example.myapplicationtest.id

参考:
Android 快速修改包名
Android Studio 更换包名方法

【Android 应用开发】Android 工程修改包名流程 ( 修改 applicationId | 修改 package | 修改 R 资源引用 | 修改 BuildConfig 引用 )

AndroidStudio不能修改类名,有其他references in code 的问题

更改包名与APPLICATIONID(两者区别)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值