zoukankan      html  css  js  c++  java
  • Android Studio导出Jar包并混淆

    在Android Studio中,自带反编译查看class文件,如果没有混淆的话,class文件跟java文件基本没有区别了,为了保护,还是混淆的好。

    网上看了不少资料,都是直接下载proguard额外jar,直接生成,觉得不方便,既然apk都能混淆,为什么不直接通过Android Studio来混淆jar包呢。

    做法其实很简单,一个build文件,一个proguard文件就可以了。

    首先要明白jar从哪里来,以前在Eclipse中是一个project设置为library,然后另外一个主project依赖它。build一下,在library中就会生成jar文件了。

    在Android Studio是module的概念,其实也相当于project。主app module依赖其它子module,在打包时,会将其它module打成aar,赋给主app。所以jar是针对整个module来make的。

    如果module内仅仅是java代码,生成jar是没问题的,但如果还有resource文件,那就得打aar文件了。

    在你要打jar包的module build文件中,加上一个生成jar包的task。其实即使不添加,在整个工程build时也会生成jar文件的。在build/intermediates/bundles/release/classes.jar可以找到。只是没混淆罢了。

    task makeJar(type: proguard.gradle.ProGuardTask, dependsOn: "build") {
    // 未混淆的jar
    injars 'build/intermediates/bundles/release/classes.jar'
    // 混淆后的jar路径
    outjars 'build/http.jar'
    // 具体需要keep住的类
    configuration 'proguard-rules.pro'
    }

    这个时候,在Termial中就输入./gradlew makeJar就能将classes.jar复制倒http.jar了。这个时候还是没混淆的,因为混淆根本没写。

    如果module中同时也依赖其它libs,那需要在proguard中声明那些libs。比如:#-libraryjars libsgson-2.2.2.jar,大部分都跟apk混淆类似的,只不过是局限于某个module而已。

    附送一个proguard供大家参考,也是网上找的。最后混淆效果并不是很好,只是简单的将部分变量改成了abcd这样,不过也够了。总不能将方法也混淆,这样外部调用就麻烦了。

    proguard-rules.pro

  • 相关阅读:
    C# 调用cmd执行指令
    如何发布 silverlight wcf 简单易学
    C#读取特定目录下的所有文件
    用批处理bat一次安装所有的系统更新补丁
    动态创建datagrid序号
    学习DIV+CSS一个最简单的布局一行三列DIV代码!
    highslide图片查看特效
    相册程序mageVue
    让Apache支持ASP.NET
    ASP.NET四种页面导航方式之比较与选择
  • 原文地址:https://www.cnblogs.com/stay/p/5175527.html
Copyright © 2011-2022 走看看