如何将调试符号添加到 build.gradle

Jan*_*aka 69 debugging android release flutter android-app-bundle

我已经为我的 Flutter 应用程序创建了 android 版本。

然后我创建了一个内部测试版本。它显示警告

此 App Bundle 包含本机代码,并且您尚未上传调试符号。我们建议您上传符号文件,以便更轻松地分析和调试您的崩溃和 ANR。

基本上我要做的是根据他们显示的链接在 build.gradle 文件中添加以下内容。

android.buildTypes.release.ndk.debugSymbolLevel = { SYMBOL_TABLE | FULL }
Run Code Online (Sandbox Code Playgroud)

我假设他们正在谈论的是 android/app/build.gradle 。

不确定我必须在该文件中的确切位置添加这一行。

有人可以指出在哪里添加这一行吗?

Ada*_*dam 99

要使用文档中编写的选项 ndk debugSymbolLevel,您需要一个 android gradle 插件4.1 或更高版本。在撰写本文时,最新的 4.1 版本是4.1.2

您还需要为 android studio安装ndk 和 cmake

在您的 android build.gradle 中,您需要设置 android gradle 插件版本 4.1.2:

buildscript {
    ...
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.2'
        ...
    }
Run Code Online (Sandbox Code Playgroud)

然后在 android/app build.gradle 添加:

...
android {
    ...
    ndkVersion "21.3.6528147" # you see the ndk version in the android studio sdk-manager
    ...
    buildTypes {
        release {
            ...
            ndk {
                debugSymbolLevel 'SYMBOL_TABLE'
            }
        }   
    }
}
Run Code Online (Sandbox Code Playgroud)

然后运行时:flutter build appbundle它应该会在一段时间后完成,并带有两倍大小的 appbundle。

  • gradle-6.5 是最低的。只需更改顶级 gradle 文件中的插件版本:classpath 'com.android.tools.build:gradle:4.1.0' 即可。这将提示修复 gradle 并安装 6.5。请记住,这需要 android studio 版本 4.1 或更高版本。 (3认同)
  • 如果应用程序包的大小增加了一倍,那么 Play 商店中的应用程序的大小也会增加一倍吗? (3认同)
  • 最新 gradle `(4.2.0-alpha12')` 插件所需的最低 `gradle-wrapper.properties` 中的 `gradle-6.6.1-all.zip` (2认同)

Alb*_*rto 28

app/build.gradle 中有两个地方可以指定调试符号与应用程序的绑定。如果您使用android.defaultConfig.ndk.debugSymbolLevel它,它将应用于所有构建类型(即调试和发布构建)。另一方面,如果您使用android.buildTypes.release.ndk.debugSymbolLevel它,它将仅适用于您的发布版本。

这些选项必须app/build.gradle按照您的正确猜测添加到您的文件中。当您看到以这种点状表示法表示的构建属性时,它实际上对应于 中的嵌套块,build.gradle看起来有点像这样:

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId 'com.example.foo'
        minSdkVersion 23
        targetSdkVersion 28
        versionCode 42
        versionName "4.0.2"
        ndk {
            debugSymbolLevel 'SYMBOL_TABLE'
        }
    }
    // Rest of the file
}
Run Code Online (Sandbox Code Playgroud)

HTH

  • 在 Playstore 上哪里可以找到要上传的文件? (3认同)
  • 本机调试符号包含在应用程序包中,但如果您使用 apk,它们位于此处:app/build/outputs/native-debug-symbols/variant-name/native-debug-symbols.zip (3认同)
  • 那不是问题。当用户安装您的应用程序时,混淆器映射和未剥离的库永远不会发送给用户,因此不可能进行逆向工程。它全部安全地存储在 Play Console 中并用于崩溃报告功能。 (3认同)