The*_*his 4 android build-process gradle
所以我想在flavor文件结构中包含所有文件和子目录.我在这里做的是包含libs文件夹中的所有jar文件,但我也想包含目录.
我试过包括include ['*']
但是没有用.我也寻找了一段时间的答案但是很短暂.完成此任务的正确方法是什么?
dependencies {
//format for including lib files for all flavors
compile fileTree(dir: 'libs', include: ['*.jar'])
//format for including all jars and so's in pdf flavor
//pdfCompile fileTree(dir: 'libs', include: ['*.jar'])
pdfCompile fileTree(dir: 'src/pdf/libs', include: ['*.jar','*.so'])
}
Run Code Online (Sandbox Code Playgroud)
运行应用程序时,以下异常告诉我并非所有.so文件都包含在内.
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.company.appname-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libPDFNetC-v7a.so"
Run Code Online (Sandbox Code Playgroud)
编辑:下面是我的文件结构.仅供参考:src是我模块的一个孩子,并且是libs的兄弟.
我想我可以通过切换我的搜索条件找到解决方案,但对于那些犯同样错误的人,我将展示我是如何解决这个问题的.
看来真正的问题是gradle在使用flavorCompile filetree方法时只能处理指定libs文件夹中的jar文件.
你可以通过flavor.jniLibs.srcDir
在android下指定一个in sourceSets 来解决这个问题.对于下面的文件结构(在我拒绝显示的模块中),您可以像这样分隔各种类型的libs文件.
apply plugin: 'com.android.library'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
publishNonDefault true
defaultConfig {
minSdkVersion 16
targetSdkVersion 21
}
//product flavors merge their respective folders in src with main
productFlavors{
pdf{}
nopdf{}
}
buildTypes {
release{
minifyEnabled false
//proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug{ minifyEnabled false }
}
sourceSets{
pdf.jniLibs.srcDirs = ['src/pdf/libs']
}
}
dependencies {
//format for including lib jar files for all flavors
compile fileTree(dir: 'libs', include: ['*.jar'])
//libs jar files for specific flavor
pdfCompile fileTree(dir: 'src/pdf/libs', include: ['*.jar'])
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11650 次 |
最近记录: |