Подтвердить что ты не робот

Родная готовая совместно используемая библиотека в Android Studio с экспериментальным плагином Gradle

Я пытаюсь добавить собственную предварительно созданную общую библиотеку к моему проекту в Android Studio. Я использую gradle -experimental: 0.6.0-alpha5. Однако всякий раз, когда я пытаюсь добавить предварительно созданную общую библиотеку к моей модели приложения, я получаю следующую ошибку:

Ошибка: Причина: org.gradle.api.internal.PolymorphicDomainObjectContainerConfigureDelegate

Библиотека добавляется в модель приложения, как описано в Google Gradle Экспериментальное руководство:

repositories {
    prebuilt(PrebuiltLibraries) {
        binaries.withType(SharedLibraryBinary) {
            sharedLibraryFile = file("/path_to_libs/${targetPlatform.getName()}/shared_lib.so")
        }
    }
}

android.sources {
    main {
        jniLibs {
            dependencies {
                library "shared_lib"
            }
        }
    }
}

Важнейшей линией является библиотека "shared_lib". Нет ошибки, если я раскомментирую эту строку.

Так как это не работает, я также попытался использовать руководство из ph0b.com. Они используют другой синтаксис для добавления собственных разделяемых библиотек (я просто забыл заголовки, так как у меня нет ни одного каталога, включая все заголовки):

repositories {
    libs(PrebuiltLibraries) {
        shared_lib {
            binaries.withType(SharedLibraryBinary) {
                sharedLibraryFile = file("/path_to_libs/${targetPlatform.getName()}/shared_lib.so")
            }
        }
    }
}

android.sources {
    main {
        jni {
            dependencies {
                library "shared_lib" linkage "shared" 
            }
        }
    }
}

Тем не менее, это не работает. Android Studio не копирует файл shared_lib в файл apk. Следовательно, я всегда получаю следующую ошибку:

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader [...] не удалось найти "shared_lib.so"

Может ли кто-нибудь сказать мне, как я могу включить собственную библиотеку prebuild в свой проект? Я использую buildToolsVersion = '22.0.1 'и compileSdkVersion = 22 как параметры сборки.

4b9b3361

Ответ 1

Этот работал у меня (0.6.0-beta6).

repositories {
    prebuilt(PrebuiltLibraries) {
        YourLib {
            binaries.withType(SharedLibraryBinary) {
                sharedLibraryFile = file("src/main/libs/armeabi-v7a/libYourLib.so")
            }
        }
    }
}

android.sources {
    main {
        jniLibs {
            dependencies {
                library "YourLib"
            }
        }
    }
}

Похоже, что они просто забыли упомянуть часть "YourLib {}" вокруг "binaries.withType".