Android Studio Release build 给了我:不幸的是,“App Name”已经停止

Posted

技术标签:

【中文标题】Android Studio Release build 给了我:不幸的是,“App Name”已经停止【英文标题】:Android Studio Release build gives me: Unfortunately, “App Name” has stopped 【发布时间】:2015-03-02 18:49:50 【问题描述】:

我正在开发 android Studio 1.1.0。 构建变体 debug 完美运行,但是当我尝试运行 release 构建变体时,应用程序启动但给我一个“不幸的是,“应用程序名称”已停止。”

我过去已经签署了我的应用程序,也许我错过了一个我完全忘记的简单步骤,我错过了什么?

这是我的build.gradle

apply plugin: 'com.android.application'

android 
    compileSdkVersion 21
    buildToolsVersion "21.1.2"
    defaultConfig 
        applicationId "com.madx.quiz.apf"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    

    signingConfigs 
        release 
            storeFile file('/Users/madx/Documents/Workspaces/Android/APF/app/keystore.keystore')
            storePassword ‘my_store_password’
            keyAlias ‘my_key_alias’
            keyPassword ‘my_key_password’
        
        debug 
    

    buildTypes 
        release 
            signingConfig signingConfigs.release
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            zipAlignEnabled true
        
        debug 
        
    


repositories
// some repositories


dependencies 
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.android.support:support-v13:21.0.0'
    compile 'com.google.code.gson:gson:2.3.1'

事件日志给了我:

19:52:49 Gradle build finished in 3 sec
19:52:50 Session 'app': running

Logcat:

03-02 19:33:11.851  25913-25913/com.madx.quiz.apf I/art﹕ Late-enabling -Xcheck:jni
03-02 19:33:12.840  25913-25946/com.madx.quiz.apf D/OpenGLRenderer﹕ Render dirty regions requested: true
03-02 19:33:12.849  25913-25913/com.madx.quiz.apf D/Atlas﹕ Validating map...
03-02 19:33:12.922  25913-25946/com.madx.quiz.apf I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:410>: QUALCOMM Build: 10/24/14, 167c270, I68fa98814b
03-02 19:33:12.924  25913-25946/com.madx.quiz.apf I/OpenGLRenderer﹕ Initialized EGL, version 1.4
03-02 19:33:12.936  25913-25946/com.madx.quiz.apf D/OpenGLRenderer﹕ Enabling debug mode 0

Gradle 控制台:

Executing tasks: [:app:generateReleaseSources]

Configuration on demand is an incubating feature.
:app:preBuild
:app:preReleaseBuild
:app:checkReleaseManifest
:app:preDebugBuild
:app:prepareComAfollestadMaterialDialogs0612Library UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72103Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV132100Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42103Library UP-TO-DATE
:app:prepareComGithubDanielemaddalunoAndroidupdatecheckerLibrary102Library UP-TO-DATE
:app:prepareReleaseDependencies
:app:compileReleaseAidl UP-TO-DATE
:app:compileReleaseRenderscript UP-TO-DATE
:app:generateReleaseBuildConfig UP-TO-DATE
:app:generateReleaseAssets UP-TO-DATE
:app:mergeReleaseAssets UP-TO-DATE
:app:generateReleaseResValues UP-TO-DATE
:app:generateReleaseResources UP-TO-DATE
:app:mergeReleaseResources
:app:processReleaseManifest UP-TO-DATE
:app:processReleaseResources
:app:generateReleaseSources

BUILD SUCCESSFUL

Total time: 2.4 secs

【问题讨论】:

您希望我们如何在没有堆栈跟踪或相关代码的情况下帮助您? Android Studio 没有返回任何有关停止错误的信息...我不知道为什么。我希望其他人已经遇到过同样的问题。 我是如何在问题中添加事件日志、Logcat 和 Gradle 控制台输出的 【参考方案1】:

尝试在您的发布版本中禁用 ProGuard:

build.gradle

buildTypes 
    release 
        signingConfig signingConfigs.release
        zipAlignEnabled true
    
    debug 
    

问题可能是由 ProGuard 引起的,但是没有堆栈跟踪,我无法真正解决您的问题。

如果你还想用proguard,建议你去寻找更多关于错误的信息,你可以在release字段中添加以下内容:

debuggable true
jniDebuggable true

这样您就可以更好地识别问题。 但是问题可能与 gson 库有关,您应该在 proguard-rules.pro 文件中添加以下行(您可以查看更复杂的示例 here):

# Add any classes the interact with gson
-keepclassmembers class com.madx.quiz.apf.apf.APFQuestion  *; 
-keepclassmembers class com.madx.quiz.apf.apf.APFSubCategory  *; 

###---------------Begin: proguard configuration for Gson  ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature

# For using GSON @Expose annotation
-keepattributes *Annotation*

# Gson specific classes
-keep class sun.misc.Unsafe  *; 
#-keep class com.google.gson.stream.**  *; 

# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.**  *; 

##---------------End: proguard configuration for Gson  ----------

【讨论】:

我试图在发布文件ld中只留下最小的signingConfig signingConfigs.release,但没有任何改变,我已经得到了同样的错误 您发布的 LogCat 输出不完整,如果没有堆栈跟踪,我将无法帮助您。在终端运行adb logcat,找到堆栈跟踪,并发布。 好的,我错了,问题是proguard...我必须为Gson库添加一个规则...让我用完整的步骤来修改你的答案来解决它。如果您接受我的编辑,我会检查您的答案! 很高兴看到您的问题已解决 :-) 很高兴接受我的回答。感谢您的编辑。

以上是关于Android Studio Release build 给了我:不幸的是,“App Name”已经停止的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 从 jar 中排除类或文件

Android Studio 编译release的aarjar包

设置Android studio run release 模式

android studio release和debug的区别

教你如何使用android studio发布release 版本

Android Studio debug使用release的签名