一、基础
1、在build.gradel中添加如下任务
task makeJar(type: Copy) {
//删除存在的jar
delete 'build/outputs/my-jar-1.0.0.jar'
//设置拷贝的文件 (不同设备路径可能一样)
from('build/intermediates/compile_library_classes/debug/classes.jar')
//设置输出目录
into('build/outputs/')
//jar包重命名
rename('classes.jar', 'my-jar-1.0.0.jar')
}
makeJar.dependsOn(build)
2、在Terminal窗口输入gradlew makeJar即可
注:其实项目构建后就生成了我们需要的jar包,这里只是拷贝并重命名了一下,所以在执行步骤2前要先构建一下项目,确保classes.jar已生成。
二、进阶
1、将项目依赖的jar包也集成到我们的jar包中
task makeJar(type: Jar) {
//删除存在的jar
delete 'build/outputs/my-jar-1.0.0.jar'
//输出的jar包文件名
archivesBaseName = "my-jar-1.0.0"
//添加class文件 (不同设备路径可能一样)
from('build/intermediates/javac/release/classes/')
//添加依赖的第三方jar包
from(project.zipTree("libs/baidu-2.99.jar"))
//输出jar包的路径
destinationDirectory = file('build/outputs/')
//jar包需要排除的文件
exclude('com/lpf/demo/BuildConfig.class')
//jar包需要添加的文件
include('com/lpf/demo/*.class')
include('com/baidu/tts/*.class')
include('com/baidu/tts/**/*.class')
}
makeJar.dependsOn(build)
注:这里的exclude和include可以都不添加,即表示为把from的文件都打到jar包中
2、混淆jar包
def androidSDKDir = project.android.sdkDirectory
def androidJarDir = androidSDKDir.toString() + '/platforms/' + "${android.compileSdkVersion}" + '/android.jar'
task proguardMyLib(type: proguard.gradle.ProGuardTask) {
//需要混淆的jar包
injars('build/outputs/my-01.jar')
//混淆后的jar包
outjars('build/outputs/my-pro-01.jar')
//设置不删除未引用的资源(类,方法等)
dontshrink
//不需要混淆的jar包
libraryjars(androidJarDir)
//混淆规则
configuration 'proguard-rules.pro'
//设置不删除未引用的资源(类,方法等)
dontshrink
}
proguardMyLib.dependsOn(build)
问题:\proguard\seeds.txt (系统找不到指定的路径)
解:在打jar包的module中新建proguard文件夹即可(seeds.tex会在该目录下自动生成)