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

  • 相关阅读:
    Ecommerce 3.0雏形出现
    网上购物折扣如此红火
    [ZZ]将测试人员整合到敏捷团队中
    晒工资网——Glassdoor
    [ZZ].NET自动探索式测试工具——Pex
    [ZZ]好的测试应该具备哪些特质?
    我用到的Firefox插件
    [ZZ]WatiN & Selenium RC-自动化测试工具比较
    [ZZ]高盛:Amazon预计10年营收涨10倍达台币3兆元
    从优惠券到维络卡
  • 原文地址:https://www.cnblogs.com/stay/p/5175527.html
Copyright © 2011-2022 走看看