我最近开始使用Android(用Java开发两年)并完成了我的第一个应用程序。我用简单的计算器项目做了工作的java代码,它在Android Studio的模拟器上运行正常。然后我做了这个:运行'app'(一切都在模拟器中工作,也通过USB连接到手机上)>搜索生成的apk(没有标志的apk)>转移到我的三星s4迷你(通过USB)>已安装>应用程序在AS模拟器或通过USB连接的手机上运行良好。然后我尝试创建签名的APK,这里有问题。我建立了签名APK(创建了密钥库和所有内容)>转移到手机>安装>运行应用程序,当我启动应用程序时,在我的logcat上弹出此文本:
01-30 20:38:40.738 886-1822/? E/DatabaseUtils: Writing exception to parcel
java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
at com.android.server.am.ActivityManagerService.handleIncomingUser(ActivityManagerService.java:15168)
at android.app.ActivityManager.handleIncomingUser(ActivityManager.java:2492)
at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:688)
at android.content.ContentProvider$Transport.call(ContentProvider.java:325)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:275)
at android.os.Binder.execTransact(Binder.java:404)
at dalvik.system.NativeStart.run(Native Method)
以上是“android.permission.INTERACT_ACROSS_USERS_FULL”上的日志,这看起来很奇怪, 但申请还没有崩溃。
然后我按下(在这个例子中)第五个计算器,它应该在显示器上添加“5”,但是当我按下按钮时,应用程序崩溃了这个日志:
01-30 20:38:40.748 27869-27869/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.cka.kalkulajda, PID: 27869
java.lang.IllegalStateException: Could not find a method five(View) in the activity class com.cka.kalkulajda.MainActivity for onClick handler on view class android.widget.Button with id 'fiveButt'
at android.view.View$1.onClick(View.java:3956)
at android.view.View.performClick(View.java:4640)
at android.view.View$PerformClick.run(View.java:19425)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5593)
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:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoSuchMethodException: five [class android.view.View]
at java.lang.Class.getConstructorOrMethod(Class.java:472)
at java.lang.Class.getMethod(Class.java:857)
at android.view.View$1.onClick(View.java:3949)
at android.view.View.performClick(View.java:4640)
at android.view.View$PerformClick.run(View.java:19425)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5593)
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:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
按下数字5后,这是一个奇怪的部分:无法在活动类com.cka.kalkulajda.MainActivity中找到方法五(View),用于视图类android.widget.Button上的onClick处理程序,其id为“fiveButt” “
我确信关于java代码的一切都是正确的(它适用于模拟器,也适用于未签名的APK,当我不在模拟器上运行项目,但通过手机上的USB运行时),例如在模拟器上按下数字5并且它增加了数字5,但是当尝试按任何按钮 ON SIGNED APK 时,应用程序就会崩溃。
我用谷歌搜索到了,但没有直接回答这个或任何有效的解决方案。
com.cka.kalkulajda是项目...... 五(View)方法附加到按钮的fiveButt ID ......每一个帮助都很高兴 当我在模拟器上运行项目时,TL; DR - 工作.... 在手机上通过USB运行项目时 - 工作...... 安装生成的未签名APK 到手机和运行 - 工作..... 将内置的签名APK 安装到手机并运行 - 使用“bitching”(参见日志),但按下任何按钮应用程序崩溃后(参见日志)
编辑:我正在添加build.gradle app
apply plugin: 'com.android.application'
android {
signingConfigs {
config {
keyAlias 'password'
keyPassword 'passwordd'
storeFile file('D:/KeyStore/key.jks')
storePassword 'passwordd'
}
}
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.cka.kalkulajda"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.1.0'
testCompile 'junit:junit:4.12'
}