从Android项目的包中检索类的列表

我知道使用reflection来获取包中的所有类是不容易的,但是我想知道是否有人知道一个好的解决scheme/解决方法,特别是对于Android项目?

给定一个包,我需要能够从中检索所有的类,并使用reflection来处理它们的注释。

有谁知道一个办法做到这一点? 有没有可用的图书馆?

Related of "从Android项目的包中检索类的列表"

现有的dependency injection解决scheme使用reflection来处理注释,但仍然需要声明资源。 使用reflection来看这个DI的例子 。

如果您使用Ant构build工件,则可以使用Bash或Java读取源目录的内容,并在每次构build时使用它自动重新生成类的完整层次结构。 但是,如果您依赖Eclipse IDE,这可能会变得棘手,因为列表可能会过时,直到您运行另一个Ant构build。 (注意:根据Pyscho,你可以通过改变项目configuration使Eclipse使用Ant,见注释)

另一个选项可能是使用AssetManager处理AndroidManifest文件,但是您将被限制为在该文件中声明的资源。 编译后的类本身在classes.dex文件中被内联和优化,因此你不可能从中得到很多有用的信息。

扫描文件系统作为非Android Java的大多数解决scheme在Android上不会有帮助。 这是一个(理论上的)解决scheme是特定于android的: http : //mindtherobot.com/blog/737/android-hacks-scan-android-classpath/

然而,它仍然是一个黑客,因为Java不幸的是不直接支持这个。

我想你可能会在这里find答案https://stackoverflow.com/a/1457971/1199538有一个Java文件附加,所以你可以下载并尝试它

以下是答案的简短摘录:

此方法只能在以下情况下使用:

你有一个你想要发现的包中的类,这个类叫做SeedClass。 例如,如果要列出“java.io”中的所有类,则种子类可以是java.io.File。

你的类是在一个目录或JAR文件中,它有源文件信息(不是源代码文件,而只是源文件)。 据我所知,除了JVM类(这些类与JVM一起)之外,它几乎可以工作100%。

您的程序必须具有访问这些类的ProtectionDomain的权限。 如果你的程序是在本地加载的,应该没有问题。