有向客户提供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.absolutePathdef 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'复制代码