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

  • 我们在进行开发的时候,用到的一些第三方sdk需要我们的包名,这的包名指得是applicationId而并非package name,当然在eclipse中也就没有区分了,因为它只有package name。

重命名包名的方法如下:

  • 在java 文件夹下新建一个package,名字随便取,如com.dc.zsn.app。
java文件夹所在目录.png
  • 将之前写好的类全部选中,并拖拽到新的包中来,此时项目中的所有用到包名的地方都会随之更改,自己再手动的更改一下AndroidManifest.xml文件中manifest下的package就好了;如果拖拽不成功,就去项目根目录下,全部选中后,ctrl+v拷贝一下,然后手动删除代码中的错误导包,自动生成import+包名(前提是配置了自动导包)。

  • 将之前的包删掉就可以了。

参考链接:https://www.jianshu.com/p/b260b051cb2a
来源:简书

————————————————————————————————————————————————————————————————————————
 
更改applicationID
啊改代码改到最后老是出错,原来是applicationID更改产生的问题!!!

 1.一开始我以为,

applicationID存在于的地方

一个在 build.gradle(app)中,applicationId "xt.car"

一个在BuildConfig.java中,   public static final String APPLICATION_ID = "xt.car";

2.后来发现这样也没用。好叭感觉和依赖库有关,太难找了,不找了 /

不能从其他BuildConfig里面去取application id,因为打包后使用的只有app模块的id。
依赖库的application id不能随便改的,你一改,依赖库有类引用R文件的话全部得手动改。
依赖库的application id跟包名是没有任何关系的。
依赖库里面想要获得application id,必须通过context.getPackageName,或者context.getApplicationInfo().packageName获得。依赖库的工具类,大部分都必须传Context环境,除非一些代码跟环境完全无关。

参考https://blog.csdn.net/he_xiang_/article/details/81080507

应用ID与包名区别

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

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

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

  2. package="com.example.myapplicationtest" >

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

  1. android {

  2. defaultConfig {

  3. applicationId "com.example.myapplicationtest"


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

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


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

    应用ID的命名并不是随意的,它至少需要需遵循以下限制:

    • 应用ID至少包含两部分(也就是说至少有一个点,如com.example);

    • 每部分必须以字母开头;

    • 所有字符必须是字母数字或者下划线[a-zA-Z0-9_]

    • app的标识,一旦定义不能随意改变

    注意:

    如果你使用了webview,请使用包名作为应用ID的前缀,否则,有可能会报错.

修改包名

默认情况下,包名与应用ID是相同的。当然,开发者也可以对包名进行修改.如果开发者想要修改包名的话,注意项目目录结构必须与AndroidManifest.xml中package属性的包名一致.

  1. <?xml version="1.0" encoding="utf-8"?>

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

  3. package="com.example.myapplicationtest"

  4. android:versionCode="1"

  5. android:versionName="1.0" >

package值有两个作用:

  • 它为R.java文件提供了命名空间,例如R class的包名为com.example.myappcationtest.R

  • 决定manifest中声明的class的相对名称。如:manifest中声明的<activity android:name=".MainActivity"> 的真实路径为:com.example.myapplicationtest.ManiActivity

如果开发者想修改包名,必须确保manifest中package值也做了同步修改.

原文地址:https://www.cnblogs.com/xtxt1127/p/12367884.html