欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Androidstudio 混淆去掉日志 assumenosideeffects 不起作用

1.gradle

主要看 buildTypes

apply plugin: 'com.android.application'android {    compileSdkVersion 26    buildToolsVersion "26.0.1"    defaultConfig {        applicationId "com.dxiang.demoproguard"        minSdkVersion 16        targetSdkVersion 26        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {        debug {            //Zipalign優(yōu)化            zipAlignEnabled true            // 移除無(wú)用的resource文件            shrinkResources true            //混淆--            minifyEnabled true            //前一部分代表系統默認的android程序的混淆文件,該文件已經(jīng)包含了基本的混淆聲明,后一個(gè)文件是自己的定義混淆文件//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//默認不優(yōu)化            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'//optimize 默認優(yōu)化就是這兩個(gè)區別            //簽名//            signingConfig signingConfigs.release        }        release {            //Zipalign優(yōu)化            zipAlignEnabled true            // 移除無(wú)用的resource文件            shrinkResources true            //混淆--            minifyEnabled true            //前一部分代表系統默認的android程序的混淆文件,該文件已經(jīng)包含了基本的混淆聲明,后一個(gè)文件是自己的定義混淆文件            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'            //簽名//            signingConfig signingConfigs.release        }    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {        exclude group: 'com.android.support', module: 'support-annotations'    })    compile 'com.android.support:appcompat-v7:26.+'    compile 'com.android.support.constraint:constraint-layout:1.0.2'    testCompile 'junit:junit:4.12'}

2。proguard-rules.pro文件

  -keepclassmembers class * extends android.support.v7.app.AppCompatActivity {      public void *(android.view.View);    }  -keep class * implements android.os.Parcelable {   public static final android.os.Parcelable$Creator *;  } -dontwarn android.support.** -keepclassmembers class **.R$* {   public static <fields>; }-assumenosideeffects class android.util.Log {    public static boolean isLoggable(java.lang.String,int);    public static int v(...);    public static int i(...);    public static int w(...);    public static int d(...);   public static int e(...);}-assumenosideeffects class java.io.PrintStream {    public *** println(...);    public *** print(...);}

注釋?zhuān)?/span>

1.去掉log日志:  -assumenosideeffects class android.util.Log {
      public static boolean isLoggable(java.lang.String,int);
      public static int v(...);
      public static int i(...);
      public static int w(...);
      public static int d(...);
     public static int e(...);
  }
2.去掉System.out.println 和System.out.print輸出:  -assumenosideeffects class java.io.PrintStream {
      public *** println(...);
      public *** print(...);
  }

3.assumenosideeffects :assume no side effects:無(wú)副作用的東西

3.assumenosideeffects 不起作用注意點(diǎn):

1. 在gradle中使用的文件錯誤:

    1) //前一部分代表系統默認的android程序的混淆文件,該文件已經(jīng)包含了基本的混淆聲明,后一個(gè)文件是自己的定義混淆文件;

//這兩個(gè)文件是合并關(guān)系;

//  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//默認不優(yōu)化
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'//optimize 默認優(yōu)化就是這兩個(gè)區別

本文使用的是proguard-android-optimize.tx這個(gè)文件,不是Android Studio默認使用的proguard-android.txt

   2) proguard-android.txt 和proguard-android-optimize.txt的區別:

(1).proguard-android.txt 默認不優(yōu)化,而proguard-android-optimize.txt是優(yōu)化的;

   3)一定要注意-dontoptimize,配置。

        (1)don't   optimize 不要優(yōu)化  將會(huì )關(guān)閉優(yōu)化,導致日志語(yǔ)句不會(huì )被優(yōu)化掉,所以不能有這個(gè)配置;

(2)如果有“-dontoptimize”這句話(huà) 一定要將其注釋掉;

 (3)  “2)” 的卻別,就在于proguard-android.txt配置了這句話(huà)“-dontoptimize”,而"proguard-android-optimize.txt"沒(méi)有使用

4.測試

源碼1)

檢驗是否真的能優(yōu)化掉日志。。
  1. public class MainActivity extends Activity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.activity_main);
  6. Log.e("MainActivity", "log" );
  7. }
  8. }

通過(guò)生成的apk反編譯出如下代碼1-1)

  1. public class MainActivity extends Activity
  2. {
  3. protected void onCreate(Bundle paramBundle)
  4. {
  5. super.onCreate(paramBundle);
  6. setContentView(2130903040);
  7. }
  8. }

運行LogCat中沒(méi)有輸出日志。

很明顯Log.e("MainActivity","log" );被優(yōu)化掉了

源碼2)

Log.e("jiese1990", test() );test()函數會(huì )被一起優(yōu)化掉嗎?
  1. public class MainActivity extends Activity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.activity_main);
  6. Log.e("MainActivity", "log " + test());
  7. }
  8. private String test(){
  9. Toast.makeText(this, "test", Toast.LENGTH_SHORT).show();
  10. return "jjyy";
  11. }
  12. }


通過(guò)生成的apk反編譯出如下代碼2-1) 

  1. public class MainActivity extends Activity
  2. {
  3. protected void onCreate(Bundle paramBundle)
  4. {
  5. super.onCreate(paramBundle);
  6. setContentView(2130903040);
  7. //如下是test()函數的代碼
  8. StringBuilder localStringBuilder = new StringBuilder("log ");
  9. Toast.makeText(this, "test", 0).show();
  10. localStringBuilder.append("jjyy").toString();
  11. }
  12. }

運行LogCat中沒(méi)有輸出日志。但是彈出toast。

很明顯Log.e();被優(yōu)化掉了,但是test()方法依然被保留了,

源碼3):

Log.e("jiese1990", test() );test()函數會(huì )被一起優(yōu)化掉嗎?
  1. public class MainActivity extends Activity {
  2. int i = 0;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_main);
  7. Log.e("MainActivity", "log" + test() );
  8. Toast.makeText(this, "i = " + i, Toast.LENGTH_SHORT).show(); //i == 1;
  9. }
  10. private String test(){
  11. i++;
  12. return "test" + i;
  13. }
  14. }


通過(guò)生成的apk反編譯出如下代碼3-1)

  1. public class MainActivity extends Activity
  2. {
  3. private int a = 0; //proguard將代碼混淆后變量i變?yōu)榱薬
  4. protected void onCreate(Bundle paramBundle)
  5. {
  6. super.onCreate(paramBundle);
  7. setContentView(2130903040);
  8. //Log.e()代碼被刪除了,但是調用test()函數里的i++被直接優(yōu)化到這里
  9. StringBuilder localStringBuilder = new StringBuilder("log");
  10. this.a = (1 + this.a);
  11. localStringBuilder.append("test" + this.a).toString();
  12. Toast.makeText(this, "i = " + this.a, 0).show();
  13. }
  14. }

 

運行LogCat中沒(méi)有輸出日志。但是彈出toast 顯示字符串 : "i = 1"

很明顯Log.e();被優(yōu)化掉了,但是test()方法依然被保留了,

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Android代碼混淆配置(Proguard文件解析)
Eclipse與Android源碼中ProGuard工具的使用
Android 防止反編譯 / 混淆代碼
Android Stido配置MultiDex解決65k問(wèn)題,kotlin協(xié)程
Android之代碼混淆
Android APK反編譯詳解
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久