applicationId与packageName的比较与使用

一:概念

<1>applicationId:

      Android应用的唯一标识,在Android设备和应用市场中中所有的应用程序的applicationId都是唯一的,要对一个应用进行更新,必须保证applicationId的值相同,否则就认为是不同的应用。

<2>packageName:

      Android应用包名。

二:比较

<1>在eclipse中:

   applicationId等同于包名。

<2>在AndroidStudio中:

a.在创建新项目时applilcationId和packageName是默认相同的,即与项目结构中的包名相同,在项目创建完毕后两者的修改互不影响,但要保证在AndroidManifest.xml中的package与项目结构路径的包名相同,否则会运行报错;

b.如果没有在gradle中设置applicationId的值,则项目默认读取packageName作为applicationId的值;

c.packageName可理解为项目代码和资源的路径;

<3>补充

a.在使用三方sdk时,要求填写的包名为项目唯一标识,及applicationId;

b.虽然applicationId和gradle中的applicationId的值可能会不同,但是再build之后,AndroidManifest.xml中的package会自动复制applicationId的值,但是activity的name值仍为编译前packageName的值(体现了packageName为寻找代码和资源的路径);

applicationId与packageName的比较与使用_第1张图片
编译前文件
applicationId与packageName的比较与使用_第2张图片
编译后文件

三.使用

<1>可以根据设置不同的applicationId值来实现在同一个手机里同时安装测试和正式包的功能;

使用步骤:

a.在app的build文件中添加debug包用到的applicationId;

b.直接运行项目或者打debug包;

tips:在直接运行项目,或者打debug包的时候会自动引用debug的applicationIdSuffix的值,“.”之前的部分自动补全为applicationId的值,在debug的applicationIdSuffix也可以覆盖定义名称,如   “com.test.app”,则不再补全;

applicationId与packageName的比较与使用_第3张图片
生成不同applicationId的debug包设置

<2>可以根据打包时设置不同渠道不同的applicationId值来打出不同的应用;

a.在app的build文件中添加productFlavors中的渠道,并设置相应applicationId的名称;

b.在打包时直接选择相应渠道进行打包,如图;

tips:在多渠道打包设置applicationId时,最好采用覆盖方式进行命名(即不以“.”开头),否则会引起报错;

applicationId与packageName的比较与使用_第4张图片
采用不同的applicationId多渠道打包

<3>在使用一些三方sdk时,可以根据不同的applicationId值来生命测试和正式的应用账号,方便测试(例如极光推送,要根据不同的applicationId值来产生不同的APPKey,并识别进行推送)。

<4>可在AndroidManifest.xml中使用${applicationId}引用applicationId。



ps:第一次写文章,有些的不正确的地方请留言提出,多多指教,多谢!

同时借鉴了一些大牛的文章,在此表示感谢,附带链接:

https://blog.csdn.net/u011105728/article/details/53197783

https://zhidao.baidu.com/question/620123351579513012.html

你可能感兴趣的:(applicationId与packageName的比较与使用)