У меня есть зависимость .jar
, которая поставляется с библиотекой .so
.
library.jar
|
-----com/company
|
-----.class files
-----libs
|
-----libX.so
Jar использует эту библиотеку .so
для внутреннего использования, и я создаю приложение для Android, котороеиспользует jar.
Все хорошо, пока я не собрал apk: исследуя его с помощью 7zip, я обнаружил, что файлы .so
исчезли, что приводило к всевозможным ошибкам при использовании приложения.
Так есть ли способ сказать Gradle не исключать файлы .so
при сборке?Я не хочу копировать их вручную в папку в моем Android-проекте, поскольку я не использую их напрямую, но библиотека .jar
загружает их.
Редактировать 1: Добавление build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.company.myapp"
minSdkVersion 24
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:design:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation files('libs/lib1.jar')
implementation files('libs/lib2.jar')
}
Редактировать 2: Вот решение, следуя предыдущим предложениям @ shizhen
1- Мои .jar
включали файлы .so
в *Каталог 1026 *.Мне пришлось переименовать это в lib
.
2 - я распаковал .jar
, чтобы собрать файлы .so
.
3 - я создал папку src/jniLibs
и поместил .so
файлов, каждый в соответствующей папке <ANDROID_ABI>
.
4 - Я изменил файл build.gradle
, добавив в него:
android {
...
sourceSets {
main {
jni.srcDirs = []
jniLibs.srcDir 'src/jniLibs'
}
}
}
5 - Et voila!Последний .apk
теперь включает нативные библиотеки.