2015-01-02 2 views
2

В настоящее время я столкнулся с проблемой сбоя приложения при запуске после входа в режим выпуска, , но в режиме отладки он работал нормально.Android: приложение разбилось при запуске после подписания в режиме выпуска

Я не мог понять проблему прямо сейчас, даже если я сделал исследование и держать искать решения, но я до сих пор не удалось сделать это работает

Когда приложение разбился он не показывает в моем приложении LogCat, но не показанные в "нет фильтра"

ошибки были

java.lang.NoSuchFieldError: NO_ACTION 
     at java.lang.reflect.Method.getDefaultValue(Native Method) 
     at java.lang.reflect.Method.getDefaultValue(Method.java:353) 
     at libcore.reflect.AnnotationFactory.getElementsDescription(AnnotationFactory.java:75) 
     at libcore.reflect.AnnotationFactory.<init>(AnnotationFactory.java:112) 
     at libcore.reflect.AnnotationFactory.createAnnotation(AnnotationFactory.java:94) 
     at java.lang.reflect.Field.getAnnotation(Native Method) 
     at java.lang.reflect.Field.getAnnotation(Field.java:209) 
     at com.a.g.a(Unknown Source) 
     at com.a.b.a(Unknown Source) 
     at com.a.b.a(Unknown Source) 
     at com.a.b.onCreate(Unknown Source) 
     at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252) 
     at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164) 
     at com.a.h.c(Unknown Source) 
     at com.a.h.a(Unknown Source) 
     at com.a.a.a(Unknown Source) 
     at com.socialproperty.app.service.AppController.onCreate(Unknown Source) 
     at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007) 
     at com.lbe.security.service.core.client.b.x.callApplicationOnCreate(Unknown Source) 
     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4361) 
     at android.app.ActivityThread.access$1500(ActivityThread.java:138) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1259) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5034) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:805) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:621) 
     at dalvik.system.NativeStart.main(Native Method) 

Gradle Конфигурация

apply plugin: 'android' 

android { 
    signingConfigs { 
     config { 
      keyAlias 'keyalias' 
      keyPassword 'xxxxxxxxx' 
      storeFile file('path to keystore') 
      storePassword 'xxxxxxx' 
     } 
    } 
    compileSdkVersion 19 
    buildToolsVersion '19.1.0' 
    defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 19 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      signingConfig signingConfigs.config 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.google.android.gms:play-services:6.1.+' 
    compile 'com.android.support:appcompat-v7:20.+' 
    compile 'com.android.support:support-v13:21.0.0' 
    compile 'com.android.support:support-v4:21.0.0' 

    compile 'com.squareup.retrofit:retrofit:1.8.0' 
    compile 'com.squareup.picasso:picasso:2.4.0' 
    compile 'com.squareup.okio:okio:1.0.1' 
    compile 'com.squareup.okhttp:okhttp:2.1.0' 
    compile 'com.squareup.okhttp:okhttp-urlconnection:2.1.0' 
} 

ProGuard

-dontwarn retrofit.** 
-dontwarn okio.** 
-dontwarn com.squareup.okhttp.** 
+3

можете ли вы добавить свой конфигурационный файл proguard? – petey

+0

Привет @petey Я просто добавляю правила proguard, а также сборку градиента. –

+0

Используете ли вы отражение? также, если вы не обязательно хотите, чтобы proguard был включен, вы можете исправить ошибку, отключив его «minifyEnabled false». – Cata

ответ

5

Ваша проблема заключается в том, что ProGuard является переименование код и что вы с помощью отражения.

Простейшим решением было бы отключить proguard (установить minifyEnabled на false в вашем файле build.gradle).

Если вы хотите, чтобы proguard был включен, вам необходимо добавить -keep yourclass в свой файл правил proguard. Пример, если я хочу, чтобы сохранить Activity класс:

-keep class android.app.Activity 

Если я хочу, чтобы все android.app пакет:

-keep class android.app.** 

Больше информации на ProGuard here.

+0

спасибо, было полезно :) –

+0

не работает для меня ... я получаю сбой даже после добавления этого .. Зачем? – NarendraJi