Tneciv
V2EX  ›  Android

Android Studio 打 Jar 包混淆的一点问题

  •  
  •   Tneciv · Jul 13, 2016 · 13848 views
    This topic created in 3619 days ago, the information mentioned may be changed or developed.

    现在的情况是,打出的 Jar 包不开启混淆之前一切正常,开启后会丢失打进去的.class 这个是 Gradle 中的混淆 task :

    task proguardJar(type: ProGuardTask, dependsOn: ['makeJar']) {
        // 输入路径
        injars sdkDestinationPath + '/' + unProguardJar
        // 输出路径
        outjars sdkDestinationPath + '/' + SDK_BASENAME + '-' + SDK_VERSION + '.jar'
        // 添加配置信息
        configuration 'proguard-rules.pro'
    }
    

    proguard-rules.pro 中的内容:

    -keep class xyz.tneciv.deviceinfo.OkhttpUtil
    
    #-libraryjars <java.home>/lib/rt.jar
    -libraryjars sdk/platforms/android-24/android.jar
    
    -dontwarn xyz.tneciv.deviceinfo.OkhttpUtil
    

    现在的情况是除了-keep 的 class 之外 其他的都没了。。。

    Supplement 1  ·  Jul 13, 2016

    问题已解决,是因为未开启-dontshrink的原因。

    完整proguard-rules.pro如下:

    # 设置不删除未引用的资源(类,方法等)
    -dontshrink
    
    -keep class xyz.tneciv.deviceinfo.OkhttpUtil
    
    # -libraryjars <java.home>/lib/rt.jar
    -libraryjars D:/application/sdk/platforms/android-24/android.jar
    
    -dontwarn xyz.tneciv.deviceinfo.OkhttpUtil
    
    5 replies    2016-07-13 19:23:58 +08:00
    mengrusheng
        1
    mengrusheng  
       Jul 13, 2016
    mark
    21grams
        2
    21grams  
       Jul 13, 2016 via Android
    AS 可以输出 jar 了吗,不是只能是 aar 吗
    Tneciv
        3
    Tneciv  
    OP
       Jul 13, 2016
    @21grams 自己把生成的.class 打成 jar
    SoloCompany
        4
    SoloCompany  
       Jul 13, 2016
    都 dontshrink 了还执行 proguard 有啥意义呢
    Tneciv
        5
    Tneciv  
    OP
       Jul 13, 2016 via Android
    @SoloCompany dontshrink 和混淆并没有直接关系 只是不删除未引用的资源而已 自己试试就知道了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4049 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 05:14 · PVG 13:14 · LAX 22:14 · JFK 01:14
    ♥ Do have faith in what you're doing.