2016-01-21 85 views
1

我正在嘗試爲我的Android應用程序獲取已簽名的APK。當我通過Android工作室安裝它時,該應用完美運行,但是當我生成簽名的APK並使用該APK安裝應用時,我得到以下異常。任何想法可能會發生什麼?Android - 使用已簽名的APK時應用程序崩潰

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.test/com.app.test.activities.MenuActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equalsIgnoreCase(java.lang.String)' on a null object reference 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420) 
      at android.app.ActivityThread.access$900(ActivityThread.java:154) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:135) 
      at android.app.ActivityThread.main(ActivityThread.java:5292) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699) 
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equalsIgnoreCase(java.lang.String)' on a null object reference 
      at com.app.test.h.a.e(Unknown Source) 
      at com.app.test.activities.MenuActivity.a(Unknown Source) 
      at com.app.test.activities.MenuActivity.onCreate(Unknown Source) 
      at android.app.Activity.performCreate(Activity.java:5990) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2311) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420) 
            at android.app.ActivityThread.access$900(ActivityThread.java:154) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5292) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699) 

這是gradle這個build文件看起來像什麼

buildscript { 
    } 
    apply plugin: 'com.android.application' 

    android { 
     compileSdkVersion 21 
     buildToolsVersion "21.1.2" 
     // that you installed in the SDK manager 

     defaultConfig { 
      applicationId "com.app.test" 
      minSdkVersion 17 
      targetSdkVersion 21 
      versionCode 1 
      versionName "1.0" 
      multiDexEnabled true 
     } 
     buildTypes { 
      release { 
       minifyEnabled true 
       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      } 
     } 
    } 


    repositories { 
     mavenCentral() 
     flatDir { 
      dirs 'libs' 
     } 

     maven { url 'http://maven.livotovlabs.pro/content/groups/public' } 


    } 

    dependencies { 
     compile fileTree(dir: 'libs', include: ['*.jar']) 
     compile 'com.android.support:support-v4:21.0.3' 
     compile 'com.google.android.gms:play-services:6.5.87' 
     compile 'com.google.code.gson:gson:2.3.1' 

     compile 'com.squareup.okhttp:okhttp:2.5.0' 
     compile 'com.squareup.picasso:picasso:2.5.2' 

    } 
+0

你可以發佈MenuActivity嗎? – Raghavendra

+0

它是一個龐大的類,讓我把它上傳到其他網站,並在這裏添加鏈接 – anonymous123

+0

我認爲這不是關於APK。檢查您是否沒有訪問Shared Preferences中的任何內容,這些內容在卸載時沒有得到,並使用簽名的apk重新安裝應用程序。 – DsD

回答

4

您使用ProGuard,你必須啓用它minifyEnabled設置爲true。

buildTypes { 
      release { 
       minifyEnabled true 
       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      } 
     } 

如果您不想使用它,請將minifyEnabled設爲false。否則,請閱讀如何在此處使用proguard http://developer.android.com/tools/help/proguard.html,因爲它會丟棄未在proguard-rules.pro中添加的類文件和其他資源。

+0

我刪除了proguard行,它工作,謝謝 – anonymous123

+0

它不適合我。其他解決方案。 – hitesh141

0

我改變minifyEnabledtruefalse如下:

minifyEnabled false 
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
debuggable false 

,它工作正常。