Android 与gradle常见相关问题及解答(3)
2017-08-17 17:25
337 查看
5 application ID 与packageName 区别
在eclipse时代还好,使用AS之后,同学们会发现application ID 和 packageName 这两个概念很容易混淆
本文解析之。
(1)application ID 是一个android app 的唯一标识符
(2)application ID
必须至少包含一个“.”
(3)
ID
(4) 使用WebView的话 application
ID的前缀要是packageName,否则会有bug.
https://issuetracker.google.com/issues/37102241
(5) application ID 的通常申明方式如下
(6)在buildType中可以对application ID 进行修饰
( 7 )在productFlavors 中可以重新定义或者修饰application ID
(8) 如果application ID 在build.gradle 中未定义,则使用AndroidManifest.xml的package name 作为application ID
(9)清单文件可以通过
(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则是指包名,两者完全不是一个概念
在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则是指包名,两者完全不是一个概念
相关文章推荐
- Android 与gradle常见相关问题及解答(2)
- Android 与gradle常见相关问题及解答(1)
- Gradle 构建 android 应用常见问题解决指南
- [Gradle] Gradle 构建 android 应用常见问题解决指南
- Gradle 构建 android 应用常见问题解决指南 推荐
- Android Gradle常见问题
- Android常见问题01_AndroidStudio导入Gradle版本较低的项目一直加载的问题
- Gradle 构建 android 应用常见问题解决指南
- Gradle 构建 android 应用常见问题解决指南
- android导入项目,出现Fix Gradle wrapper and re-import project问题以及相关问题的解决
- 企业对于搜索引擎优化的一些常见问题以及相关的解答
- gradle的相关版本及常见错误问题
- Android开发中常见的问题解答
- Gradle 构建 android 应用常见问题解决指南
- Android Surface相关常见问题
- Android 项目中内存泄漏和内存溢出(oom)以及常见内存问题相关Demo详解
- Android常见崩溃或闪退的问题描述及原因总结、及与性能相关的模块——持续更新
- Gradle 构建 android 应用常见问题解决指南
- Gradle 构建 android 应用常见问题解决指南
- Gradle 构建 android 应用常见问题解决指南