具有 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
}