Bedingte Ressourcenaufnahme / -ausschluss für Android apk build

8

Ich komme immer wieder auf dieses Problem zurück, da es keine saubere Lösung zu geben scheint. Hat jemand eine gute Strategie, Ressourcen von einem Kindprojekt in Android auszuschließen?

Ich habe zwei Szenarien:

1 - Das Basisbibliotheksprojekt hat Lokalisierungsdateien für en, es, etc.

- Kindprojekt 1 verwendet alle Lokalisierungen und alles ist gut

- Kindprojekt 2 ist nur auf Englisch lokalisiert, aber die endgültige .apk würde aufgrund der Elternressourcen teilweise lokalisiert sein (obwohl ADT19 oder so Lint-Regeln hinzugefügt haben, um Sie davor zu warnen / zu hindern).

Die einzige Lösung, die ich jetzt habe, ist, eine separate Elternbibliothek für die Lokalisierung zu haben und sie nur in das untergeordnete Projekt 1 aufzunehmen. Das ist ein großer Schmerz, wenn Sie viele Bibliotheksprojekte haben.

2 - Ausschluss von bauspezifischen Ressourcen. Ich habe ein paar Bilder, die nur für meine Nook-spezifischen Builds meiner Apps benötigt werden, die durch eine Flagge ausgelöst werden. Bedingter Code funktioniert gut, aber die Ressourcen sind immer enthalten.

Ich würde es vorziehen, für JEDES meiner Apps kein weiteres untergeordnetes Projekt zu erstellen. Gibt es eine Möglichkeit, ein Build / Compile-Flag zu setzen, um bestimmte Bildressourcen auszuschneiden, damit sie nicht in die endgültige .apk gelangen?

Das zweite Problem mag spezifisch für mich sein, aber ich bin überrascht, dass ich beim ersten Punkt keine gute Diskussion finden kann. Gibt es keine anderen Entwickler, die nur einige Apps lokalisieren? Oder ignorieren die meisten Leute das Problem?

    
ProjectJourneyman 02.07.2012, 22:26
quelle

1 Antwort

3
  

1 - Das Basisbibliotheksprojekt hat Lokalisierungsdateien für en, es, etc.

Sie haben zwei Projekte, die diese Bibliothek verwenden, und nur eine von ihnen benötigt alle Übersetzungen. Daher könnten diese Übersetzungen in dem Projekt sein, das die Bibliothek verwendet und die Übersetzungen benötigt, nicht in der Bibliothek selbst. Dies unterscheidet sich nicht von anderen Projekten, die Ressourcen einer Bibliothek anpassen (z. B. Ersetzen von Symbolen, Ersetzen von Layouts).

Wenn Sie jetzt anfangen, kompliziertere Mischungen zu erstellen (z. B. benötigen zwei Projekte die Übersetzungen und eine dritte nicht), dann beginnen Sie mit Problemen.

  

Ausschluss von Build-spezifischen Ressourcen. Ich habe ein paar Bilder, die nur für meine Nook-spezifischen Builds meiner Apps benötigt werden, die durch eine Flagge ausgelöst werden. Bedingter Code funktioniert gut, aber die Ressourcen sind immer enthalten.

Xav und ich haben in dieser Ausgabe über bedingte Ressourcen gechattet. Sein Fokus liegt auf Debug vs. Produktion (Ressource entspricht BuildConfig.DEBUG ), aber es klingt wie etwas flexibler ist eine Möglichkeit.

Diese beiden Dinge könnten von einem benutzerdefinierten Release-Build-Skript verarbeitet werden. In normalen Debug-Builds würden Sie alles in Ruhe lassen. In einem Produktions-Build muss ein Ant-Skript eine Kopie des Projekts abarbeiten und nicht benötigte Verzeichnisse vor dem Kompilieren, Signieren und Zip-Aligning ausschneiden.

    
CommonsWare 02.07.2012, 22:47
quelle

Tags und Links