2012-07-30 6 views
7

Ich habe eine einzelne Android-App mit einem benutzerdefinierten Logo, einige benutzerdefinierte JSON-Service-Endpunkte, gelegentlich benutzerdefinierte Text und möglicherweise eine benutzerdefinierte Farbschema.Android - Freigabe von Aktivitäten/Code zwischen verschiedenen Anwendungen

Für meinen Kunden muss diese bestimmte App umbenannt werden und als eine völlig andere App etwa 5-10 mal verteilt werden. Also suche ich nach einer Möglichkeit, die meiste Menge Code wiederzuverwenden - die Aktivitäten und Dienste sind identisch mit Ausnahme der benutzerdefinierten Dinge, die ich erwähnt habe.

Zunächst, wie kann ich Projekte in dem Sinne teilen, dass ein Projekt den gesamten Code (einschließlich Aktivitäten) enthält, und die anderen nur ein paar Werte ändern. Ich kann mir keine kluge Möglichkeit vorstellen, sowohl den Servicecode als auch den Aktivitätscode mit dem gelegentlichen Wert zu teilen, der über die Eigenschaften eingeführt wird.

Haben Android Layout/String-Ressourcen-Dateien die Fähigkeit, von Eigenschaften zu ziehen? Können Aktivitäten in einem Jar gebündelt und mit anderen Projekten geteilt werden?

Antwort

5

Sie können Android-Bibliotheksprojekt verwenden, um den gemeinsamen Code zu teilen. Beginnen Sie mit dem Lesen this Artikel

+0

Vielen Dank das sieht perfekt aus – user842800

0

Sie müssen nicht unterschiedliche Java-Namespaces haben, sie können für alle Projekte gemeinsam sein. Sie müssen nur die Ressourcen ersetzen und das Manifest so ändern, dass es für jede Anwendung einen anderen Namespace enthält. Es gibt kein Problem mit mehreren Anwendungen, die denselben Namen für Klassen haben. Es sei denn, Sie möchten es vollständig umbenennen, so dass der Benutzer nicht feststellen kann, dass es tatsächlich derselbe Code ist.

+0

Das Problem mit diesem Ansatz ist, dass meine Aktivität mit einer 'import com.company.app1.R' Anweisung beginnt; Diese ** R.java ** wird on-the-fly von Android Studio oder ADT erstellt, und ihr Paket wird durch das in ** AndroidManifest.xml ** definierte App-Paket bestimmt. Daher ist das Teilen mit 'com.company.app2' möglicherweise nicht einfach. –