android studioはどのように混同コードのjarを生成します


今日、androidでjarパケットを生成する際にjarパケットのコードを混同し、コアコードを他人に見られないようにする方法について簡単に説明します.
以前、私はリーダーに生成したSDKをパッケージ化し、android studioを使用してインポートした後、すべてのソースコードを見ることができると言いました.その結果、リーダーはこのようにしてはいけないと言って、コアコードは他の人に見せることができません.そこで、jarパッケージのコードを他人に見られないようにネットで検索し、最終的にコアコードを混同することを発見すればできますが、最後に混同に問題があることを発見しました.ここで記録します.
 
ネット上のこれらの内容はたくさんありますが、分かりにくいです.ここではjarパッケージをどのように混同するかを記録します.
1:指定モジュールのbuildを最初に変更する.gradleファイル、末尾に下記のコード(ネット上のコード)を付ける
task makeJar(type: proguard.gradle.ProGuardTask, dependsOn: "build") {
    //        jar 
    delete'build/outputs/jar/SystemInfo.jar'
    //     jar
    injars 'build/intermediates/bundles/release/classes.jar'
    //     jar  
    outjars 'build/outputs/jar/SystemInfo.jar'
    //     
    configuration 'proguard-rules.pro'
}

説明:ASは自動的にモジュールをパッケージ化する、すなわちbuild/intermediates/bundles/release/classes.JArは、混同作業をしていないだけです.
簡単に言えば、これはproguard-rulesを使用する手動構成です.Proは生成したjarを混同して、私は自分でこのように試みたことがあって、このようにコンパイルして間違っていることを発見して、そこで自分で使った他のコード:
apply plugin: 'com.android.library'

android {
    compileSdkVersion 23
    buildToolsVersion "25.0.2"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 21
    }

    buildTypes {
        release {
            /**    LOG **/
            /**    **/
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            /**    LOG **/
            /**    **/
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

ここでは主にDebugとreleaseバージョンのコンパイルを構成したjarがproguard-rulesを使用しています.Proは混同し、コアコードは:
buildTypes {
        release {
            /**    LOG **/
            /**    **/
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            /**    LOG **/
            /**    **/
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

proguard-android.txtはandroidが持参したドキュメントで、構成する必要はありません.これにより、エンジニアリングをコンパイルすると、自動的に生成されるjarパッケージが混同されますが、proguard-rulesを構成する必要があります.Proドキュメント、そうでなければ直接コンパイルするとエラーが発生します.とbuild.gradle同じディレクトリの下にtxtドキュメントを新規作成し、proguard-rulesというファイル名を変更します.Pro、次に混同された構成を行います.
 
2:proguard-rulesを構成する.Proファイル
(1)ASが持参したプロトコルを配置する
# This is a configuration file for ProGuard.
# http://proguard.sourceforge.net/index.html#manual/usage.html
# Starting with version 2.2 of the Android plugin for Gradle, these files are no longer used. Newer
# versions are distributed with the plugin and unpacked at build time. Files in this directory are
# no longer maintained.

#               
-dontusemixedcaseclassnames

#     library   public  
-dontskipnonpubliclibraryclasses

#         
-verbose


# Optimization is turned off by default. Dex does not like code run

# through the ProGuard optimize and preverify steps (and performs some

# of these optimizations on its own).
-dontoptimize

##       ,        java    
-dontpreverify

# Note that if you want to enable optimization, you cannot just
# include optimization flags in your own project configuration file;
# instead you will need to point to the
# "proguard-android-optimize.txt" file instead of this one from your
# project.properties file.
-keepattributes *Annotation*

-keep public class com.google.vending.licensing.ILicensingService

-keep public class com.android.vending.licensing.ILicensingService


# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
-keepclasseswithmembernames class * {
    native ;
}

# keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.net/manual/examples.html#beans
-keepclassmembers public class * extends android.view.View {

   void set*(***);

   *** get*();

}

# We want to keep methods in Activity that could be used in the XML attribute onClick
-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}


# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations

-keepclassmembers enum * {

    public static **[] values();

    public static ** valueOf(java.lang.String);

}


-keepclassmembers class * implements android.os.Parcelable {

  public static final android.os.Parcelable$Creator CREATOR;

}

-keepclassmembers class **.R$* {

    public static ;

}


# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older

# platform version.  We know about them, and they are safe.
-dontwarn android.support.**

# Understand the @Keep support annotation.
-keep class android.support.annotation.Keep

-keep @android.support.annotation.Keep class * {*;}


-keepclasseswithmembers class * {

    @android.support.annotation.Keep ;

}


-keepclasseswithmembers class * {

    @android.support.annotation.Keep ;

}


-keepclasseswithmembers class * {

    @android.support.annotation.Keep (...);

}

(2)依存パッケージパスの導入
#     rt.jar(jdk  )
-libraryjars 'D:\Program Files\Java\jdk1.8.0_101\jre\lib\rt.jar'
#     android.jar(android SDK  )
-libraryjars 'E:\Android\AndroidSdk\platforms\android-25\android.jar'
#       ,    

#    
-ignorewarnings
#      jar,        ,                   ,           ,      jar
-dontshrink
#    
-keepattributes Signature

ここで注意したいのは、rt.jarが自分でインストールしたjdkのjreパッケージの下で探し、自分のパスに従って構成する必要があることです.android.JArも独自のインストールSDkの経路に従って配置する必要があります.前の構成コードはproguard-rulesに直接コピーされます.Proファイルでいいです.そうしないとコンパイルできません.しかし、それだけでは不十分であり、すべてのコードが混同されるため、対外的なインタフェースもa,bのような関数名と混同され、使用者がインタフェースを見つけることができないため、インタフェースを混同しない必要がある.
(3)混同したくない構成を入れる
実際の状況に応じて選択的に構成
#         ,  com          
-keep class com.csdn.info.**{*;}  

簡単に言えば、これはコンパイラcomに伝えることです.csdn.infoパッケージの下にあるので、ファイルを混同しないで、このように書くこともできます.
-keep class com.csdn.info.**{
    public ;
    public ;
}

これはコンパイラにcomを混同しないように伝えます.csdn.infoパッケージの下にあるので、ファイルのpublic変数と関数.
 
次に直接プロジェクトをコンパイルすると、build/intermediates/bundles/release/classesで混同jarパッケージが生成されます.jarディレクトリにあります.どのようにjarパッケージを生成するかについて、私は前にブログを書いたことがあります.ネット上にも多くの資料があります.皆さんは自分で見てもいいです.
 
Android studioが混同コードをどのように生成するかのjarは終わりです.、
 
簡単です.