Как добавить символы отладки в build.gradle

Я создал Android-сборку своего приложения Flutter.

Затем я создал релиз для внутреннего тестирования. Показывает предупреждение

Этот пакет приложений содержит собственный код, и вы не загрузили символы отладки. Мы рекомендуем вам загрузить файл символов, чтобы упростить анализ и отладку сбоев и ошибок ANR.

В основном мне нужно было добавить следующее в файл build.gradle в соответствии с отображаемой ссылкой.

android.buildTypes.release.ndk.debugSymbolLevel = { SYMBOL_TABLE | FULL }

Я предполагаю, что они говорят об android / app / build.gradle.

Не уверен, где именно в этом файле мне нужно добавить эту строку.

Может кто подскажет, где добавить эту строчку?


person Janaka    schedule 12.08.2020    source источник
comment
может ли кто-нибудь помочь в этом?   -  person Janaka    schedule 13.08.2020


Ответы (4)


Чтобы использовать параметр ndk debugSymbolLevel, как написано в документах, вам потребуется Android плагин gradle 4.1 или новее. На момент написания последней версии 4.1 была 4.1.2

Вам также потребуется установить ndk и cmake для студии Android.

В вашем android build.gradle вам нужно установить плагин android gradle версии 4.1.2:

buildscript {
    ...
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.2'
        ...
    }

Затем в 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'
            }
        }   
    }
}

когда вы затем запустите: flutter build appbundle, он должен закончиться через некоторое время с набором приложений, размер которого вдвое больше.

person Adam    schedule 16.08.2020
comment
Минимум gradle-6.6.1-all.zip в gradle-wrapper.properties требуется для последней версии плагина gradle (4.2.0-alpha12') - person Pratik Butani; 25.09.2020
comment
gradle-6.5 - это минимум. Просто измените версию плагина: classpath 'com.android.tools.build:gradle:4.1.0' в файле gradle верхнего уровня. Это предложит исправить gradle и установит 6.5. Имейте в виду, что для этого требуется Android Studio версии 4.1 или выше. - person user3508953; 16.10.2020
comment
Потрясающе, спасибо! Вопрос: почему выбирают 'SYMBOL_TABLE' вместо 'FULL'? - person pierrea; 23.10.2020
comment
Привет @pierrea, оба атрибута описаны в первой ссылке ответа. В основном это то, сколько отладочной информации вы хотите включить: Note: There is a 300 MB limit for the native debug symbols file. If your debug symbols footprint is too large, use SYMBOL_TABLE instead of FULL to decrease the file size. - person Adam; 25.10.2020
comment
Знаете ли вы, принимает ли этот параметр конфигурации также нераспакованные символы отладки, упакованные в библиотеку * .aar, которая загружается как артефакт Maven? - person JJD; 03.02.2021
comment
Если appbundle в два раза больше, разве приложение в магазине воспроизведения также удваивает размер? - person kyu; 12.05.2021
comment
Для меня это имело бы смысл. Вы также можете запустить flutter build appbundle --analyze-size, чтобы посмотреть, что внутри. Обычно вы добавляете отладочную информацию в сборку для бета-тестирования, но не в производственную версию. - person Adam; 13.05.2021

В файле 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
}

HTH

person Alberto    schedule 14.08.2020

Используйте Android версии 4.1 и выше, в настоящее время доступны 4.1 RC 3 и 4.2 Canary 13, и аналогичным образом используйте com.android.tools.build:gradle 4.1 и выше, вы можете найти подходящую версию отсюда

Затем используйте эту строку в android - ›defaultConfig в файле build.gradle вашего приложения.

    ndk { debugSymbolLevel 'FULL' }
person Sid.The.Biker    schedule 07.10.2020

Если ни одно из решений не работает, вы также можете создать образец приложения JNI из шаблонов проектов Android Studio. Соберите его и проверьте, успешно ли он был собран и установлен на устройстве.

Я проверил его приложение build.gradle, проверил build.gradle своего Flutter и добавил, чтобы оно работало:

defaultConfig {

    // append below:
    externalNativeBuild {
            cmake {
                cppFlags "-std=c++17"
            }
        }
}

person Michał Dobi Dobrzański    schedule 23.04.2021