android – 如何在文件打包时用Gradle删除原始XML文件中的注释

前端之家收集整理的这篇文章主要介绍了android – 如何在文件打包时用Gradle删除原始XML文件中的注释前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的项目在我的 Android项目的原始资源目录中有XML文件

当我打包在.apk文件中时,我想从这些文件删除评论(<! - ... - >):

原始文件样本:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <celebrations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:noNamespaceSchemaLocation="celebrations_schema.xsd">
  4.  
  5. <!-- This is a very important comment useful during development -->
  6. <celebration name="celebration 1" type="oneTime" ... />
  7.  
  8. <!-- This is another very important comment useful during development -->
  9. <celebration name="celebration 2" type="reccurent" ... />
  10. </celebrations>

预期过滤文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <celebrations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:noNamespaceSchemaLocation="celebrations_schema.xsd">
  4. <celebration name="celebration 1" type="oneTime" ... />
  5. <celebration name="celebration 2" type="reccurent" ... />
  6. </celebrations>

我找到了一些有趣的类似解决方here,但我无法管理它的工作.在我的应用程序build.gradle中添加这些行

  1. processResources {
  2. filesMatching('**/myxmlfiletobestrippedfromcomments.xml') {
  3. filter {
  4. String line -> line.replaceAll('<!--.*-->','')
  5. }
  6. }
  7. }

会产生以下错误

  1. Error:(86,0) Gradle DSL method not found: 'processResources()'

对于从java代码打开和解析XML文件,我使用以下方法

  1. InputStream definition = context.getResources().openRawResource(resId);
  2. ...
  3. try {
  4. XmlPullParser parser = Xml.newPullParser();
  5. parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES,false);
  6. parser.setInput(definition,null);
  7. parser.nextTag();
  8. return parseCelebrations(parser);
  9. } finally {
  10. definition.close();
  11. }

解决方法@H_403_28@
默认的xml的评论将不会打包成apk,你可以反编译来测试它.

猜你在找的Android相关文章