admin管理员组文章数量:1639834
需求背景
- 最近有个需求,在AS中构建APK的时候可以根据配置来决定assets文件夹下面的某个文件是否进行加密,但是这个文件是经常会被修改的,所以必须一致保持明文,且可以随时编辑,只有在build生成apk的时候才需要进行加密
如何实现
- 这个问题我们解决的最好办法就是写一个gradle脚本来实现了
/** * 在每次构建apk时,对assets下的文件进行加密或其他处理 */ android.applicationVariants.all { variant -> //def mergeAssetsDir = variant.mergeAssets.outputDir //gradle 4.x版本以下 def mergeAssetsDir = variant.mergeAssetsProvider.get().outputDir.get() //gradle 5.x版本以上 def file = new File([mergeAssetsDir, "my_assets_config.txt"].join(File.separator)) if (file.exists()) file.delete() //每次构建的时候都将需要处理的问题件删除,这样下面的mergeAssets每次才会触发 variant.mergeAssets.doLast { if (file.exists()) { println("encrpty json") //这里可以编写自己的加密脚本,然后将内容重新写入文件 file.write("我是加密后的内容哦") } } }
-
脚本其实很简单,就是利用了gradle 的构建变体,在mergeAssets任务执行时加入自己的逻辑处理如果每次构建都需要进行处理,则可以每次都将要处理的文件给删除了,这样可以出发mergeAssets的任务执行
-
mergeAssets 这个task 在不同的gradle版本下是不一样的,gradle5.X以上已经变了,所以你需要根据你gradle的版本来确定合并后的assets目录在哪里,这是gradle4.x以下的build构建目录,assets的相对目录获取方式为:variant.mergeAssets.outputDir
gradle5.X以上的build构建目录是这样的,assets的相对目录获取方式为:variant.mergeAssetsProvider.get().outputDir.get()
本文标签: 文件mergeAssetsandroidassets
版权声明:本文标题:使用mergeAssets对Android的assets文件在构建的时候进行修改处理 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1729295988a1194723.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论