Meine Android-Anwendung kann in eine Client-UI-Ebene und eine API-Ebene unterteilt werden. Ich möchte sie als separate "Anwendungen" bereitstellen, so dass die API-Ebene wiederverwendet werden kann.Android: Wie benutze ich "uses-library"?
In Eclipse schreibe ich sie als 2 separate Android-Projekte. Im Client-UI-Projekt deklariere ich das API-Projekt in seinem Erstellungspfad (Projekt -> Properties -> Java Build Path -> Projects).
Bei der Bereitstellung des Client-UI-Projekts über Eclipse (auf meinem tatsächlichen G1-Telefon) wird automatisch das API-Projekt (in APK verpackt) bereitgestellt.
Wenn jedoch die Client-UI Anwendung starten, ich diesen Fehler treffen:
Uncaught handler: thread main exiting due to uncaught exception
java.lang.VerifyError: myapp.android.testuiclient.Main
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1472)
at android.app.Instrumentation.newActivity(Instrumentation.java:1097)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2316)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
at android.app.ActivityThread.access$2100(ActivityThread.java:116)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4203)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
at dalvik.system.NativeStart.main(Native Method)
umsah, es scheint wie ich sollte Uses-Bibliothek unter Anwendung in der Manifest-Datei für den UI-Client erklären.
Frage ist, was sollte ich unter Android setzen: Name für uses-Bibliothek? Dev Guide sagt "der Name der Bibliothek" aber wie heißt die Bibliothek? (Ich meine, in meiner API "Anwendung" habe ich keinen Bibliotheksnamen irgendwo erklärt.)
Vielen Dank! Wie es aussieht, ist Option 1 am besten anwendbar. Ich werde Ihre Projekte als Referenz betrachten. –
Hallo CommonsWare, ich habe mir dein CWAC-Cache-Projekt angeschaut. 1. Ich kann sehen, dass Sie Ant build.xml verwenden, um das JAR zu erstellen und zu assemblieren. Für ein anderes Projekt, das dieses JAR verwendet, richten Sie es in Eclipse so ein, dass (a) zum Zeitpunkt des Codierens/Kompilierens die Abhängigkeit aufgelöst wird und (b) sie zum Zeitpunkt der Bereitstellung in ein einzelnes APK integriert und bereitgestellt werden ? 2. Ich nehme an, dass CWAC-Cache nicht als eigenständiges Programm ausgeführt werden soll (bin ich richtig?). Warum müssen Sie in diesem Fall noch eine Aktivität in der AndroidManifest.xml mit einer MAIN-Aktion und einer LAUNCHER-Kategorie konfigurieren? Ist das erforderlich? –
Einfach: Ich benutze Eclipse nicht. :-) CWAC-Cache hat eine Beispiel-Demo-Aktivität (wenn Sie die APK kompilieren), aber seine primäre Rolle ist das 'ant jar'-Ziel, um die JAR nur des tatsächlichen Caching-Codes zu erstellen, den andere Projekte verwenden können. Die "ant jar" -Task überspringt den Demo-Code (isoliert in einem '.demo'-Unterpaket). – CommonsWare