当前位置:   article > 正文

android修改packagename_android-packagename

android-packagename

方案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" >
  • 1
  • 2
  • 3

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

android {

	defaultConfig {

		applicationId "com.example.myapplicationtest"

	...

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在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(两者区别)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/174152?site
推荐阅读
相关标签
  

闽ICP备14008679号