android - android gradle mergeDebugAssets

标签 android gradle

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

关于android - android gradle mergeDebugAssets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25240037/

相关文章:

android - 发送数据到mySQL数据库

android - Amazon Silk Browser - 移动 Web 开发人员的注意事项

gradle - settings.gradle文件未在Intellij中显示

java - 如何在某些情况下跳过 bmuschko/gradle-docker-plugin 引入的 gradle 任务?

java - Gradle with Eclipse - 资源未被过滤

android - 更新Android Studio RC 2后出现Gradle Build错误-android-sdk-linux'不存在

java - 适用于 Java 的 android-maps-utils?

安卓无法执行dex

android - 适用于移动设备的简单 HTML5 应用程序

java - 如何在 gradle 中定义基于文件的依赖项的源位置