当前位置: 首页 > 知识库问答 >
问题:

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

东门晟
2023-03-14

假设我们有Android应用程序,编译自文件A、B、C。我想在屏幕上打印文件A的源代码,如果将来我会对文件A做一些更改,我想打印这个文件的新状态。让我们假设允许从文件B或C打印(文件A不必打印本身)。最直接的方法是什么?

小费。根据我的研究,我认为使用gradle任务是可能的,它在编译之前将src/main/java的复制文件填充到资产。比我们能以“标准”的方式从资产中读取这些文件。但这听起来像是一个变通办法。我不想在我的应用程序中有Java/Kotlin文件的副本。如果我在src/main/java下有类A、B、C,我想从类B中打印例如类A的source而不进行这些操作。

共有1个答案

慎旭尧
2023-03-14

那么为什么要这样做,我们不能打印整个类与所有的函数和变量等?

简单的回答:因为它不需要程序运行,因此被编译器,甚至更多的是被像proguard这样的工具删除。因此,在运行时,您想要访问的代码(您想要其明文)甚至可能不再在结果的.aar中。

Java在一个类文件中编译成字节码,您可以以某种方式读取其中的所有内容。

我们可以很容易地打印例如类名,如这里的示例tutorialspoint.com/java/lang/class_getsimplename.htm

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

 类似资料:
  • 问题内容: 我有一个名为的文本文件,其内容如下: 这个 是 文本 我将如何在Java 7中将确切的文件打印到屏幕上? 问题答案: 在Java 7之前: 添加异常处理 添加关闭流 从Java 7开始,无需关闭流,因为它实现了

  • 我正在尝试使用HttpURLconnection类读取https://example.com/的内容。我已经移除了斜大括号之间的html标记,但是我在移除卷曲大括号之间的单词方面失败了。此外,字与字之间没有需要打印的空格。 如何去除卷边大括号之间的内容?以及如何在句子中的词与词之间放空格?

  • 在python中,我们可以通过使用< code >对象来检查实例的内部。__dict__ 我们如何在或中实现这一点?

  • 我想用java打印当前日期和时间…这是我从java教程中尝试的代码: 它编译得很好。但是给出的输出是: 这就是我编译代码并运行的方式: sou@sou-linux:~/desktop/java$javac datedemo.java sou@sou-linux:~/desktop/java$java DateDemo

  • 问题内容: 我想在Java中打印当前日期和时间。这是我在Java教程中尝试的代码: 它编译良好。但是给出的输出是: 日期@ 15db9742 虽然我期望这样的输出: 2009年5月4日星期一05:51:52 CDT 代码有什么问题? 编辑:我试图重命名该类。编辑的代码: 这就是我编译代码并运行的方式: sou @ sou-linux:〜/ Desktop / java $ javac DateDe

  • 我试图在Swift中打印当前类的名称。更具体地说,我希望实现以下输出: 我可以打印函数名。这是我最近一次打印类名和函数名: 印刷品 而且 印刷品 这两种方法都很接近我想要的,但是路径很长,与我在代码中看到的名称相比,被破坏的类名可能非常不可读。