这篇文章主要介绍Android applicationId和包名的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
<强>应用ID与包名区别强>
每个Android应用都有一个唯一的应用ID。在Android设备和市场上,这个ID是你应用的唯一标识。若想在市场上更新应用,新应用的身份证必须和原来的apk的应用ID一致。所以一旦发布了应用,就不能再改变应用ID。
在Eclipse中没有applicationId这个概念,在Eclipse中applicationId即等同于包名。但是到了Android工作室中,这两个概念做个区分。包名的定义在清单文件中:
& lt; manifest xmlns: Android=癶ttp://schemas.android.com/apk/res/android",,包=癱om.example.myapplicationtest",在
应用ID是在模组层的build.gradle中定义,applicationId值即为应用ID,如下所示:
android { defaultConfig { applicationId 才能“com.example.myapplicationtest" ,minSdkVersion 15 targetSdkVersion 才能;24 versionCode 才能;1 versionName 才能“1.0”; } … }
但是,Android在工作室中创建一个新项目时,applicationId默认是和项目的包名一致的,所以常常有开发者会将两者混淆,以为它们是一个概念。实际上,应用ID和包名是相互独立的。改变包名不会影响应用ID、反之亦然。
通常Android的应用ID与包名是绑定的,所以在Android API中,一些方法和参数从名称上看似乎它们返回的是包名,事实上它们返回的是应用ID值。例如,<代码> Context.getPackageName() 代码>方法返回的是应用ID,而不是包名。不信我们来看:
图中,包名是:com . example。<代码>myapplicationtest> 代码应用ID: <代码> com.example.myapplicationtest。id 代码>
在MainActivity中调用如下代码:
String applicationId =, this.getPackageName (); Log.i (“TESTKIM",“applicationId:“, +, applicationId);
打印日志文件,如下:
- <李>
应用id的命名并不是随意的,它至少需要需遵循以下限制:
李> <李>应用身份证至少包含两部分(也就是说至少有一个点,com . example)如;
李> <李>每部分必须以字母开头;
李> <李>所有字符必须是字母数字或者下划线(a-zA-Z0-9_)
李><强>注意:强>
如果你使用了webview,请使用包名作为应用id的前缀,否则,有可能会报的错。
应用ID用处
应用ID除了唯一标识了应用,那么它在开发过程中可以有哪些用处呢?
试想一下,当我们开发应用的时候,要在一台测试机上同时装上开发版和发布版,如何才能做到呢?其实很简单,只要让开发版的应用ID与发布版不一致即可。所以,只需要在buildTypes中修改开发版的应用身份证就行。如下:
android { … buildTypes { debug {才能 ,,,applicationIdSuffix “.debug",,//等同于“com.example.myapplicationtest.debug” ,,} } }
上面代码中,将调试版的应用ID在原来应用ID后追加“.debug .applicationIdSuffix代表了默认的应用ID,即为defaultConfig中applicationId的值,所以,调试版的应用ID为:“com.example.myapplicationtest.debug”。
另外,有时我们发布到市场的应用希望有不同的版本,比如:免费版和收费版。这就需要我们来构建不同的应用变体。那么我们可以在productFlavors中进行相应的配置,来生成不同的应用。如:
android { defaultConfig { applicationId 才能“com.example.myapplicationtest" } productFlavors { free {才能 ,,,applicationIdSuffix “.free" ,,} paid {才能 ,,,applicationIdSuffix “.paid" ,,} } }
在上面的代码中,我们用“免费”表示免费版,用“支付”表示付费版。在productFlavors中,通过配置不同应用ID,最终生成不同的应用。最终这两种应用的apk可同时存在于市场中。
<强>修改包名强>
默认情况下,包名与应用ID是相同的。当然,开发者也可以对包名进行修改。如果开发者想要修改包名的话,注意项目目录结构必须与AndroidManifest.xml中包属性的包名一致。
& lt; ? xml version=?.0“,编码=皍tf-8" ?祝辞& lt; manifest xmlns: android=癶ttp://schemas.android.com/apk/res/android",,包=癱om.example.myapplicationtest",, android: versionCode=?“,, android: versionName=?.0“,在Android applicationId和包名的区别有哪些