具有 Assets 中文件的android项目,这些文件需要在生成器apk之前加密
每次我更改 Assets 中的某些文件时,
我需要复制这些文件,加密,然后复制到 Assets 中

我想要的是:
将文件保存在非加密 Assets 中(可以方便地对其进行编辑),
但是.apk中的文件已加密
加密工作由gradle.build自动完成

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

如下代码

task processAssetFile {
    // code : replace file in build/assets
}
mergeDebugAssets.dependsOn processAssetFile

问题是
在gradle.build中没有mergeDebugAssets

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

那么有什么想法可以实现我的目标吗?
Android Studio版本:0.52

最佳答案

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

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
}

07-28 01:31