android gradle mergeDebugAssets

时间:2014-08-11 09:30:37

标签: android gradle

android项目与资产中的文件,这些文件需要在生成器apk之前加密 每次我更改资产中的一些文件, 我需要复制这些文件,加密,然后复制到资产

我想要的是: 将文件保存在资产中并非encypt(可以方便地编辑), 但加密的.apk文件 加密工作由gradle.build自动完成

我的基本想法是在mergeDebugAssets(或mergeReleaseAssets)之前添加一些任务 在mergeDebugAssets之前,我替换文件中的所有文件:// $ MODULE_DIR $ / build / assets

代码如下

task processAssetFile {
    // code : replace file in build/assets 
}
mergeDebugAssets.dependsOn processAssetFile
问题是 mergeDebugAssets在gradle.build中不可用

错误日志如下: 无法找到属性' mergeDebugAssets'在项目':gradle'。

那么有什么想法可以实现我的目标吗? android studio ver:0.52

1 个答案:

答案 0 :(得分:1)

您始终可以按名称查找任务。 我还建议您为其他构建变体执行加密(对于发布而言,比调试更有意义)。 这需要一些编码,因为您还需要为每个变体创建任务。 最好动态创建这些任务,这样您就不会忘记变体。 假设您使用某些命令行工具进行加密,您需要添加的代码可能如下所示:

android.applicationVariants.all { variant ->
    String suffix = variant.variantData.name.capitalize()
    Task mergeAssetsTask = tasks.findByName("merge${suffix}Assets")

    Task processAssetFileTask = tasks.create(name: "process${suffix}AssetFile", type: Exec)
    processAssetFileTask.commandLine "path/to/your/encryption/tool",
        "--input-file=${inputFilePath}",
        "--output-file=${outputFilePath}"

    mergeAssetsTask.dependsOn processAssetFileTask
}