【发布时间】:2015-12-08 11:59:54
【问题描述】:
我有一个使用相互依赖的库的 Android 项目:
Android 应用程序依赖于以下原生库
- 模块 tess-2(包含 tesseract 和 leptonica)
- 模块 opencv4android
- 模块库
mylibrary 也依赖于 tess-two 和 opencv4android
以下是我的 Android 应用的 build.gradle 文件:
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')
}
}
由于 liblept.so 和 libtess.so 被复制两次,基于此配置的 gradle 构建失败并出现 duplicate files during packaging of APK 错误。
但是,当我取消注释我可以成功构建的打包选项时,我会在运行时得到一个 UnsatisfiedLinkError,因为 liblept.so 和 libtess.so 根本不包含在 apk 中。
我怎样才能让 liblept.so 和 libtess.so 只包含在 apk 中一次?
【问题讨论】:
标签: android gradle android-ndk android-gradle-plugin