3

我正在构建一个 Java 应用程序,它是某种 Android 应用程序(APK 文件)分析器。

该应用程序将提供的主要功能之一是 Android 布局的“预览”,因此我需要一个 API 来接收 Android 布局 XML 和一些配置参数,例如屏幕分辨率和主题,并返回呈现的布局将出现在运行应用程序的设备上(与真正的 Android 平台的图形一致性很重要)以及 View 对象的位置数据(以允许用户通过单击来选择视图)。在第一阶段,我不希望该功能反映以编程方式进行的布局更改,而只是反映 XML 中定义的 View 对象和资源图形。

我的想法是使用布局编辑器的源代码,例如 ADT 的编辑器或 DroidDraw,并将其集成到我的框架中,但后来我想知道 - 也许更好的方法是使用 android API 本身为我渲染布局(这更好,主要是因为我不需要为更高版本的操作系统重写我的代码)。

所以我的问题是:API 是否允许这样的操作?还是有更好的方法?

欢迎任何建议和见解:)

4

3 回答 3

1

API 是否允许此类操作?

如果您所说的“java 应用程序”是指在您的 PC 上运行的应用程序,那么不是。甚至在 Android API 中调用任何东西都没有直接的方法。我建议您采用集成一些现有源代码的第一种方法。

也就是说,这也不是一项简单的任务。此外,如果您正在分析 APK,您将使用二进制 XML 文件,而不是您在开发时看到的易于阅读的纯文本文件(假设是 ADT/DroidDraw 使用的)。也可能有源代码处理这个问题。

您也可以考虑查看 Android 本身的源代码,但我想您必须重新实现一堆渲染代码,所以这也不是简单的出路。

在第一阶段,我不希望该功能反映以编程方式进行的布局更改,而只反映 XML 中定义的视图对象和资源图形。

以合理的方式反映以编程方式进行的布局更改几乎是不可能的。

于 2013-04-10T17:50:44.387 回答
1

这项任务绝对是可能的,但是,它一点也不简单。我建议看一下 Android Studio 的源代码,更具体地说,有一个名为LayoutLib的工具。

这是 IDE 的布局预览/编辑器用于呈现布局的工具。您可以使用它来呈现您拥有源代码的布局和视图。不幸的是,它没有很好的文档记录,因此您必须从 IDE 的源代码中找出用法。

于 2019-04-16T08:46:24.337 回答
0

开源的Itsnat 可以直接渲染加载的XML Android 布局文件。它有一个示例应用程序,将标准(二进制编译)版本与动态版本进行比较。我对它的工作表明它很好地再现了 LinearLayout/Relativelayout 等的所有怪癖。 https://github.com/jmarranz/itsnat

于 2015-04-03T16:10:54.703 回答