gpt4 book ai didi

java - 打印源文件的当前内容(在 Android 上使用 Java 或 Kotlin)

转载 作者:行者123 更新时间:2023-12-02 11:19:49 26 4
gpt4 key购买 nike

假设我们有 Android 应用程序,由文件 A、B、C 编译而成。我想在屏幕上打印文件 A 的源代码,如果将来我将在文件 A 中进行一些更改,我想打印该文件的新状态。假设可以从文件 B 或 C 打印(文件 A 不必打印自身)。最直接的方法是什么?

提示。根据我的研究,我认为 gradle 任务是可能的,它在编译之前将复制文件从 src/main/java 填充到 Assets 中。我们可以以“标准”方式从 Assets 中读取这些文件。但这对我来说听起来像是一种解决方法。我不想在我的应用程序中出现重复的 java/kotlin 文件。如果我在 src/main/java 下有类 A、B、C,我想在没有这些操作的情况下从类 B 打印类 A 的源代码。

最佳答案

So why going this way we can't print whole class with all functions and variables etc.?

简单答案:因为程序不需要运行,因此被编译器甚至 proguard 等工具剥离。 。因此,您想要访问的代码(您想要其明文)甚至可能不再在运行时生成的 .aar 中。

Java 被编译为字节码 class file ,您可以以某种方式阅读其中的所有内容。

From my research i think it's possible with gradle task, which fill copy files from src/main/java to assets before compilation. Than we can read these files from assets in "standard" way. But this sound for me like a workaround. I don't want to have duplicates of java/kotlin files in my app. If i have classes A,B,C under src/main/java i want to print e.g source of class A from class B without these operations.

这不是解决方法。您希望在程序中保留编译程序所需的信息,那么您必须自己保留它(即在 .zip 文件或so​​urces.jar 中)。

we can easy print e.g. class name like in sample here tutorialspoint.com/java/lang/class_getsimplename.htm

这是因为此信息对于实例化公共(public)类(即通过依赖注入(inject))是必需的。

关于java - 打印源文件的当前内容(在 Android 上使用 Java 或 Kotlin),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50014667/

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