有向客户提供SDK的需求, 以jar包的形式提供. 我们的项目中引用了第三方的Jar(其实是公司另一个项目的jar), 所以也需要把第三方的jar打到SDK中 搜索网上发现资料都不是很完美, 综合之后, 自己实现gradle脚本.
打包命令 1.未混淆的jar
gradle makeJar
2.混淆过的Jar gradle makeJar_Pro
Gradle 脚本代码如下
task clearJar(type: Delete) {
delete 'build/libs/livesdk_pro.jar'
delete 'build/libs/livesdk.jar'
}
task makeJar(type: Jar, dependsOn: ['build']) {
archiveName = 'livesdk.jar'
from('build/intermediates/classes/release')
from(project.zipTree("libs/kk_common_sdk.jar"))
destinationDir = file('build/libs')
exclude('com/tvmao/sdk/live/BuildConfig.class')
exclude('com/tvmao/sdk/live/BuildConfig\$*.class')
exclude('**/R.class')
exclude('**/R\$*.class')
}
def androidSDKDir = project.android.sdkDirectory.absolutePath
def androidJarDir = androidSDKDir.toString() + '/platforms/' + "${android.compileSdkVersion}" + '/android.jar'
task makeJar_Pro(type: proguard.gradle.ProGuardTask, dependsOn: "build") {
// 未混淆的jar
injars 'build/libs/livesdk.jar'
// 混淆后的jar路径
outjars 'build/libs/livesdk_pro.jar'
libraryjars(androidJarDir)
// 具体需要keep住的类
configuration 'proguard-rules.pro'
copy {
from('build/libs/')
into('/')
include('livesdk_pro.jar')
rename('livesdk_pro.jar', 'livesdk_pro_' + sdkvercode + '.jar')
}
}
makeJar_Pro.dependsOn(makeJar, clearJar, build)
注意, 低版本的gradle 获取SDK dir的方式有所不同.
def androidSDKDir = plugins.getPlugin('com.android.library').sdkHandler.getSdkFolder()
def androidJarDir = androidSDKDir.toString() + '/platforms/' + "${android.compileSdkVersion}" + '/android.jar'