所以我想在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'])
}
运行应用程序时,以下异常告诉我并非所有.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"
编辑:下面是我的文件结构.仅供参考:src是我模块的一个孩子,并且是libs的兄弟.
解决方法:
我想我可以通过切换我的搜索条件找到解决方案,但对于那些犯同样错误的人,我将展示我是如何解决这个问题的.
看来真正的问题是gradle在使用flavorCompile filetree方法时只能处理指定libs文件夹中的jar文件.
您可以通过在android下的sourceSets中指定flavor.jniLibs.srcDir来解决这个问题.对于下面的文件结构(在我拒绝显示的模块中),您可以像这样分隔各种类型的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'])
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。