8月13日
Android打包流程
打包流程包括包含四步骤
- 通过aapt工具打包res资源文件,生成R.java,resources.arsc和res文件
- 处理.aidl文件,生成对应的java接口文件
- 通过java compiler编译R.java, java接口文件,java源文件,生成.class文件
- 通过dex命令,将.class文件和第三方库的.class文件处理称classes.dex
- 通过apkbuilder工具,将Dex文件,res资源合并成一个APK
- 通过jarsinger工具,为APK进行签名
- 通过zipalign工具进行apk的对齐优化
自定义Gradle插件
- 创建一个module,无论phone还是Android Library,因为后面会删掉大部分文件
- 删除module下的文件及文件夹,只保留空的src/main目录及build.gradle文件
- 创建groovy文件夹,定义包名。如java项目一样
- 创建一个类MyPlugin.groovy
- 在build.build中加入groovy引用和用于上传的maven的引用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
//gradle sdk
compile gradleApi()
//groovy sdk
compile localGroovy()
}
repositories {
mavenCentral()
}
group = 'com.zyx.plugin'
version = '1.0.0'
uploadArchives {
repositories {
mavenDeployer {
//提交到远程服务器:
// repository(url: "http://www.xxx.com/repos") {
// authentication(userName: "admin", password: "admin")
// }
//本地的Maven地址设置为D:/repos
repository(url: uri('/Users/zhengyangxin/StudioProjects/myProject/LibraryCollection/pluginrepos'))
}
}
} - 插件已经编好,接着需要告诉gradle我们定义了哪个插件,需要创建文件src/main/resources/META-INF/gradle-plugins/XXXX.properties, 这里的XXXX就是外部module引用的名称,在这里我们定义为com.zyx.plugin.properties
1
apply plugin: 'com.zyx.plugin'
- 然后在XXXX.properties指明我们定义的插件
1
implementation-class=com.hc.plugin.MyPlugin
- 最后可以进行打包一个plugin在本地,通过定义的uploadArchives Task
- 在需要的modlue中引用自定义的plugin
1
2
3
4
5
6
7
8
9
10
11
12
13apply plugin: 'com.zyx.plugin'
buildscript {
repositories {
maven {//本地Maven仓库地址
url uri('/Users/zhengyangxin/StudioProjects/myProject/LibraryCollection/pluginrepos')
}
}
dependencies {
//格式为-->group:module:version
classpath 'com.zyx.plugin:plugin:1.0.0'
}
}