Обновлена ​​​​студия Android и произошел сбой при сборке Gstreamer

Обновлен до Android Studio 3.0.0 с новым плагином Android Gradle. Пока проект buildin получил сообщение:

What went wrong:
Execution failed for task `':app:externalNativeBuildDebug'`.

Expected output file at `gst-build-arm64-v8a/libgstreamer_android.so` for target `gstreamer_android` but there was none

но файл библиотеки libgstreamer_android.so уже есть. Для нативного кода я использую ndk-build. У кого-нибудь есть эта проблема?


person Valery    schedule 01.11.2017    source источник
comment
У меня точно такая же проблема, и я пытаюсь понять это... Я уже пытался использовать gradle 4.3 вместо 4.1, очистить, перестроить, повторно связать проект... Думаю, я попробую понизить версию Плагин для Android 3.0, пока я не нашел лучшего решения   -  person Eduardo Fernando    schedule 02.11.2017
comment
@EduardoFernando, посмотри на мой ответ, пожалуйста.   -  person Valery    schedule 04.12.2017


Ответы (2)


Добавьте в файл build.gradle цели поля нашего модуля Android.

android { 
  defaultConfig { 
    externalNativeBuild { 
      ndkBuild { 
        targets "name_of_native_module_in_android_mk_file" 
      } 
  ... 
}

Не добавляйте gstreamer_android.

person Valery    schedule 04.12.2017
comment
У меня есть несколько вопросов... Во-первых: это (модуль build.grade: приложение), верно? Во-вторых: мой externalNativeBuild{} не находится внутри defaultConfig {}... он на android {}... Должен ли я стереть его с android{} и поместить на android{defaultConfig{}} ?? В-третьих: внутри externalNativeBuild {ndkBuild { } } есть путь «src/main/jni/Android.mk». Должен ли я сохранить его там или стереть, добавить только команду с целями? В-четвертых: что такое и где находится name_of_native_module_in_android_mk_file? Это в переменной LOCAL_MODULE? - person Eduardo Fernando; 15.12.2017
comment
@EduardoFernando, 1. в модели с использованием gstreamer. 2. externalNativeBuild в приложении содержит путь к файлу Android.mk, externalNativeBuild в конфигурации по умолчанию. Я описал цели (нативные модули) и abi-фильтры. Надеюсь, это поможет. ты - person Valery; 20.12.2017

ОБНОВЛЕНИЕ: ответ Валерия работает!

Устаревший ответ:
Это не идеальное решение, оно просто временное, пока у меня не будет времени более глубоко изучить проблему.< br> Понизьте версию вашего плагина Gradle:

  1. Файл -> Структура проекта
  2. Нажмите «Проект»
  3. At "Gradle version" field put:
    • 3.3
  4. At "Android Plugin Version" field put:
    • 2.3.3
  5. Нажмите "ОК"

Примите сообщения, синхронизируйте проект и т. д. Android Studio может снова вывести окно с запросом на обновление плагина gradle, просто не принимайте его сейчас...
Думаю, обновление в gradle изменился способ создания сборок, возможно, что-то в Android.mk придется изменить или какой-то другой параметр в build.grade...

редактировать: я нашел подсказку по адресу: https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html

Изменения API
Плагин Android 3.0.0 представляет изменения API, которые удаляют определенные функции и могут нарушить работу существующих сборок. В более поздних версиях плагина могут появиться новые общедоступные API, которые заменят неработающие функции.

Изменение выходных данных вариантов во время сборки может не работать Использование Variant API для управления выходными вариантами не работает с новым подключаемым модулем. Он по-прежнему работает для простых задач, таких как изменение имени APK во время сборки, как показано ниже:...

Итак, я думаю, нам следует продолжать использовать временное исправление (не обновленную версию gradle)...

person Eduardo Fernando    schedule 02.11.2017
comment
Я нашел файлы *.so, лежащие по адресу app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/*.so, но не знаю, как их использовать при сборке проекта - person Valery; 28.11.2017