2017-01-02 2 views
1

Я строй приложения в Android, это файл build.gradle:выполнения Сбой задачи «: приложение: transformClassesAndResourcesWithProguardForRelease» Android

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.1" 
    defaultConfig { 
     applicationId "myApp" 
     minSdkVersion 21 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
     multiDexEnabled true 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    packagingOptions { 
     packagingOptions { 
      exclude 'META-INF/DEPENDENCIES.txt' 
      exclude 'META-INF/LICENSE.txt' 
      exclude 'META-INF/NOTICE.txt' 
      exclude 'META-INF/NOTICE' 
      exclude 'META-INF/LICENSE' 
      exclude 'META-INF/DEPENDENCIES' 
      exclude 'META-INF/notice.txt' 
      exclude 'META-INF/license.txt' 
      exclude 'META-INF/dependencies.txt' 
      exclude 'META-INF/LGPL2.1' 
     } 
    } 
} 

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 project(':geth') 
    compile 'com.android.volley:volley:1.0.0' 
    compile 'com.google.android.gms:play-services-maps:10.0.1' 
    compile 'com.android.support:appcompat-v7:25.1.0' 
    compile 'com.android.support:support-v4:25.1.0' 
    compile 'com.android.support:design:25.1.0' 
    compile 'com.android.support:multidex:1.0.1' 
    compile 'org.web3j:core-android:1.1.0' 
    testCompile 'junit:junit:4.12' 
} 

Когда я пытаюсь построить мое приложение, я получаю следующие предупреждения которые приводят к неудачной сборке:

http://pastebin.com/EhMr66Yg

Должен ли я добавить -dontwarn правила для этих предупреждений? Что их вызывает?

неудачу ли сборка из 67 предупреждений или из последнего:

«были 1 неразрешенные ссылки на член библиотеки классов Вы, вероятно, необходимо обновить версию библиотеки..»

Спасибо.

+0

Проверьте журнал событий, чтобы увидеть то, что не удалось. Он находится в правом нижнем углу в Android Studio. –

ответ

1

Проблема связана с проблемой связывания Proguard. ProGuard оптимизирует байт-код, удаляет неиспользуемые инструкции кода и обфускает оставшиеся классы, поля и методы с короткими именами. Затемненный код делает ваш APK трудно перепроектировать, что особенно ценно, когда ваше приложение использует безопасности чувствительных функций

Для получения дополнительной информации о Proguard смотрите здесь: https://developer.android.com/studio/build/shrink-code.html

Proguard конкретные правила для каждой библиотеки используемых в вашем файле build.gradle следует поместить файл «proguard-rules.pro», как показано на скриншоте.

enter image description here

Примечание: Файл ProGuard может быть изменен.

Выполнение правил для написания.

-keep class android.support.v4.app.** { *; } 
-keep interface android.support.v4.app.** { *; } 
-keep class com.actionbarsherlock.** { *; } 
-keep interface com.actionbarsherlock.** { *; } 
-keep class com.android.volley.** { *; } 
-keep interface com.android.volley.** { *; } 
-keep class org.apache.commons.logging.** 
-keepattributes *Annotation* 

-dontwarn org.apache.** 

-keepattributes Annotation,EnclosingMethod,Signature 
-keepnames class com.fasterxml.jackson.* { ; } 
-dontwarn com.fasterxml.jackson.databind. 
-keep class org.codehaus.* { ; } 
-keepclassmembers public final enum org.codehaus.jackson.annotate.JsonAutoDetect$Visibility { 
public static final org.codehaus.jackson.annotate.JsonAutoDetect$Visibility *; } 
-keep public class your.class.* { 
public void set_(_); 
public ** get*(); 
} 

ПРИМЕЧАНИЯ: Для получения дополнительных правил библиотеки Proguard, используйте https://github.com/krschultz/android-proguard-snippets

0

Вы должны использовать следующие.

-dontwarn com.squareup.** 
-dontwarn com.fasterxml.** 

и еще класса, который причиняет warning.These классов могут быть самостоятельным затемненным поэтому вам не нужно применять про-на стражу them.Hope это будет работать для вас.

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