Android Buildumgebung mit Projektabhängigkeiten

A

AndroidTester

Gast
Hallo zusammen,

ich versuche derzeit 3 Projekte miteinander zu kombinieren. Aber aus irgendwelchen mir unbekannten Gründen kann eine Projektabhängigkeit vom ClassLoader nicht geladen werden.

Aus dem Log:
Code:
[2011-11-28 10:38:38 - base-android-test] New emulator found: emulator-5554
[2011-11-28 10:38:38 - base-android-test] Waiting for HOME ('android.process.acore') to be launched...
[2011-11-28 10:38:59 - base-android-test] HOME is up on device 'emulator-5554'
[2011-11-28 10:38:59 - base-android-test] Uploading base-android-test.apk onto device 'emulator-5554'
[2011-11-28 10:39:04 - base-android-test] Installing base-android-test.apk...
[2011-11-28 10:39:17 - base-android-test] Success!
[2011-11-28 10:39:17 - base-android-test] Project dependency found, installing: gal-android
[2011-11-28 10:39:17 - gal-android] Uploading gal-android.apk onto device 'emulator-5554'
[2011-11-28 10:39:18 - gal-android] Installing gal-android.apk...
[2011-11-28 10:39:19 - gal-android] Success!
[2011-11-28 10:39:20 - base-android-test] Project dependency found, installing: base-android
[2011-11-28 10:39:20 - base-android] Uploading base-android.apk onto device 'emulator-5554'
[2011-11-28 10:39:24 - base-android] Installing base-android.apk...
[2011-11-28 10:39:27 - base-android] Success!
[2011-11-28 10:39:27 - base-android] Project dependency found, installing: gal-android
[2011-11-28 10:39:28 - gal-android] Application already deployed. No need to reinstall.
[2011-11-28 10:39:28 - base-android-test] Starting activity com.simpligility.android.helloflashlight.HelloFlashlight on device emulator-5554
[2011-11-28 10:39:29 - base-android-test] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.simpligility.android.helloflashlight/.HelloFlashlight }

Also wie man sieht klappt das eigentlich alles

base-android-test -> das starte ich als Android App
Als android Lib dort eingebunden:
base-android
gal-android

So und wenn die App geladen wurde sehe ich in der LogCat:
11-28 09:39:29.226: E/dalvikvm(366): Could not find class 'de.android.grinxBeanAndroid', referenced from method com.simpligility.android.helloflashlight.HelloFlashlight.onCreate

Das Android Plugin finde ich zwar ohnehin etwas buggy in Eclipse aber ich kann mir das hier nicht erklären.
 

schlingel

Gesperrter Benutzer
Hast du die Projekte per Build-Path zusammengeführt oder über den Android-Dialog? (Wenn du auf's Projekt einen Rechtsklick machst gibt es ein Element "Android" im Kontextmenü. Dort müssen die Android-Libs eingebunden werden.)
 
A

AndroidTester

Gast
Hast du die Projekte per Build-Path zusammengeführt oder über den Android-Dialog? (Wenn du auf's Projekt einen Rechtsklick machst gibt es ein Element "Android" im Kontextmenü. Dort müssen die Android-Libs eingebunden werden.)

Sowohl als auch....

in Java Build Path habe ich die zwei Lib Projekte hinzugefügt, so dass ich in Eclipse keine Syntaxfehlermeldungen mehr habe. -> Hab diesbezüglich schon widersprüchliches im Netz gefunden, dass man das nicht braucht. Allerdings kann ich ohne das wohl kaum meine Klasse adressieren die aus dem Lib Projekt kommt.

D. h. ich habe hier derzeit einen Klassenmember grinxBeanAndroid grinx; stehen evtl. ist das bei Android auch schon verkehrt. Vielleicht werden hier spezielle Framework Singleton benutzt?

Und zusätzlich habe ich wie du schon sagtest in meinem Startprojekt unter Android bei Library diese zwei Lib Projekte stehen. Diese werden ja auch gebaut zumindest liegen apk vor und diese werden hochgeladen nur zur Laufzeit geht etwas schief

Ach ja das betreffende Projekt was bei mir Probleme macht leitet von android.view.View ab.

Was ich alles schon versucht habe lässt sich kurz zusammenfassen:
- uses-library in der AndroidManifest.xml definiert (keine Auswirkung evtl. mit required mal testen)
- activity für die Lib definiert (wobei aus meinem logischen Verständnis her unsinnig da die Klasse ja nicht von Activity ableitet und nur eine View ist)

Also ich vermute mal das ich entweder auf konkrete Objekte des Lib Projekts nicht über die normale Instanzierung zugreife sondern über Utility Funktionen aus Android bzw. mit dem Classloader arbeiten muss.

Wobei ich aber leider nur 1-Projekte Examples gefunden habe.

Wäre super wenn Du mir sagen könntest was ich falsch mache
 

schlingel

Gesperrter Benutzer
Also ich habe in meinem Projekt eine Abhängigkeit zu einem Android-Library-Projekt, zu einem Java-Projekt und zusätzlich noch ein paar Jars eingebunden und das ganze funktioniert fehlerfrei.

Prinzipiell gilt immer: Abhängigkeiten die Android spezifisch sind (also Android-Libraries oder Android-Projekte) als Android-Referenz hinzufügen. Siehe auch Step 4 vom Facebook SDK Tutorial.

Alle anderen Libraries die auch mit ner normalen JavaSE Anwendung laufen würden wie gewohnt per Build Path hinzufügen.

Allerdings verwende ich hier das exklusive Oder, also probier einmal ob es läuft wenn du die Android-Projekte aus dem normalen Eclipse Build Path nimmst.

Wenn es dann noch immer nicht läuft einmal probieren die Proconfig zu ändern. Möglicherweise "optimiert" das Ding deine Klassen weg.
 

Neue Themen


Oben