gpt4 book ai didi

android - 在 APK 打包之前运行已编译的 Java 代码

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:44 29 4
gpt4 key购买 nike

我的应用显示了从 APK 中包含的静态 XML 文件创建的项目列表。为了加快速度,我的应用程序在第一次加载时缓存了数据的二进制版本。当应用程序读取缓存的二进制数据而不是 XML 时,它的启动速度快了大约 300 毫秒。

你可以猜到这是怎么回事:我想在构建应用程序时预先计算二进制版本并将其粘贴到 assets 目录中。我想保留 XML 加载器,因为用户可以选择其他 XML 文件并在应用程序中显示这些文件。所以我不想将我的加载程序移到 buildSrc 中,也不想为构建脚本和应用程序依赖构建一个单独的项目。

我已经让 gradle 将我的缓存代码作为一个单独的目标运行,但我不知道要在哪个 Android 构建任务上声明 doLast 以使其在正常构建期间发生。

我应该声明对哪个任务的依赖,以便在构建运行时生成它?我试过 preBuildpackageDebugpackageRelease

task writeBinary() {
doFirst {
print("Writing binary file")
javaexec {
classpath += files("build/intermediates/classes/debug")
classpath += files("build_libs/xpp3-1.1.4c.jar")
main = "ehues.tome.loader.BinaryReaderWriter"
args = ['src/main/assets/standard/my.xml', 'src/main/assets/standard/my.bin']
}
}
}

最佳答案

这通常是一个有问题的方法;只是不要使用 assetsres/raw 并让 AAPT2 自动处理您的资源- 而不是试图重新发明轮子。

重点是,assetsres/raw 没有被处理,而只是被复制。

如果您真的想创建二进制格式,可以通过运行 aapt2aapt2.exe 来完成。 Gradle Exec 任务可以运行终端命令 - 然后可以将此类任务添加到图中:

aapt2 compile path-to-input-files [options] -o output-directory/

但是,提供适当的资源 XML 格式会导致它自行处理这一切。

关于android - 在 APK 打包之前运行已编译的 Java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57022353/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com