提问人:rysv 提问时间:5/29/2023 更新时间:5/29/2023 访问量:60
如何在 Android gradle 构建期间生成临时文件并从应用程序访问它们
How to generate temporary files during Android gradle build and access them from the app
问:
我在构建过程中生成了一些数据文件(使用自定义 Gradle 插件),我想在 Android 库中访问(即包含在使用此库的 apk 文件中),并且还想确保它们不会显示为 git 中添加的文件。这些文件不应是存储库的一部分,应在生成完成后删除。
我可以生成这些文件并使用src/main/assets
context.assets.open(filename)
但是,这些文件会作为副作用而保留下来。将它们从 gradle 插件中删除(在构建完成后)对我来说似乎并不容易。
是否可以在目录下生成这些文件,以便我可以使用上下文(由应用程序传递)从库中访问它们,但也不会显示为添加的文件。build
git status
以下是插件代码:
import org.gradle.api.Task
import org.gradle.api.execution.TaskExecutionListener
import org.gradle.api.tasks.TaskState
import java.util.regex.Matcher
import java.util.regex.Pattern
class BuildEventsListener implements TaskExecutionListener {
@Override
void beforeExecute(Task task) {
}
@Override
void afterExecute(Task task, TaskState taskState) {
boolean isApp = task.project.plugins.hasPlugin("com.android.application")
if (!isApp) {
return
}
String taskname = task.name
Pattern pattern = (taskname.contains("assemble")) ? Pattern.compile("assemble(\\w*)(Release|Debug)\$")
: Pattern.compile("generate(\\w*)(Release|Debug)\$")
Matcher matcher = pattern.matcher(taskname)
if (matcher.find() && task.hasProperty("project")) {
getData(task.project)
}
}
void getData(Project project) {
String projectDir = project.projectDir.name
String jsonPath = "${projectDir}/src/main/assets/data.json"
BufferedWriter writer = new BufferedWriter(new FileWriter(jsonPath))
writer.write("{")
// write ...
writer.write("}")
writer.close()
}
}
答: 暂无答案
评论