Отладка собственного кода не работает в Android Studio 3

Не полагайтесь на заказ. Если они используют какое-то общее состояние, например файловую систему или базу данных, тогда вы должны создать методы setUp и tearDown, которые превратят вашу среду в проверяемое состояние, а затем очистят после запуска тестов. Каждый тест должен предполагать, что среда определена в setUp и не должна делать никаких дополнительных предположений.

0
задан Artem Mostyaev 18 January 2019 в 09:32
поделиться

1 ответ

Сначала проверьте вариант отладки для библиотеки.

Поскольку у вашего build.gradle есть настройка, path "src/main/cpp/CMakeLists.txt", я думаю, он не будет собираться. Так что установите targets, перестройте и проверьте снова.

Если точки останова не работают после сборки, старый мусор может остаться в кэше сборки и вызвать проблемы. Откройте каталог проекта в проводнике и удалите кэш сборки (папка .externalNativeBuild) вручную и снова соберите проект. Я также удаляю папку сборки, так как она содержит .so файлы в промежуточном каталоге, но это необязательно.

Android Studio не очищает библиотеки в тестовом устройстве. Они в основном перезаписываются, но очищают их вручную в зависимости от потребностей. Файлы находятся в / data / app / (имя пакета) / lib / (cpu arch.) /.
Примечание: меню синхронизации в проводнике файлов устройства не синхронизируется должным образом в каталоге lib или (cpu arch.). Для синхронизации выберите / data или / data / app и выберите Synchronize.

NB.1 Если targets опущено, Android Studio, похоже, не создает целей. Встроенный вывод находится в (проект) / приложение / сборка / промежуточные / cmake / (вкус) / obj / (архитектура процессора). Если кажется, что он работает без каких-либо целей, проверьте файлы на устройстве. Они путают результаты испытаний.

NB.2 debuggable true предназначен для сборки выпуска, чтобы включить отладку. Нет необходимости устанавливать его для отладочной сборки, так как флаг отладки установлен по умолчанию.

NB.3 Кажется, что зависит от версии, но Gradle в Android Studio не очищает дерево .externalNativeBuild должным образом, даже если вызывается clean или rebuild, и сбивает с толку конфигурации сборки собственного кода. Это было около AS3.0, насколько я помню.

NB.4 Мое окружение -

  • Android Stuidio 3.2.1
  • classpath 'com.android.tools.build:gradle:3.2.1'
  • [1111 ] gradle-4.7-all
  • CMake: по умолчанию (3.6.4111459)

Я знаю, что есть более новые версии для Android Studio, Gradle и CMake, но они глючат, поэтому я выбрал текущая среда. Насколько я знаю, Android Studio 3.3, gradle: 3.3.0, gradle-4.10.1-all имеют серьезные ошибки в VCS (git). В редакторе отображается неверное содержимое файла, и сборка иногда завершается неудачно. Установка версии CMake на 3.10.x (для меня 3.10.2) также кажется глючной.

Вот копия моего проекта в качестве образца, частично модифицированная от оригинала, но может работать. Я проверил точки останова в работе библиотеки в Android Studio 3.2.1.

apply plugin: 'com.android.library'

android {
    compileSdkVersion 28
    defaultConfig {
        minSdkVersion 23
        targetSdkVersion 28
        versionCode 1
        versionName "0.0.1"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        consumerProguardFiles 'proguard-rules.pro'
        externalNativeBuild {
            cmake {
                cppFlags "-std=c++11"
                arguments "-DANDROID_STL=c++_static"
                targets "sample"
            }
        }
    }

    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
}

dependencies {
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Обновление
целей упоминается здесь Руководство - Link Gradle к вашей собственной библиотеке - укажите дополнительные конфигурации .

0
ответ дан Toris 18 January 2019 в 09:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: