如何使用Android Studio在发布模式下调试Android应用程序

stszievb  于 2022-11-25  发布在  Android
关注(0)|答案(7)|浏览(257)

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

kxkpmulp

kxkpmulp1#

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

yfjy0ee72#

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

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

ovfsdjhp

ovfsdjhp3#

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

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

cczfrluj

cczfrluj4#

给新来的几个便士。
即使在release区块中加入debuggable true之后,您的两柴点也不会命中。
从释放块中移除以下代码。

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

nwsw7zdq5#

没有“发布模式”。你指的是构建类型,这意味着在构建过程中采取的步骤(如缩小等)。设置android:debuggable="true"不会自动帮助,因为当你“运行”应用程序而不是“调试”时,你没有连接调试器,所以它不会因为特定的原因而停止。
这样你就可以
将您的调试版本设置为以与发布相同的方式生成
但是很不清楚你的需求背后的原因是什么,我有一种感觉,你试图走错路(即调试通常不使用ProGuard,而发布版本是和ProGuard改变结果二进制,所以你的断点从源代码将不会真正工作)。

pn9klfpd

pn9klfpd6#

我认为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'
        }
    }
}

改编自官方文件
注意事项:
当我设置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...
nkkqxpd9

nkkqxpd97#

在2022年,或至少在我的情况下

我尝试了许多解决方案,但没有工作,最后解决方案是创建一个新的签名密钥,并使用它与所有构建类型和变体。

步骤

1 -转到AndroidStudio顶部菜单,选择Build>Generate Signed Bundle /APK > (choose APK )

  • 第一次创建一个新密钥(您知道如何创建一个密钥吗?或者阅读文档)

但是请注意,当您创建密钥时,请选择构建类型debug,然后继续
2 -再次进入AndroidStudio顶部菜单,选择Build > Generate Signed Bundle /APK > (choose APK),但这次选择现有密钥(我们在上一步中创建的密钥)
在上一步中,我们选择了构建类型debug,这次选择release并继续。
3 -使用AAB重复步骤1和2(发布和调试)
这基本上是确保所有构建类型都使用相同配置进行签名。

注意事项

也许你需要添加下面的代码到app build.gradle

android {

    ...

    signingConfigs { <-- Add this
        config {
            storeFile file('PATH_TO_KEY.jks')
            storePassword 'YOUR PASSWORD'
            keyAlias 'YOUR KEY ALIAS'
            keyPassword 'YOUR PASSWORD'
        }
    }

   ... 

   buildTypes {

        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

            signingConfig signingConfigs.config <-- this
        }

        debug {
            signingConfig signingConfigs.config <-- this
        }
    }

}

相关问题