Android手动混淆打包(com.android.library类型工程项目打包jar包)
2016-07-20 14:00
866 查看
经朋友介绍,到新公司快一年了,期间陆陆续续做了一些的项目,其中包含2个SDK,公司要求以jar包的形式给客户提供功能,打成jar包并不麻烦,问题在于如何给代码进行混淆,尝试了几种方法,效果都不尽如人意,最后找到了一种适合的方法,现总结如下。android studio gradle
创建一个库工程,名称为XXLib,build.gradle加入声明:apply plugin: 'com.android.library'
创建成功后,尽情实现你要的功能
开始打包,进入到XXLib目录中,command line执行打包命令:gradle clean assembleRelease
打包完成后,会在XXLib/build/outputs/aar目录下会生成XXLib-release.aar文件
使用解压工具打开XXLib-release.aar文件,提取出classes.jar放在XXLib-release.aar文件所在目录(解压aar文件的方法是,将aar文件后缀修改为zip,直接解压即可)
修改混淆配置文件:proguard-rules.pro,修改-libraryjars路径,该路径为${android.sdk.home}路径,proguard-rules.pro下载地址:git@code.csdn.net:snippets/1773160.git
使用command line方式混淆,主要使用Android sdk中的工具,目录在${android.sdk.home}/tools/proguard/lib下
执行命令:java -jar ${android.sdk.home}/tools/proguard/lib/proguard.jar @${project.home}/XXLib/proguard-rules.pro即可,注意更改${android.sdk.home}和${project.home}目录
example:
java -jar /Users/xusheng/xusheng/software_install/android-sdk-macosx/tools/proguard/lib/proguard.jar @/Users/xusheng/xusheng/project/advertisement_an/Ads/lib/proguard-rules.pro
至此,jar包已经混淆完成,但是有一点需要注意,该种方法并不能将资源文件同时打包在内,需要使用sdk的宿主应用添加到自己工程的资源文件目录下,然后sdk中使用反射的方式进行获取,具体获取方法,我也提供了一个工具类,下载地址为:
git@code.csdn.net:snippets/1773223.git
创建一个库工程,名称为XXLib,build.gradle加入声明:apply plugin: 'com.android.library'
创建成功后,尽情实现你要的功能
开始打包,进入到XXLib目录中,command line执行打包命令:gradle clean assembleRelease
打包完成后,会在XXLib/build/outputs/aar目录下会生成XXLib-release.aar文件
使用解压工具打开XXLib-release.aar文件,提取出classes.jar放在XXLib-release.aar文件所在目录(解压aar文件的方法是,将aar文件后缀修改为zip,直接解压即可)
修改混淆配置文件:proguard-rules.pro,修改-libraryjars路径,该路径为${android.sdk.home}路径,proguard-rules.pro下载地址:git@code.csdn.net:snippets/1773160.git
使用command line方式混淆,主要使用Android sdk中的工具,目录在${android.sdk.home}/tools/proguard/lib下
执行命令:java -jar ${android.sdk.home}/tools/proguard/lib/proguard.jar @${project.home}/XXLib/proguard-rules.pro即可,注意更改${android.sdk.home}和${project.home}目录
example:
java -jar /Users/xusheng/xusheng/software_install/android-sdk-macosx/tools/proguard/lib/proguard.jar @/Users/xusheng/xusheng/project/advertisement_an/Ads/lib/proguard-rules.pro
至此,jar包已经混淆完成,但是有一点需要注意,该种方法并不能将资源文件同时打包在内,需要使用sdk的宿主应用添加到自己工程的资源文件目录下,然后sdk中使用反射的方式进行获取,具体获取方法,我也提供了一个工具类,下载地址为:
git@code.csdn.net:snippets/1773223.git
相关文章推荐
- SourceProvider.getJniDirectories
- 执行失败的任务 ': processDebugManifest'
- Android实现表情 抓取新浪表情
- 详解Android解析Xml的三种方式——DOM、SAX以及XMLpull
- Android Studio使用教程(六):Gradle多渠道打包
- android开发环境遇到adt无法启动的问题分析及解决方法
- Android开发 旋转屏幕导致Activity重建解决方法
- Android 中动态加载.jar的实现步骤
- Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)
- java使用命令行打包JAR
- Android开发技巧之ViewStub控件惰性装载
- 用代码更新你的jar包
- 用Java连接sqlserver数据库时候几个jar包的区别分析
- Android客户端程序Gradle如何打包
- Android开发常用经典代码段集锦
- 基于将Android工程做成jar包和资源文件的解决方法
- 分享10个很棒的学习Android开发的网站
- Android中使用Gradle来构建App项目的入门指南
- android开发之横向滚动/竖向滚动的ListView(固定列头)
- jar包双击执行程序的方法