美文网首页android
Andrid架包代码混淆与打包处理

Andrid架包代码混淆与打包处理

作者: SunnySky_ | 来源:发表于2017-05-14 13:03 被阅读82次
    1. 编辑混淆文件 proguard-rules.pro
    -keep class com.hd123.piccmcarddriver.Card{*;}
    -keep class com.hd123.piccmcarddriver.CardInfo{*;}
    -keep class com.hd123.piccmcarddriver.CardOperateException{*;}
    -keep class com.hd123.piccmcarddriver.CardOperator{*;}
    -keep class com.hd123.piccmcarddriver.IntentUtil{*;}
    
    -keep class com.hisense.pos.** {*;}
    
    -keep, includedescriptorclasses class com.ums.** { *; }
    
    -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
    #-dontwarn com.ums.**
    #-dontnote com.ums.**
    #-dontnote org.apache.**
    #-dontnote android.net.**
    
    #-dontwarn org.chromium.**
    #-dontwarn org.apache.**
    #-dontwarn io.liteglue.**
    -dontwarn com.hd123.**
    -dontwarn com.hisense.**
    
    
    2. 设置minifyEnabled为true
     buildTypes {
            release {
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    
    3. 打包处理
    在build.gradle android中添加如下代码
    android.libraryVariants.all { variant ->
            task("generate${variant.name}Javadoc", type: Javadoc) {
                description "Generates Javadoc for $variant.name."
                source = variant.javaCompile.source
                ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
                classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)
            }
    
            task("javadoc${variant.name}", type: Jar) {
                classifier = "javadoc"
                description "Bundles Javadoc into a JAR file for $variant.name."
                from tasks["generate${variant.name}Javadoc"]
    
            }
    
            task("jar${variant.name}", type: Jar) {
                description "Bundles compiled .class files into a JAR file for $variant.name."
                dependsOn variant.javaCompile
                from variant.javaCompile.destinationDir
                exclude '**/R.class', '**/R$*.class', '**/R.html', '**/R.*.html'
            }
        }
    
    在build.gradle中添加task
    task proguardJar(type: proguard.gradle.ProGuardTask) {
        //Android 默认的 proguard 文件
        configuration android.getDefaultProguardFile('proguard-android.txt')
        //manifest 注册的组件对应的 proguard 文件
        configuration 'proguard-rules.pro'
        String inJar = 'build/libs/****.jar'
        //输入 jar
        injars inJar
        //输出 jar
        outjars 'build/libs/****_release.jar'
        //设置不删除未引用的资源(类,方法等)
        dontshrink
       }
    
    
    命令行中执行如下代码,在libs目录下就得到了输出的经过混淆的架包了
    ./gradlew clean javadocRelease jarRelease
    ./gradlew proguardJar 
    

    相关文章

      网友评论

        本文标题:Andrid架包代码混淆与打包处理

        本文链接:https://www.haomeiwen.com/subject/eblqxxtx.html