2017-04-14 3 views
0

Ich versuche einen Yeoman Projektgenerator für Android zu erstellen, der Parameter von Benutzern übernehmen und die bereits vorhandene Datei entsprechend aktualisieren kann. Wie kann es einen Kesselplattencode in die Datei einfügen oder zur Laufzeit eine Abhängigkeit in build.gradle usw. hinzufügen.Yeoman Generator zum dynamischen Hinzufügen von Code

Zum Beispiel ich prompt Benutzer, wenn er für Fabric-Bibliothek Abhängigkeit hinzufügen möchte, wenn er die Abhängigkeit für diese Bibliothek drückt ja dann

compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { transitive = true; }

sollte in build.gradle hinzugefügt werden und sollte die hinzufügen Code erforderlich, um Setup diese Bibliothek in notwendigen Dateien wie Anwendungsklasse onCreate Methode

Fabric.with(this, new Crashlytics());

und Android.Manife enthalten sollte st sollte

<meta-data android:name="io.fabric.ApiKey" android:value="your key">

enthalten Was ist der beste Weg, um dies zu erreichen?

Dank

Antwort

1

Im Idealfall würden Sie den AST aus der Quelldatei analysieren wollen und ändern. Aber ich weiß nicht, ob Sie AST-Parser für Java-Code finden (für XML-Code sollte es einfach sein).

const source = this.fs.read(this.destinationPath('file-to-modify.xml')); 
const manifest = parseXML(source); // any XML parser will work here 

// Here you write the code to modify the XML source 

this.fs.write(
    this.destinationPath('file-to-modify.xml'), 
    serializeXML(manifest) // with whichever XML serializer you want to use 
); 

Für den Java-Code, wenn es kein richtiger AST-Parser ist, können Sie immer auf regex verlassen, um die neuen Linien in der Code-Folge in einer ähnlichen Weise wie das XML-Beispiel zu injizieren.

Verwandte Themen