android studioはどのように混同コードのjarを生成します
今日、androidでjarパケットを生成する際にjarパケットのコードを混同し、コアコードを他人に見られないようにする方法について簡単に説明します.
以前、私はリーダーに生成したSDKをパッケージ化し、android studioを使用してインポートした後、すべてのソースコードを見ることができると言いました.その結果、リーダーはこのようにしてはいけないと言って、コアコードは他の人に見せることができません.そこで、jarパッケージのコードを他人に見られないようにネットで検索し、最終的にコアコードを混同することを発見すればできますが、最後に混同に問題があることを発見しました.ここで記録します.
ネット上のこれらの内容はたくさんありますが、分かりにくいです.ここではjarパッケージをどのように混同するかを記録します.
1:指定モジュールのbuildを最初に変更する.gradleファイル、末尾に下記のコード(ネット上のコード)を付ける
説明:ASは自動的にモジュールをパッケージ化する、すなわちbuild/intermediates/bundles/release/classes.JArは、混同作業をしていないだけです.
簡単に言えば、これはproguard-rulesを使用する手動構成です.Proは生成したjarを混同して、私は自分でこのように試みたことがあって、このようにコンパイルして間違っていることを発見して、そこで自分で使った他のコード:
ここでは主にDebugとreleaseバージョンのコンパイルを構成したjarがproguard-rulesを使用しています.Proは混同し、コアコードは:
proguard-android.txtはandroidが持参したドキュメントで、構成する必要はありません.これにより、エンジニアリングをコンパイルすると、自動的に生成されるjarパッケージが混同されますが、proguard-rulesを構成する必要があります.Proドキュメント、そうでなければ直接コンパイルするとエラーが発生します.とbuild.gradle同じディレクトリの下にtxtドキュメントを新規作成し、proguard-rulesというファイル名を変更します.Pro、次に混同された構成を行います.
2:proguard-rulesを構成する.Proファイル
(1)ASが持参したプロトコルを配置する
(2)依存パッケージパスの導入
ここで注意したいのは、rt.jarが自分でインストールしたjdkのjreパッケージの下で探し、自分のパスに従って構成する必要があることです.android.JArも独自のインストールSDkの経路に従って配置する必要があります.前の構成コードはproguard-rulesに直接コピーされます.Proファイルでいいです.そうしないとコンパイルできません.しかし、それだけでは不十分であり、すべてのコードが混同されるため、対外的なインタフェースもa,bのような関数名と混同され、使用者がインタフェースを見つけることができないため、インタフェースを混同しない必要がある.
(3)混同したくない構成を入れる
実際の状況に応じて選択的に構成
簡単に言えば、これはコンパイラcomに伝えることです.csdn.infoパッケージの下にあるので、ファイルを混同しないで、このように書くこともできます.
これはコンパイラにcomを混同しないように伝えます.csdn.infoパッケージの下にあるので、ファイルのpublic変数と関数.
次に直接プロジェクトをコンパイルすると、build/intermediates/bundles/release/classesで混同jarパッケージが生成されます.jarディレクトリにあります.どのようにjarパッケージを生成するかについて、私は前にブログを書いたことがあります.ネット上にも多くの資料があります.皆さんは自分で見てもいいです.
Android studioが混同コードをどのように生成するかの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は終わりです.、
簡単です.