2016-02-03 5 views
0

я пытаюсь отключить все журналыProGuard-андроида-оптимизации сборки не удалось

-assumenosideeffects class android.util.Log { 

public static *** v(...); 
public static *** i(...); 
public static *** w(...); 
public static *** d(...); 
public static *** e(...); 

}

-assumenosideeffects class android.util.Log { *; } 

но когда я установил

  proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 

сборки faild ошибки

UNEXPECTED TOP-LEVEL EXCEPTION: 
Error:java.lang.InterruptedException: Too many errors 
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:600) 
... 4 more 
Error:Execution failed for task ':app:transformClassesWithDexForDebug'. 

com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2

с этим proguardFiles getDefaultProguardFile ('ProGuard-android.txt'), 'proguard-rules.pro' его сборки, но бревна видны

Рекомендуемое решение перекомпилировать класс от источника , используя современный компилятор и без указания параметров типа «-target». Вследствие игнорирования это предупреждение состоит в том, что рефлексивные операции над этим классом будут ошибочно показывают, что это не внутренний класс.

Ошибка преобразования нечистоты: com.android.dx.cf.code.SimException: несоответствие типа локальной переменной: попытка установить или получить доступ к значению типа java.lang.Object, используя локальную переменную типа int. Это является симптомом инструментов преобразования .class, которые игнорируют информацию о локальной переменной.

+0

там могут быть некоторые другие ошибки, а также , Пожалуйста, проверьте еще раз. –

+0

check edit qus Предупреждение: Игнорирование атрибута InnerClasses для анонимного внутреннего класса (android.support.v7.widget.by), который не связан с атрибутом EnclosingMethod . этот тип ошибок, возникающих при использовании другого имени пакета (например, android.support.v7.widget.bx), – andro

+0

, показывает, что вы должны сохранить собственные ссылки. Пожалуйста, ваши файлы Proguard –

ответ

2

Для справки используйте proguard, так как во время оптимизации нативные методы должны храниться как есть.

-dontusemixedcaseclassnames 
-optimizationpasses 5 
-allowaccessmodification 
-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 
-keep public class * extends android.preference.Preference 
-keep public class * extends android.support.v4.app.Fragment 
-keep public class * extends android.app.Fragment 
# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native 
-keepclasseswithmembernames class * { 
native <methods>; 
} 
-keep public class * extends android.view.View { 
public <init>(android.content.Context); 
public <init>(android.content.Context, android.util.AttributeSet); 
public <init>(android.content.Context, android.util.AttributeSet, int); 
public void set*(...); 
} 
-keepclasseswithmembers class * { 
public <init>(android.content.Context, android.util.AttributeSet); 
} 
-keepclasseswithmembers class * { 
public <init>(android.content.Context, android.util.AttributeSet, int); 
} 
-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); 
} 
-keep class * implements android.os.Parcelable { 
public static final android.os.Parcelable$Creator *; 
} 

надеюсь, что это поможет.

+0

Это очень популярная, но некорректная конфигурация ProGuard. AAPT automaticalle создает правила для сохранения классов, указанных в манифесте, поэтому действия не будут удалены. Но этот конфиг, например, сохраняет даже абстрактные действия. –

0

Вы могли бы попытаться создать фиктивный Log класс в пакете com.example.mylog с НОП для v,i,w,d,e, а затем использовать этот ProGuard переназначение

android.util.Log -> com.example.mylog.Log 

Wiht вариант -applymapping

Смежные вопросы