Android Studio多模块的SDK项目打包和混淆

任务遇到的难点

1.SDK项目多模块,编译后每个模块自己生成了1个jar包。但是需求是只对外发布一个jar包,需要进行合并多个jar包。

2.生成的jar包中因为模块引入了百度地图定位导致jar包内有不需要的asset文件杂项

3.多模块的混淆问题

解决方案:

每个模块在编译之后都会在XXX/build/intermediates/bundles/release/classes.jar 路径下生成jar包

使用如下脚本可协助你合并多个jar包 (路径问题自己解决哈)

#!/bin/sh

#进入输出目录
cd output

#清空输出目录
rm -rf  *

#创建输出子目录
mkdir temp
mkdir release

#定义sdk版本号
version="1.0.0"

#定义模块是否打包标识
is_include_wifidao=true
is_include_location=true
is_include_interactive=true
is_include_wificonnect=true
#省略其他...

#解压所有release版本的jar包到temp目录中
cd temp

if $is_include_wifidao; then
    jar -xvf ../../wifidao/build/intermediates/bundles/release/classes.jar
fi

if $is_include_location; then
    jar -xvf ../../location/build/intermediates/bundles/release/classes.jar
fi

if $is_include_interactive; then
    jar -xvf ../../interactive/build/intermediates/bundles/release/classes.jar
fi

if $is_include_wificonnect; then
    jar -xvf ../../wificonnect/build/intermediates/bundles/release/classes.jar
fi

#压缩所有release版本的class文件到一个独立的jar包中
jar -cvfM SDK_${version}_release.jar .

#拷贝文件
mv SDK_${version}_release.jar ../release

#清空temp目录
rm -rf *




#删除temp目录
cd ..
rm -rf temp

第二个问题解决方案,将第三方库 单独新建一个模块来存放,然后在引入隔绝需要打包的模块中直接引入第三方库。 (因为发现AS中不会将其他模块的东西编译进另外一个模块得到的启发)

  

第三个问题,解决方案在合并为一个jar包之后,利用Android SDK自带的混淆工具将混淆配置导入,进行混淆。

需要注意:混淆时候记得导入依赖的第三方库/V4包/ Android SDK/

例如:
Android SDK /usr/local/coding/env/android_sdk_linux/platforms/android-23/android.jar
V4包    /home/lin/文档/git_repo/zhonglianSDK/output/support-v4-23.2.0-sources.jar
volley 
百度地图定位
gson

点底下Load configuration就可以导入 proguard-rules.pro文件 然后根据情况修改下即可,还可以保存配置~具体用法自己可以再查哈

猜你喜欢

转载自my.oschina.net/u/1446823/blog/743410