我的Android项目在模拟器上运行并且有效,但是当创建签名APK并在手机上运行时,它就会停止工作

时间:2017-01-30 20:04:35

标签: java android android-studio

我最近开始使用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'
}

0 个答案:

没有答案