在开发中我们除了使用一些第三方的 jar库、aar库或者一些远程库,偶尔也会自己封装打包一些私有库使用。具体怎样打包属于自己的库呢,下面来介绍一下这些文件的打包配置方法。
一. 文件打包
1. JAR打包
jar,是一种包文件格式,它包含已编译的Java类文件和配置清单文件,不包含res等资源文件,适用于在其平台上分发Java应用程序或者没有资源文件的Android项目。
1)在library下的build.gradle
中添加配置代码;
方法一:
把library打包成jar文件,不能包含第三方的jar包一起打包配置:
android {
...
task makeJar(type: Copy) {
//删除旧的jar包
delete 'build/libs/zhihesdk.jar'
//jar文件原目录
from('build/intermediates/packaged-classes/release/')
//导出jar包的目录
into('build/libs/')
//包含的jar包
include('classes.jar')
//重命名jar包为newsdk
rename('classes.jar', 'newsdk.jar')
}
makeJar.dependsOn(build)
}
方法二:
把library打包成jar文件,可包含第三方的jar包一起打包配置:
android {
...
def zipFile = file('build/intermediates/packaged-classes/release/classes.jar')
task makeJar(type: Jar) {
//导出的jar文件名称
archiveName 'test.jar'
//jar文件原目录
from zipTree(zipFile)
//添加第三方jar
from (project.zipTree("libs/abc.jar"))
//导出jar包的目录
destinationDir = file('build/libs')
}
makeJar.dependsOn(build)
}
2)点击Sync Now
重新编译 gradle;
3)打开右侧Gradle
,找到 module/lib -> Tasks -> other -> makejar 双击运行;

4)打包编译成功,在“Run窗口”会有类似BUILD SUCCESSFUL in 33s
提示。

2. DEX打包
dex,是由Android SDK中的 dex编译器把Java Class文件生成二进制格式的文件,它可以直接在Dalvik虚拟机中加载运行。
找到SDK的安装目录,进入sdk/build-tools/28.0.3
目录,将jar包拷贝到该目录下。在空白处 右键 + Shift,选择 “在此处打开命令窗口” 点击进入 “cmd命令窗口”,输入编译命令:
- jar包转成 dex包
dx --dex --output new.dex old.jar
new.dex
是输出文件名,是dx工具生成的dex包;old.jar
是需要转换的jar包文件名;
- jar包转成 dex二进制 jar包
dx --dex --output new.jar old.jar
new.jar
是输出文件名,由dx工具生成的dex二进制 jar包;old.jar
是需要转换的jar包文件名;
- class文件转成 dex文件
dx --dex --output D:\dex\new.dex D:\class
D:\dex
是 dex文件输出目录,new.dex
是输出文件名;D:\class
是需要转换的 class文件根目录(这里一定是根目录
,否则会报路径不匹配的错误提示),根据 class文件包名,创建一个完整的路径(例如:D:\class\com\test\example\TestActivity.class
)。
3. AAR打包
aar,是一个Android库项目的二进制归档文件,里面包含Android项目所有的class及res等资源文件。
1)把 moudle里的build.gradle
文件中
apply plugin: 'com.android.application'
改为:
apply plugin: 'com.android.library'
2)把 moudle的build.gradle
中的applicationId
删除;
3)打开 moudle的AndroidManifest.xml
,将<application>
标签中的android:icon="@mipmap/ic_launcher"
删除,把启动项配置的<intent-filter>
标签里面的内容删除;
4)打开右侧Gradle
,找到 module/lib -> Tasks -> build -> assemble 双击运行,开始编译打包;
assemble
,同时生成debug和release模式的aar包;
assembleDebug
,生成debug模式的aar包;
assembleRelease
,生成release模式的aar包

5)查看 module下的build/outputs/aar/
文件夹,即可看到生成的aar文件;xxx-debug.aar
:是debug版本的aar文件,xxx-release.aar
:是release版本的aar文件。

4. APK打包
apk,是安卓操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。
APK具体的打包方法,请移驾 —— 《Android Studio签名打包APK教程》
二. 文件引用
查看详情,请移驾 —— 《Android Studio依赖添加方式小结》
网友评论