У меня есть Android проект, который использует библиотеки с взаимозависимостями:Дубликатов файлов во время упаковки APK или UnsatisfiedLinkError Android
Android приложений зависят от следующих нативных библиотек
- модуля тесс-два (содержащий Тессеракт и leptonica)
- модуль opencv4android
- модуль MyLibrary
MyLibrary также зависит от Tess-два и opencv4android
Ниже приводится build.gradle файл моего приложения Android:
apply plugin: 'com.android.application'
dependencies {
compile fileTree(include: '*.jar', dir: 'libs')
compile project(':libraries:opencv4android')
compile project(':libraries:tess-two')
compile project(':libraries:mylibrary')
}
android {
compileSdkVersion 19
buildToolsVersion "22.0.1"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
// packagingOptions {
// exclude 'lib/armeabi/liblept.so'
// exclude 'lib/armeabi/libtess.so'
// exclude 'lib/armeabi-v7a/liblept.so'
// exclude 'lib/armeabi-v7a/libtess.so'
// exclude 'lib/mips/liblept.so'
// exclude 'lib/mips/libtess.so'
// exclude 'lib/x86/liblept.so'
// exclude 'lib/x86/libtess.so'
// }
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}
Gradle сборки на этой конфигурации завершается с ошибкой duplicate files during packaging of APK
вследствие liblept.so
и libtess.so
дважды копируется.
Когда я раскомментировать варианты упаковки можно построить успешно, однако, я получаю UnsatisfiedLinkError
во время выполнения, так как liblept.so
и libtess.so
не содержатся в APK вообще.
Как я могу получить liblept.so
и libtess.so
для включения в apk ровно один раз?