2016-06-26 9 views
1

Ich arbeite an einem Android-Projekt (mit Android Studio, Gradle), und ich teile einige Logik und Widgets in Unterbibliothek Projekte.Erstellen Sie Android-Ressourcenbibliothek mit benutzerdefinierten Namespace wie Android.R?

Ich habe festgestellt, dass die R.string.xxx oder andere R Referenzen zusammengeführt werden, aber ich konnte nicht den Ressourcenwert meiner Bibliothek abrufen, wenn sie den gleichen Namen wie das App-Modul hat. (I verwendet [libpacakgename].R.string.appname, aber die Ressource ist immer noch die App-Moduls, nicht die Bibliothek.)

Gibt es eine Möglichkeit, eine Ressource wie eine Android-Ressource verwenden: android.R.string.xxx oder in XML wie myapp:string/xxx, die „myapp“ wird meine benutzerdefinierter Namespace oder Klassenname

Übrigens, ich habe auch festgestellt, dass manchmal attr id Konflikt, Compilierung fehlschlagen kann.

+0

"Gibt es eine Möglichkeit, eine Ressource wie eine Android-Ressource zu verwenden: android.R.string.xxx oder in xml wie myapp: string/xxx, wobei" myapp "mein eigener Namespace oder Klassenname wird" - nicht das Ich bin mir bewusst, dass. Bibliotheken sind ein organisatorisches Werkzeug, aber * alles * in der Bibliothek wird mit der Hauptanwendung zusammengeführt. Die App muss Ressourcen aus einer Bibliothek überschreiben können, da der Wert der Bibliothek für das Szenario der App möglicherweise nicht geeignet ist. Sie können Präfixe und 'public.xml' verwenden, um versehentliche Überschreibungen zu vermeiden, aber das ist es auch schon. – CommonsWare

Antwort

1

Dies ist möglicherweise möglich, indem interne GRADLE-Tasks geändert werden. Dies ist jedoch nicht beabsichtigt.

Eine einfache Lösung besteht darin, Bibliotheksressourcenidentifikatoren mit z.B. der (Paket-) Name.

Verwandte Themen