.so файлы, определенные в модуле, не становятся частью окончательного APK - PullRequest
0 голосов
/ 29 октября 2018

Я добавил библиотеку, перейдя на File->New->Import Module. Модуль содержит несколько .so файлов, и почему-то они не являются частью окончательного apk-файла, и приложение вылетает со следующим сообщением об ошибке.

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file

"/ данные / приложение / ком. == / base.apk"], nativeLibraryDirectories = [/ данные / приложение / ком. == / Библиотека / рука, /data/app/com.==/base.apk!/lib/armeabi-v7a, / system / lib, / system / vendor / lib]]] не удалось найти "libAAA.so"

.so файлы определены в следующей структуре в модуле библиотеки.

src ->main ->jniLibs ->arm64-v8a/armeabi/x86/ -> libAA.so/libBB.so

Библиотека Build.gradle

dependencies {
    compile 'com.android.support:support-v4:27.1.1'
    compile fileTree(dir: 'libs', include: '*.jar')
    compile fileTree(dir: "$buildDir/native", include: 'native.jar')
}

task nativeLibsToJar(type: Zip, description: 'create a jar archive of the native libs (*.so files)') {
    destinationDir file("$buildDir/native")
    baseName 'native'
    extension 'jar'
    from fileTree(dir: 'libs', include: '**/*.so')
    into 'lib/'
}

tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn(nativeLibsToJar)
}

Настройка

include ':app', ':myLibrary'

Уровень приложения: build.gradle

android {
    compileSdkVersion 27
    defaultConfig {

    ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }
    }

    productFlavors {
    }

    aaptOptions {
        cruncherEnabled = false
    }

  dexOptions {
        javaMaxHeapSize "4g" //specify the heap size for the dex process
        preDexLibraries false
    }

    lintOptions {
        abortOnError false
    }

}


dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation project(':myLibrary')
}

repositories {

    flatDir {
        dirs 'libs'
    }
}

Я также установил Native Libs Monitor , и он не показывает .so файлы, определенные внутри библиотечного модуля.

1 Ответ

0 голосов
/ 29 октября 2018

Это структура папок:

src ->main ->jniLibs ->arm64-v8a/armeabi/x86/ -> libAA.so/libBB.so

А это раздел NDK:

    ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }

-v8a и -v7a отличаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...