Android Gradle:将META-INF复制到META_INF“build / classes / {buildType} /”或在.apk中保留META-INF

时间:2014-01-16 21:55:48

标签: java android gradle apk

将Android Gradle插件版本0.7.3与Gradle 1.9一起使用build / classes / {buildType} / META-INF /的所有内容都从打包的.apk中排除。

请参阅:https://code.google.com/p/android/issues/detail?id=59658 com.android.sdklib.build.ApkBuilder有: 第959行:!folderName.equalsIgnoreCase(“META-INF”)&&

所以为了纠正这个问题,我想将所有文件移到: build / classes / {buildType} / META-INF / - >建立/类/ {buildType} / META_INF / 在打包APK之前。

要生成我的META-INF / services / *文件,我目前正在使用http://metainf-services.kohsuke.org/和... - 它可以正常工作。

dependencies {
    ...
    compile 'org.kohsuke.metainf-services:metainf-services:1.5'
    ...
}

现在我需要在编译过程完成后自动复制它们,并将它们添加到类路径中,但它不起作用。

我正在使用:

android.applicationVariants.all{ variant ->
    variant.javaCompile.doLast{
        println "${buildDir}/classes/${variant.name}/META-INF"
        copy {
            from ("${buildDir}/classes/${variant.name}/META-INF/") {
                include '**/*'
            }
            into "${buildDir}/classes/${variant.name}/META_INF/"
        }
    }
}

什么都没打印出来,也没有被复制。

我还测试了--info和--debug,输出中找不到“META”。

我做错了什么?有没有更好的方法来解决这个问题?

修改

使用以下命令复制文件夹 - 但不存在于.APK中: 有没有办法将其包含在APK中?

android.applicationVariants.all{ v ->
    task "${v.name}CopyFiles" (type: Copy)
    "${buildType.name}CopyFiles" {
        def base = "${buildDir}/classes/${buildType.name}"
        from "${base}/META-INF/"
        into "${base}/META_INF/"
    }

    v.processJavaResources.dependsOn "${buildType.name}CopyFiles"
}

0 个答案:

没有答案