简介
这篇文章主要从目的出发,解决多市场平台的Apk打包如何配置。
背景
Android Studio 是使用Gradle构建整个项目,完成项目的代码编译、代码混淆成DEX、DEX和资源打包。这些步骤都可以看成一个个任务有序的进行,而Gradle就是工头。Gradle使用Groovy动态语言作为构建Gradle框架的语言。
如图所示,典型 Android 应用模块的构建流程通常依循下列步骤:
- 编译器将您的源代码转换成 DEX(Dalvik Executable) 文件(其中包括运行在 Android 设备上的字节码),将所有其他内容转换成已编译资源。
- APK 打包器将 DEX 文件和已编译资源合并成单个 APK。不过,必须先签署 APK,才能将应用安装并部署到 Android 设备上。
- APK 打包器使用调试或发布密钥库签署您的 APK:
如果您构建的是调试版本的应用(即专用于测试和分析的应用),打包器会使用调试密钥库签署您的应用。Android Studio 自动使用调试密钥库配置新项目。 - 如果您构建的是打算向外发布的发布版本应用,打包器会使用发布密钥库签署您的应用。要创建发布密钥库,请阅读在 Android Studio 中签署您的应用。
- 在生成最终 APK 之前,打包器会使用 zipalign 工具对应用进行优化,减少其在设备上运行时的内存占用。
构建流程结束时,您将获得可用来进行部署、测试的调试 APK,或者可用来发布给外部用户的发布 APK。
构建不同applicationID的apk
当在上传市场时需要两个版本:免费和付费。
增加产品类型productFlavors
android {
defaultConfig {
applicationId "com.kunion.gradletest"
}
productFlavors {
free {
applicationIdSuffix ".free"
}
paid{
applicationIdSuffix ".pro"
}
}
}
增加产品类型 free和paid,生成的apk的包名变为”com.kunion.gradletest.free”和”com.kunion.gradletest.pro”。
增加依赖
apply plugin: 'com.android.application'
android { ... }
dependencies {
// Dependency on a local library module
compile project(":mylibrary")
// Dependency on local binaries
compile fileTree(dir: 'libs', include: ['*.jar'])
// Dependency on a remote binary
compile 'com.example.android:app-magic:12.3'
}
增加本地依赖模块
compile project(":mylibrary")
增加本地依赖jar包
compile fileTree(dir: 'libs', include: ['*.jar'])
路径:project/app/libs/*
同事也可以单独加载jar包
compile files('libs/foo.jar', 'libs/bar.jar')
远程依赖包
Gradle会根据项目中设置的依赖仓库同步下载依赖包。
缩写写法
compile 'com.example.android:app-magic:12.3'
全名称写法
compile group: 'com.example.android', name: 'app-magic', version: '12.3'
常用依赖配置
compile 编译并打进apk
apk 打包进apk
provided 编译不打进apk
testCompile 测试编译使用 如JUnit工具
androidTestCompile android测试时使用 如esprosso
远程依赖配置
路径:project/build.gradle
增加仓库
allprojects {
repositories {
jcenter()
mavenCentral()
maven {
url "https://repo.example.com/maven2"
}
maven {
url "file://local/repo/"
}
ivy {
url "https://repo.example.com/ivy"
}
}
}
google的一些依赖
- Android Support Library
- Architecture Components Library
- Constraint Layout Library
- Android Test Support Library
- Databinding Library
- Android Instant App Library
需要仓库
repositories {
maven {
url 'https://maven.google.com'
// Alternative URL is 'https://dl.google.com/dl/android/maven2/'
}
}
依赖顺序
依赖的顺序有两个,1、按照依赖加入先后顺序;2、无重复依赖优先
如:加入依赖 libA和libB,libA先
libA依赖于libC和libD
libB也依赖于libC
所以最后的依赖顺序是 libA libD libB libC
libA优于libB 而libD因为libA也优于libB, libC因为libB也依赖于libC所以降序。故,下来是libB 和libC
查看依赖
- 选择Select View > Tool Windows > Gradle 出现Gradle工具窗口。
- 展开 AppName > Tasks > android 然后双击androidDependencies.
- 选择View > Tool Windows > Gradle Console.
如下图: