2017-02-24 9 views
0

"play"ボタンでAndroidスタジオからapk directをインストールすると、署名付きapkに問題があります - >次の問題は表示されません。署名されたApkがクラッシュする、Android Studio経由で直接インストールされない

私は次の例外が表示されたビューをクリックしようとすると、アプリの起動は、何の問題もなく起こってますがされています

java.lang.IllegalStateException: Could not find method openCurrentFeedback(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.Toolbar with id 'toolbar_top' 
at android.view.View$DeclaredOnClickListener.resolveMethod(View.java:4784) 
at android.view.View$DeclaredOnClickListener.onClick(View.java:4748) 
at android.view.View.performClick(View.java:5714) 
at android.view.View$PerformClick.run(View.java:22589) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:7325) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 

私はbuild.gradle、特にpropguardファイルについて何かを聞きました。これはgradle.buildの私の現在の設定です:

apply plugin: 'com.android.application' 

android { 
compileSdkVersion 23 
buildToolsVersion '24.0.0' 
useLibrary 'org.apache.http.legacy' 


defaultConfig { 
    applicationId "com.app.app" 
    minSdkVersion 19 
    targetSdkVersion 23 
    versionCode 7 
    versionName "1.06" 
    //multiDexEnabled true 

} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
    debug { 
     debuggable true 
    } 
} 
packagingOptions { 
    exclude 'META-INF/DEPENDENCIES' 
    exclude 'META-INF/NOTICE' 
    exclude 'META-INF/LICENSE' 
} 
testOptions { 
    unitTests.returnDefaultValues = true 
} 
} 



dependencies { 
compile fileTree(include: ['*.jar'], dir: 'libs') 
compile files('libs/PPJASCommon.jar') 
compile files('libs/easywsdl/ksoap2-android-assembly-3.6.0-jar-with-dependencies.jar') 
compile files('libs/gson/gson-2.2.4.jar') 
//for autoresize of text 
//dependencies for testing 
//junit 4 
testCompile 'junit:junit:4.12' 
//roboeletric for unittests in the jvm without any (emulated) android device 
testCompile 'org.robolectric:robolectric:3.0' 
//mockito 
testCompile 'org.mockito:mockito-core:1.+' 
//power mock, for mock ups 
testCompile 'org.powermock:powermock-module-junit4:1.6.2' 
testCompile 'org.powermock:powermock-api-mockito:1.6.2' 
//robotium for ui tests 
androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.5.4' 
compile 'com.android.support:appcompat-v7:23.3.0' 
compile 'com.android.support:design:23.3.0' 
compile 'org.apache.httpcomponents:httpclient:4.5' 
compile 'com.android.support:support-v4:23.3.0' 
compile 'me.grantland:autofittextview:0.2.1' 

}

そして、私のpropgurard-rule.proエントリ:再度

-keep public class com.app.* 

:私はアンドロイドのスタジオから直接アプリをインストールした場合(署名されたAPKなし)クリック機能は問題なく動作します。

私はアンドロイド6.0.1を実行するsamsung galaxy a5デバイスでテストしています。

誰にもアイデアはありますか?

編集:コメントには十分ではありません評判のために申し訳ありませんopenCurrentFeedback-方法

protected void openCurrentFeedback(View v) { 
    if (globals.isFeedbackRunning()) { 
     Intent intent = new Intent(); 
     intent.setClass(v.getContext(), FeedbackManuallyActivity.class); 
     startActivity(intent); 
    } 
} 
+0

あなたをチェックする必要がありますメソッド 'openCurrentFeedback(View)'を呼び出し、それを実装したレイアウトを確認してください。それが大丈夫かどうかを確認してください。 – FiN

+0

アンドロイドスタジオから同じデバイスに直接アプリをインストールするとうまくいきましたので、大丈夫です。私はこれを行うコードで何も変更しなかった。私はプロバードを疑って、多分何かを取り除いていると思われます。 – user99316

+0

'openCurrentFeedback(View)'メソッドを投稿できますか? – FiN

答えて

0

。私に 理由のクラッシュは、直接このように、ProGuardのは暗号化されたコードと改名し、この方法は、あなたがXMLで宣言された名前に変更し、異なるされ

onclick="openCurrentFeedback" 

を使用するXMLレイアウトでのボタンのように思えます。

あなたが保護された代わりに、公共の、あなたはその方法を維持するためにproguadに追加することがキープしたい場合はいくつかのINFOMATIONは、:

-keep class package.TheClass { 
    protected void openCurrentFeedback(android.view.View); 
} 

とにかく、このanswserクレジットがフィンの:)

関連する問題