Android 与gradle常见相关问题及解答(3)

5 application ID 与packageName 区别


在eclipse时代还好,使用AS之后,同学们会发现application ID 和 packageName 这两个概念很容易混淆

本文解析之。

(1)application ID  是一个android app 的唯一标识符

(2)application ID 必须至少包含一个“.”

(3) Context.getPackageName() 获取的是application ID 

 (4) 使用WebView的话 application ID的前缀要是packageName,否则会有bug.

https://issuetracker.google.com/issues/37102241

 (5) application ID  的通常申明方式如下

 defaultConfig {
        applicationId "com.example.myapp"
    }

(6)在buildType中可以对application ID 进行修饰

 buildTypes {
        debug {
            applicationIdSuffix ".debug"
        }
    }

 ( 7 )在productFlavors 中可以重新定义或者修饰application ID

 productFlavors {
        free {
            applicationIdSuffix ".free"
        }
        pro {
            applicationIdSuffix ".pro"
        }
    }
(8) 如果application ID 在build.gradle 中未定义,则使用 AndroidManifest.xml的package name 作为application ID

(9)清单文件可以通过${applicationId} 引用到applicaitonID

(10)The Android build tools 使用清单文件中的package属性(packageName)来生成R文件。

(11)清单文件的activity之前用  .xxxActivity。点之前省略的实际是packageName;

所以说,一般来说最好目录结构要和清单文件中的package相对应

(12)如果重构目录结构的话,清单文件中的package也要改,否则会出错。

(13)如果使用as的工具进行package 的refactor的话, 目录结构和清单文件中的package会自动保持同步(符合12的规则)

(14)如果有多个清单文件的话,高优先级清单文件的package会替换低优先级清单文件的package

(15)最终打包的apk的清单文件的package是 application ID

     (虽然在Build的过程中需要使用package,但是build完之后,package就可以丢弃了,最终的清单文件中的package的值实际是application ID


补充总结一下:applicationID就是app 的唯一标识符,而packageName则是指包名,两者完全不是一个概念


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值