您的位置:首页 > 移动开发

20170308_Android包名 - ApplicationId 与 PackageName

2017-03-08 23:22 399 查看

1.介绍:

            1.1 概念

 
                 Android 应用都有自己的包名。包名是设备上每个应用程序的唯一标识,同样也是 Google Play 商店里的唯一标识。

            1.2 解释说明

                   假如你已经使用某个包名来发布应用,就不能再去改变应用的包名,因为这样做会导致你的应用被视为一个全新的应用,你现有的用户也不会收到应用的更新通知。

 2.用途:

           1.应用程序的唯一标识

           2.用于在源码中引用 R 类以及解析注册相关的 activity/service,对应 Java
的包名概念。

                R文件 用来保存资源的引用,所以如果你在其他包中的代码需要引用资源,对应的 .Java 文件需要导入com.xxx.xxx.R


3.设置包名:

        3.1 package

               3.1.1 设置 package
                       在AndroidManifest.xml中的 manifest节点配置 package

                        这里设置的包名,对应 用途 中 第二点:用于在源码中引用
R 类以及解析注册相关的 activity/service,对应 Java 的包名概念。

             


           3.1.2 解释说明
                 在重构代码时,如果需要改变package 只需在导包时重新导入修改后正确的包即可,不会影响到app最终的id。

       3.2 applicationId

               3.2.1 设置 applicationId
                       在app/build.gradle 下

                       这里设置的包名,对应 用途  中 第一点应用程序的唯一标识

apply plugin: 'com.android.application'

android {
compileSdkVersion 19
buildToolsVersion "19.1"

defaultConfig {
applicationId "com.example.my.app"
minSdkVersion 15
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
...



            3.2.2 解释说明


            在旧版本的 Android
Gralde 构建系统中,应用的包名由manifest 中根节点的 package 属性决定(正如现在的applicationid) ,作为app的唯一标识。

            但是在新版本的Android Gralde 构建系统中,分别使用的applicationid和 package。之所以这么做,是为了解耦。方便代码的重构。


4.扩展


        4.1  构建不同版本的applicationid


                4.1.1 说明


                   新版本Android Gralde 构建系统,可以通过设置applicationid来构建多个不同版本的应用。

       
        
  例如,你可以同时构建免费版和专业版的应用(使用 flavor),并且它们在
Google Play 上也应该要有不同的包名,这样它们就能够在同一设备上安装并且能够单独购买使用等等。

       
        
  同样的,你也可以构建
“debug”、“alpha”、“beta” 版的应用(使用 build type),它们也同样可以有唯一的包名。

                4.1.2 配置


       
        
    你可以通过以下的
Gradle DSL 方法来为不同的 flavor 和 build type 定义不同的 applicationId:

       
    app/build

productFlavors {
pro {
applicationId = "com.example.my.pkg.pro" //专业版
}
free {
applicationId = "com.example.my.pkg.free"  //免费版
}
}

buildTypes {
debug {
applicationIdSuffix ".debug"  //debug版本
}
}
....



        4.2 注意事项


                4.2.1 

       
        
       出于兼容性考虑,如果没有在
build.gradle 文件中定义 applicationId,那么 applicationId 将默认为 AndroidManifest.xml 中所指定的 package 的值。在这种情况下,applicationId 和     
        
        
        
   package
显然未解耦,此时重构代码也将会更改应用的 id !在 Android Studio 中,新建的项目会指定这两个值。

                4.2.2 

                         package 始终必须在默认
AndroidManifest.xml 文件中指定。如果存在多个 manifest(例如一个 flavor 有特定的 manifest 或一个 buildType 有特定的 manifest),package 可不指定,但如    
        
        
    果被指定,必须和主
manifest 中指定的 package 完全相同。

版权说明:            根据 《http://blog.csdn.NET/maosidiaoxian/article/details/41719357。
作者 貌似掉线 》 
  整理

           
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 构建 基础