【问题标题】:How to debug the Android App in release mode using Android studio如何使用 Android Studio 在发布模式下调试 Android App
【发布时间】:2015-11-19 11:17:02
【问题描述】:

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

提前致谢

【问题讨论】:

    标签: android android-studio android-debug


    【解决方案1】:

    在您的 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'
        }
    } 
    

    【讨论】:

    • 我已经在我的构建 gradle 中添加了这个。但我没有 signingConfigs.release 文件。我的signingConfig 是signingConfigs.config。如何生成一个用于发布??
    • 我已经添加了这一切,但我的断点仍然没有命中。还有什么可以去掉代码中的断点吗??
    • 删除是什么意思?请在断点处编写代码行
    • 您可以添加release { signingConfig signingConfigs.debug } 以使用您的调试证书签署发布版本。
    【解决方案2】:

    在我的例子中,我创建了与之前版本相同的调试配置并开始调试。这意味着您必须在构建 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'
        }
    }
    

    所以它和release build有相同的标志,你可以在它运行时调试。

    【讨论】:

      【解决方案3】:
       buildTypes {
          release {
          debuggable true
          minifyEnabled true
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
      }
      }
      

      快乐的编码。标记这个答案..如果它有帮助.. :)

      【讨论】:

      • 它就在那里。还是打不中:(
      【解决方案4】:

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

      因此,您可以将调试版本设置为以与发布相同的方式生成,但不清楚您需要的原因是什么,我感觉您正在尝试走错路(即调试通常不是使用 ProGuard,而发布版本是并且 ProGuard 会更改生成的二进制文件,因此您从源代码中的断点无论如何都不会真正起作用。

      【讨论】:

      • 我需要调试一个只影响发布版本的问题,这表明它是由收缩/混淆/优化代码创建的错误。在调试变体上未观察到该问题
      【解决方案5】:

      我认为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...
      

      【讨论】:

      • 将@once2go 答案与您的答案相结合,我可以在部署我的应用程序的release 版本时进行调试。
      • @kip2 如果我想将标签上传到内部测试轨道中的 Google 控制台,这是否有效。我不断收到“应用未签名”错误。
      • @msc87 我不太确定对应用签名的影响,但这个问题的答案可能会让您有所了解:stackoverflow.com/q/39628648/1145905(这可能是资源收缩器的错误 两个 minifyEnabledshrinkResources 标志需要具有相同的值
      【解决方案6】:

      新人只需几分钱。

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-02
        • 2021-09-12
        • 2012-06-30
        • 1970-01-01
        • 1970-01-01
        • 2019-01-10
        相关资源
        最近更新 更多