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"
        }
    }
}

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

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

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

在代码中可以通过getPackageName()获取applicationId,获取的是build.gradle里的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里面的相关值

AndroidManifest里面的相关值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值