android – Gradle包含一个在libs文件夹中的所有文件夹(编译fileTree整个libs文件夹)编辑:为每个风格设置sourcedir这样的文件

所以我想在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'])
    }

转载注明原文:android – Gradle包含一个在libs文件夹中的所有文件夹(编译fileTree整个libs文件夹)编辑:为每个风格设置sourcedir这样的文件 - 代码日志