Wie man Kommentare in rohen XML-Dateien mit Gradle entfernt, wenn die Datei verpackt ist

Mein Projekt haben XML-Dateien im Roh- Ressourcen-Verzeichnis meines Android-Projekts:

Projektaufbau

Ich möchte Kommentare ( <!-- ... --> ) aus diesen Dateien entfernen, wenn es in .apk Datei verpackt ist:

Original-Datei:

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

Erwartete gefilterte Datei:

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

Ich habe hier einige interessante ähnliche Lösungen gefunden , aber ich kann es nicht schaffen, zu arbeiten. Hinzufügen dieser Zeilen in meine App build.gradle

 processResources { filesMatching('**/myxmlfiletobestrippedfromcomments.xml') { filter { String line -> line.replaceAll('<!--.*-->', '') } } } 

Erzeugt den folgenden Fehler:

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

Zum Öffnen und Analysieren der XML-Datei aus Java-Code verwende ich die folgende Methode:

 InputStream definition = context.getResources().openRawResource(resId); ... try { XmlPullParser parser = Xml.newPullParser(); parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false); parser.setInput(definition, null); parser.nextTag(); return parseCelebrations(parser); } finally { definition.close(); } 

  • Kann CI-Referenz gradle.properties Anmeldeinformationen kreieren?
  • Konnte die Eigenschaft 'processManifest' nicht finden auf com.android.build.gradle.internal.api.ApplicationVariantImpl
  • Verwenden Sie verschiedene Ressourcen für verschiedene Anwendungs-Aromen mit Gradle
  • Verwenden von Gradle, um externe Bibliotheken in getrennten Dex-Dateien zu teilen, um Android Dalvik 64k Methoden zu beheben
  • Alle com.android.support Bibliotheken müssen die exakt gleiche Version verwenden
  • Überschreiben Sie die Java-Version beim Erstellen eines Cordova-Projekts mit gradle
  • Wie kopiere oder benutze native libs mit Android Studio Gradle bauen?
  • Android - Manifest Platzhalter für verschiedene Build-Typen
  • 2 Solutions collect form web for “Wie man Kommentare in rohen XML-Dateien mit Gradle entfernt, wenn die Datei verpackt ist”

    Default xml's Kommentar wird kein Paket in apk, können Sie dekompilieren, um es zu testen.

    Ich habe mein Problem gelöst, indem ich meine Datei in das Verzeichnis res\xml . In diesem Fall ist die XML-Datei "kompiliert" und ist nicht lesbar, wenn ich das APK-Archiv öffne.

    Allerdings musste ich die Eröffnung und den Parsing-Code meiner XML-Datei ändern, um so etwas wie dies:

     XmlResourceParser xmlResourceParser = context.getResources().getXml(resId); ... // I had to add this line (to skip START_DOCUMENT tag, which was not needed // with opening from the `raw` directory) while (xmlResourceParser.next() != XmlPullParser.START_TAG); return parseCelebrations(xmlResourceParser); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.