如何使用Android studio在发布模式下调试Android App

时间:2015-11-19 11:17:03

标签: android android-studio android-debug

出于某种原因,我必须在发布模式下运行我的Android应用程序。我必须在运行应用程序时运行代码,就像我们在调试模式下使用一样。当我在发布模式下运行时,我的断点没有达到,我在清单中添加了android:debuggable="true"。断点还没有打到。任何帮助。

先谢谢

6 个答案:

答案 0 :(得分:25)

在您的gradle文件中,您必须在发布版本中添加可调试功能。

buildTypes {
    release {
        debuggable true
        minifyEnabled false
        signingConfig signingConfigs.release
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
    debug {
        debuggable true
        minifyEnabled false
        applicationIdSuffix '.debug'
    } 
}

signingConfig是发布配置,必须在android {}块的gradle文件中添加,如下所示:

signingConfigs {
    release {
        keyAlias 'YourAppKey'
        keyPassword 'somePassword'
        storeFile file('appkeyfile.jks')
        storePassword 'somePassword'
    }
} 

答案 1 :(得分:9)

就我而言,我已经创建了与之前版本构建相同的调试配置并开始调试。这意味着你必须在build gradle中给出调试版本中的符号构建。

signingConfigs {
    config {
        keyAlias 'abc'
        keyPassword 'xyz'
        storeFile file('<<KEYSTORE-PATH>>.keystore')
        storePassword 'password'
    }
}
buildTypes {
  debug {
      debuggable true
      signingConfig signingConfigs.config
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}

因此它与发布版本具有相同的符号,您可以在运行时进行调试。

答案 2 :(得分:1)

 buildTypes {
    release {
    debuggable true
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}

快乐的编码。把这个答案拿起来..如果它有帮助......:)

答案 3 :(得分:0)

没有&#34;发布模式&#34;。你所指的是构建类型,它意味着在构建过程中采取的步骤(如缩小等)。设置android:debuggable="true"不会自动帮助,因为当你&#34;运行&#34;应用程序而不是&#34; Debug&#34;您没有将调试器连接到它,因此它不会因为特定原因而停止。

所以你可以设置你的调试版本以与发布版本相同的方式生成,但是很不清楚你的需求背后的原因是什么,我觉得你试图走错路(即调试通常不是使用ProGuard,虽然发布版本是,ProGuard会更改生成的二进制文件,因此无论如何您的断点都不会真正起作用。)

答案 4 :(得分:0)

我认为Marcin's argument above是有道理的(很多情况下需要调试发布版本),因此这是对我有用的已接受答案的细微变化:

android {
    ...
    buildTypes {
        release {
            shrinkResources false # this was key
            minifyEnabled false # seems that it can't be set to true if shrinkResources is false
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
}

改编自official docs

注意:

当我设置minifyEnabled true时,在应用启动时发生以下崩溃:

java.lang.RuntimeException: Unable to instantiate application co.mycompany.app.MyApp: java.lang.ClassNotFoundException: Didn't find class "co.mycompany.app.MyApp" on path: DexPathList...

答案 5 :(得分:0)

新人只需几分钱。

如果即使在发布块中添加 debuggable true 后,您的调试点也没有命中。

从发布块中删除以下代码。

    minifyEnabled true 
    shrinkResources true //remove resources
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'