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

您能用自定义注释处理器读取/修改/替换AndroidManifest.xml文件吗

韩烈
2023-03-14

我正在研究Android应用程序的自定义注释处理器。

我有一个用例,我希望能够使用注释处理器来读取/修改AndroidManifest.xml并为其中提到的所有活动添加以下意图部分?

        <intent-filter>
            <action android:name="com.my.package.name.my_activity.open"/>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>

这可能吗?

共有1个答案

常英资
2023-03-14

在7:18,Zack介绍了Java中的注释处理,它基本上是这样说的:

  • 在编译时发生
  • 并且不能修改代码,只需生成更多

因此,通过使用barebones注释处理,您不能真正修改已经存在的androidmanifest.xml

    null

如果插件太麻烦,您可以创建一个单独的模块来编写插件,但是对于这个简单的示例,我决定将其直接放在build.gradle.kts中。它不需要是kotlin Gradle文件,但我对kotlin比对Groovy更精通:)

正如您所看到的,我已经在项目的根目录中创建了一个文本testfile.txt

在代码中,我只是导航到它并阅读它;打印它的内容,然后修改它。

您可以使用androidmanifes.xml来做同样的事情。然后,您需要递归地迭代来自srcdir的源文件,查找由特殊注释注释的所有活动,并将所有完全限定的类名存储在列表 中。然后在Androidmanifest中进行必要的替换

注意,在这个基本配置中,Gradle任务出现在Others类别中的Gradle选项卡中,要改变这一点,就有点超出了注释处理的范围。

它可以工作,因为您可以看到文件已经更新,并且println语句在修改文件之前显示文件以前的内容

 类似资料:
  • 我使用抽象处理器创建了一个自定义注释和注释处理器。这意味着我想在编译之前进行注释处理。我将自定义注释和处理器导出为Jar,并尝试将其与简单的java测试程序一起使用。我确信在编译时它会找到我的java处理器类,但不知何故,我并没有得到我在控制台上期望的o/p。下面是我的处理器中处理方法的代码。 此外,我故意使用以便我得到一个版本警告,它确认当我执行一个测试类时,它找到了我的注释处理器。 这里是我的

  • 我正在尝试编写一个注释处理器来插入类上的方法和字段......留档如此稀疏。我走不远,我不知道我是否正确地接近它。 处理环境提供了一个对象,它具有创建新源文件和类文件的方便方法。这些工作正常,但后来我试图弄清楚如何读取现有源文件,它提供的只是“getResources”。所以在我的处理器实现中,我这样做了: 我的第一个困惑是我不禁觉得(获取合格的类型名称并将其转换为包和源文件路径)不是解决问题的好

  • 问题内容: 我想使用Django建立一个简单的热门问题列表。我有一个函数,可以根据一些参数评估每个问题的“ 热度 ”。 功能看起来与此类似(此处为完整功能) 我的问题和投票模型(相关部分) 现在,它是正数或负数。热功能会收到正面投票数和负面投票数以及问题的创建日期。 我已经尝试过类似的方法,但是它不起作用。 我得到的错误是: 我理解该错误,但是我没有正确的方法。 问题答案: 您不能将python函

  • 然而,我很难从数据库视图中获得最近的更新。主要问题是何时向数据库中添加新条目。由于数据库是在初始化处理器时查询的,因此自定义处理器将不会有新的条目。 我尝试在public void onTrigger()函数中实现查询;然而,这将导致管道备份,因为它将对每个flowfile查询数据库(如果每秒有数千个flowfile传入,这就不理想了)。 处理器启动时是否有查询数据库的方法;不在每个flowfil

  • 我想编写自定义Lombok注释处理程序。我知道http://notatube.blogspot.de/2010/12/project-lombok-creating-custom.html.但是当前的lombok jar文件并不包含很多内容。类文件,但文件名为。症状自评量表。取而代之的是龙目山。 我发现,的。SCL. lombok文件是. class文件,Lombok的构建脚本在生成jar文件时重

  • 我对Maven不是很熟悉,我昨天才开始使用它,但我喜欢它。在我的项目中,我使用Log4j2库进行日志记录,由于高级插件(如附加器、转换器)的不足,我需要使用自定义插件。和(还有一堆其他库)作为依赖项添加到与我的项目关联的pom.xml中。实际上,我使用的是Log4J的2.0版。 Log4j使用注释处理预加载标记为的类。据我所知,在log4j的旧版本中,必须在pom.xml中指定附加的插件条目以触发