Android Studio 2.0 Preview 5, связывание приложения ndk не позволяет найти модуль .so и .a

У меня есть проект ndk с двумя модулями:

  • abwrenderer — собственный библиотечный модуль
  • app — гибрид нативного и java, приклеивает java к абврендеру

Я только что обновился до AS 2.0 Preview 5 сегодня утром и столкнулся с некоторыми проблемами, связанными с градацией.

Я обновился до gradle-2.10 и переключился на gradle-experimental:0.6.0-alpha5. При попытке отладки запускается сборка ndk, и я сталкиваюсь со следующей проблемой:

Ошибка: ошибка: C:\android\projects\foo\abwrenderer\build\intermediates\binaries\debug\obj\armeabi-v7a\libabwrenderer.so: нет такого файла или каталога

Теперь, когда я был на gradle-2.9 и gradle-experimental:0.6.0-alpha3, библиотеки были собраны в этом каталоге. После утренних обновлений библиотеки теперь находятся в: C:\android\projects\foo\abwrenderer\build\libs\abwrenderer\shared\armeabi-v7a\debug

Есть ли способ обновить место поиска для зависимостей проекта, которые создают библиотеки?

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

android.sources {
    main {
        jni {
           source {
                srcDirs 'src/main/jni'
            }
            dependencies {
                project ":abwrenderer" buildType "debug" linkage "shared"
            }
        }
        jniLibs {
            source {
                srcDirs 'src/main/libs'
            }
        }
    }
}

И build.gradle для проекта abwrenderer выглядит следующим образом:

apply plugin: "com.android.model.native"

model {
    android {
        compileSdkVersion = 23
    }

    android.ndk {
        moduleName = "abwrenderer"
        cppFlags.addAll(["--std=c++11",
                      "-fexceptions",
                      "-frtti"])
        ldLibs.addAll(["android", "EGL", "GLESv3", "log", "dl"])
        stl = "c++_static"
        debuggable = true
    }

    android.sources {
        main {
           jni {
                exportedHeaders {
                  srcDir "src/main/jni"
               }
           }
       }
    }
}

Я аннулировал кеши и перезапустил их, сделал чистую сборку и т. д. Будем очень признательны за любую помощь!


person user4833370    schedule 16.01.2016    source источник
comment
Смотрите вопрос, который я только что задал, синтаксис для репозиториев вверху может быть тем, что вы ищете, чтобы включить статические/общие библиотеки. stackoverflow.com/questions/34959013/   -  person Michael    schedule 23.01.2016
comment
Вы пробовали с gradle-experimental:0.7.0'?   -  person IgorGanapolsky    schedule 26.05.2016


Ответы (1)


В блоках defaultConfig и ndk отсутствовала некоторая информация. Они должны выглядеть примерно так:

defaultConfig { applicationId = 'com.myapp.abwrenderer' minSdkVersion.apiLevel = 13 targetSdkVersion.apiLevel = 23 versionCode = 1 versionName = '1.0' } ndk { platformVersion = 21 moduleName = 'abwrenderer' toolchain = 'clang' stl = 'gnustl_static' cppFlags.addAll(['-std=c++11']) ldLibs.addAll(['android', 'EGL', 'GLESv3', 'log', 'dl']) }

Вы должны взглянуть на следующий пример NDK от Google, чтобы увидеть, как они это сделали: привет-библиотеки

person IgorGanapolsky    schedule 26.05.2016