0
点赞
收藏
分享

微信扫一扫

applicationId和packageName

夹胡碰 2022-06-06 阅读 61


文章目录

  • ​​applicationId​​
  • ​​packageName​​
  • ​​用变量代替包名​​

AndroidManifest.xml中有一个package属性
build.gradle中defaultConfig下有一个applicationId
这两者有什么区别呢?

applicationId

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

配置​​applicationId​​可以用作同一工程发布略有差异的不同apk,比如收费版和免费版、代码相同标示不同的渠道包等

一般配置

android {
......
defaultConfig {
applicationId "com.xx.application"
......
}
}

设置不同的applicationId配置

android {
......
productFlavors {
xiaomi{
applicationId = "com.xx.xiaomi"
}
baidu {
applicationId = "com.xx.baidu"
}
}
buildTypes {
......
debug {
applicationIdSuffix ".debug"
}
}
}

在创建新项目时​​applilcationId​​​和​​packageName​​是默认相同的,即与项目结构中的包名相同,在项目创建完毕后两者的修改互不影响

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

可在AndroidManifest.xml中使用​​${applicationId}​​​引用​​applicationId​

在代码中可以通过​​getPackageName()​​获取applicationId,获取的是build.gradle里的applicationId

packageName

applicationId和packageName_包名
packageName可理解为项目代码和资源的路径,有两个作用

  1. 它被用来命名你的资源类的包(以及解析任何相关的Activity的类名)。在上面的示例中,生成的 R 类将会是com.xx.popupwindow.R,因此如果其他包里面的代码需要引用这些资源,就需要导入com.xx.popupwindow.R
  2. Manifest清单中声明(如类的包路径和packageName相同时,activity的name缩写为”.xxxActivity“)使用

可在AndroidManifest.xml中使用​​${packageName}​​​引用​​packageName​

用变量代替包名

当引用三方平台的时候,需要在AndroidManifest多处配置当前应用的包名,如果想要更换包名,就需要在对应的地方作出相关修改,如果频繁修改比较麻烦,此时我们就可以通过 build.gradle 中的 manifestPlaceholders 配置,在 Androidmanifest 中通过相关变量作占位​​${applicationId}​​代表当前包名

重新编译后可在输出目录直接查看AndroidManifest里面的相关值

applicationId和packageName_包名_02

举报

相关推荐

0 条评论