Android中applicationid和包名的区别

来源:互联网 发布:世界未解之谜 知乎 编辑:程序博客网 时间:2024/05/22 15:56
首先我们要明白applicationId的含义是什么,applicationId在Android系统中是作为应用的唯一标识,即在一个Android设备中所有的应用程序的applicationId都是唯一的。这意味着,一旦你已发布的程序使用了这个applicationId,你就无法再修改它。如果修改了,那么这个应用程序就会被系统当作是一个全新的应用程序,和你之前的应用程序是相互独立的。
我们一起看下清单文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.mytestdemo"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="14"        android:targetSdkVersion="21" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".MainActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>

再看一下app下的build.gradle文件中applicationId
android {    compileSdkVersion 20    buildToolsVersion "25.0.3"    defaultConfig {        applicationId "com.example.mytestdemo"        minSdkVersion 14        targetSdkVersion 21    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'        }    }}

在这我们需要注意一下,在eclipse中是没有applicationId这个概念的,在elcipse中applicationId即等同于package name,也就是我们清单文件中声明的package,它是作为一个应用的唯一标识。而在android studio中将这两个概念进行了隔离,我们可以在gradle文件中配置applicationId作为应用的唯一标识,假如没有在gradle中进行相应配置,那么applicationId就会默认为package name,不过我们一般会进行配置。所以package name在android studio中理解为一个查询类的路径比较合理,因为我们在配置四大组件的时候,name是可以缩写的,而package name就是我们可以省略的部分。

需要注意的是,我们在进行开发的时候,用到的一些三方sdk()需要我们的包名,这的包名指得是applicationId而并非package name,当然在eclipse中也就没有区分了,因为它只有package name。