【发布时间】:2017-02-10 07:44:35
【问题描述】:
在我的 Android 应用程序中,我正在使用 2 个 aar 库。为简单起见,我们将其命名为 cat.aar 和 fish.aar。
cat.aar 支持 64 位。它有 armeabi-v7a 和 arm64-v8a 相关的.so 文件。
cat aar 库在 aar 中不包含 .so 文件,我必须将它们放在应用程序 jniLibs 下。
fish.aar 没有明确支持 64 位。它只有 armeabi 和 armeabi-v7a 相关的.so 文件。鱼 aar 库有.so 文件也在 aar 中。
我的问题
我可以在我的应用程序中独立使用 cat 或 fish aar,并且我的应用程序在 32 位和 64 位设备上运行良好。
当我在应用程序 jniLibs 文件夹下包含与 cat lib 相关的 cat 和 fish aar 和 .so 文件时,fish lib 正在尝试访问应用程序 jniLibs 文件夹下的 .so 文件,但不在其自己的 aar 中。因此,每当我调用 fish lib api 时,应用程序都会在 libs 下出现错误 .so file not found 崩溃。而只要我只使用 cat lib api 而不是 fish lib,应用程序就可以正常运行。
我的 build.gradle 文件见下文。请指导我需要在 build.gradle 中进行哪些更改,以便我能够在我的应用中同时使用 cat 和 fish aar。
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion '24.0.3'
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
defaultConfig {
applicationId "com.samples.fish.fishexplore"
minSdkVersion 21
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
repositories {
flatDir {
dirs 'libs'
}
}
compile(name: 'cat', ext: 'aar')
compile(name: 'fish', ext: 'aar')
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
androidTestCompile 'com.android.support.test:runner:0.5'
androidTestCompile 'com.android.support:support-annotations:25.1.1'
compile 'com.android.support:appcompat-v7:25.1.1'
}
【问题讨论】:
-
解压apk并将目录结构粘贴到这些库的内容中?
标签: android android-studio build.gradle aar