Projem paketlenmiş benim Android projesinin ham kaynak dizindeki XML dosyaları var olduğunda Gradle ile ham XML dosyalarında yorumları kaldırmak için:dosya
Ben yorumları kaldırmak istiyorum
Orijinal dosya örneği:
bu dosyalardan (<!-- ... -->
) o
.apk
dosya olarak paketlenmiş zaman
<?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>
Beklenen süzülmüş dosyası:
<?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>
bazı ilginç benzer çözümler here bulduk, ama çalışmak için yönetemez. Uygulamamda build.gradle
processResources {
filesMatching('**/myxmlfiletobestrippedfromcomments.xml') {
filter {
String line -> line.replaceAll('<!--.*-->', '')
}
}
}
bu satırları ekleme aşağıdaki hata üretir: açılış ve java kodundan XML dosyası ayrıştırma için
Error:(86, 0) Gradle DSL method not found: 'processResources()'
, aşağıdaki yöntemi kullanın:
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();
}
görünüyor:
Ancak, böyle bir şey için açılış ve benim XML dosyasının ayrıştırma kodunu değiştirmek zorunda kaldı. Bununla birlikte, oluşturma işlemine nasıl ekleneceğinden emin değilsiniz. https://docs.gradle.org/current/userguide/tutorial_using_tasks.html –