2016-09-20 82 views
1

使用Android Studio 2.2,當我使用調試版本時,在我的應用程序中切換活動很有效。但是,當我將應用程序發佈到Google Play時,我可以打開應用程序,但嘗試啓動任何其他活動(通過Intent)會使應用程序崩潰。Android relase APK無法加載活動

的build.gradle:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 24 
    buildToolsVersion "24.0.1" 
    defaultConfig { 
     applicationId "net.ddns.opencratebox.mycratebox" 
     minSdkVersion 15 
     targetSdkVersion 24 
     versionCode 5 
     versionName "0.0.5" 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    packagingOptions { 
     exclude 'META-INF/ASL2.0' 
     exclude 'META-INF/NOTICE' 
     exclude 'META-INF/LICENSE' 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:24.2.1' 
    compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.13' 
    compile 'com.google.firebase:firebase-ads:9.4.0' 
    compile 'com.google.android.gms:play-services-ads:9.4.0' 
    compile 'com.firebase:firebase-client-android:2.3.1' 
} 



apply plugin: 'com.google.gms.google-services' 

清單:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="net.ddns.opencratebox.mycratebox"> 

    <uses-permission android:name="android.permission.INTERNET" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="MyCrateBox" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".source.MVC.View.LaunchActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name=".source.MVC.View.RegisterActivity" /> 
     <activity android:name=".source.MVC.View.LoggedActivity" /> 
    </application> 

</manifest> 

我要求的唯一權限是INTERNET,我宣佈它。無論如何,這與開始活動無關。我不知道發生了什麼,因爲調試版本工作得非常好(通過USB電纜直接從android工作室安裝到我的平板電腦)許多朋友也嘗試過,結果相同。

因此,如果我通過Google Play安裝它,它將無法正常工作,但如果通過Android Studio中的USB安裝,則無法正常工作。

任何人有一個想法?

P.S.已經試圖把minifyEnabled假,沒有結果:(我聽說Proguard的可以刪除構造或一段代碼,類似的東西

編輯墜機事件的 堆棧跟蹤:

09-19 20:42:55.127 31614-31614/E/AndroidRuntime:致命異常:主 工藝:

net.ddns.opencratebox.mycratebox,PID:31614 java.lang.IllegalStateException:找不到方法 registerView(查看)中爲Android父母或祖先背景:在android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.resolveMethod上視圖類 android.support.v7.widget.AppCompatTextView ID爲「txvc_register」 的onClick 屬性定義(AppCompatViewInflater.java:327) at android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) at android.view.View.performClick(View.java:5280) at android.view .View $ PerformClick.run(View.java:21239) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:234) at android.app.ActivityThread.main(ActivityThread.java:5526) at java.lang.reflect.Method.invoke(Native Method) at com。 android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit。Java的:616)

應該開始其他活動代碼:

protected void registerView(View view) { 
     Intent intent = new Intent(this, RegisterActivity.class); 
     startActivity(intent); 
    } 

表示點擊按鈕的XML:

<TextView 
     android:id="@+id/txvc_register" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/btn_register" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="42dp" 
     android:clickable="true" 
     android:linksClickable="false" 
     android:onClick="registerView" 
     android:text="@string/or_register" 
     android:textColor="@color/abc_btn_colored_borderless_text_material" /> 
+1

在上傳到Play商店之前,您是否測試了發行版apk? –

+0

你可以使用adb install -r myapp.apk安裝發佈應用程序,並連接調試器並檢查logcat,你將得到有關它崩潰的信息。 – surya

+0

我測試了apk,但在第一次發佈後(不知道我們可以做到這一點),我會嘗試一下,surya謝謝你! – Cratebox99

回答

3

通過簡單地改變我的方法的可見的固定由onClick從受保護的公共名稱調用。

public void registerView(View view) { 
     Intent intent = new Intent(this, RegisterActivity.class); 
     startActivity(intent); 
    } 
+1

請參閱https://developer.android.com/reference/android/view/View.html#attr_android:點擊查看說明這一要求的文檔。 –