2013-02-13 5 views
5

Das klingt vielleicht wie eine dumme Frage, aber was genau passiert, wenn ich den Ordner/src eines Android-Projekts aus dem Build-Pfad entfernen (nur MainActivity/gen ist übrig) Dort)? Ich kann das Projekt trotzdem kompilieren und ausführen. Was macht der Build-Pfad?Android/Eclipse: Entfernen/src Ordner aus Build-Pfad

Hintergrund: Ich bin ein wenig verrückt nach dem Import eines Maven-Projekts in Eclipse. Es hat die Ordnerstruktur/src/main/package, und wenn ich es importiere, stimmen alle deklarierten Paketnamen nicht überein (offensichtlich ein bekanntes Problem). Mein erster Versuch war, die Pakete einfach in die Ordnerstruktur (direkt nach/src) zu verschieben, bevor das Projekt importiert wurde, aber das gab mir eine Menge anderer Probleme (bezüglich des Imports anderer Pakete).

Zweiter Versuch war (das wurde bei mehreren Fragen zu SO empfohlen), einfach den Ordner/src aus dem Build-Pfad zu entfernen und voila, die Paketdeklarationen funktionieren und es gibt keine Probleme mehr in Eclipse, aber ich bin sehr merkwürdig geworden Problem bei der Laufzeit und ich weiß nicht, ob es mir verwandt ist, den Ordner/src aus dem Build-Pfad zu entfernen.

Edit: Hier ist der Fehler beim Ausführen der App. Ich sollte hinzufügen, dass MyApplication keine Aktivität ist, aber es erweitert Anwendung (verwendet, um Globals zu speichern). Google Maps wird in diesem Projekt verwendet, aber nicht in der ersten Aktivität.

02-20 14:39:34.781: E/AndroidRuntime(1479): FATAL EXCEPTION: main 
02-20 14:39:34.781: E/AndroidRuntime(1479): java.lang.RuntimeException: Unable to instantiate application com.example.myapp.MyApplication: java.lang.ClassNotFoundException: Didn't find class "com.example.myapp.MyApplication" on path: /system/framework/com.google.android.maps.jar:/data/app/com.example.myapp-1.apk 
02-20 14:39:34.781: E/AndroidRuntime(1479):  at android.app.LoadedApk.makeApplication(LoadedApk.java:504) 
02-20 14:39:34.781: E/AndroidRuntime(1479):  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4364) 
02-20 14:39:34.781: E/AndroidRuntime(1479):  at android.app.ActivityThread.access$1300(ActivityThread.java:141) 
02-20 14:39:34.781: E/AndroidRuntime(1479):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1294) 
02-20 14:39:34.781: E/AndroidRuntime(1479):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-20 14:39:34.781: E/AndroidRuntime(1479):  at android.os.Looper.loop(Looper.java:137) 
02-20 14:39:34.781: E/AndroidRuntime(1479):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
02-20 14:39:34.781: E/AndroidRuntime(1479):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-20 14:39:34.781: E/AndroidRuntime(1479):  at java.lang.reflect.Method.invoke(Method.java:511) 
02-20 14:39:34.781: E/AndroidRuntime(1479):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
02-20 14:39:34.781: E/AndroidRuntime(1479):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
02-20 14:39:34.781: E/AndroidRuntime(1479):  at dalvik.system.NativeStart.main(Native Method) 
02-20 14:39:34.781: E/AndroidRuntime(1479): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.myapp.MyApplication" on path: /system/framework/com.google.android.maps.jar:/data/app/com,example.myapp-1.apk 
02-20 14:39:34.781: E/AndroidRuntime(1479):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65) 
02-20 14:39:34.781: E/AndroidRuntime(1479):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
02-20 14:39:34.781: E/AndroidRuntime(1479):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
02-20 14:39:34.781: E/AndroidRuntime(1479):  at android.app.Instrumentation.newApplication(Instrumentation.java:968) 
02-20 14:39:34.781: E/AndroidRuntime(1479):  at android.app.LoadedApk.makeApplication(LoadedApk.java:499) 
02-20 14:39:34.781: E/AndroidRuntime(1479):  ... 11 more 
+0

Wenn Sie einige Details über Ihre sehr seltsam Runtime Problem hinzufügen könnte das könnte Hilf den Leuten festzustellen, ob das Problem mit dem src-Ordner zusammenhängt, der entfernt wird. – NathanTempelman

+0

Verwenden Sie 'File - Import ... - Maven - Vorhandene Maven Projects' um das existierende mavenisierte Android Projekt zu importieren, lesen Sie [diese Antwort] (http: // stackoverflow.com/questions/11921769/do-ich-brauche-zu-installieren-ein-adt-plugin-wenn-ich-will-zu-use-maven/11926069 # 11926069) zu sehen, wie Sie das erforderliche Eclipse-Plugin zu bekommen. – yorkw

+0

sollten Sie das Protokoll veröffentlichen, wo Sie Laufzeitfehler erhalten, könnte aufgrund von Deklarationen in Manifest-Datei – nandeesh

Antwort

0

Zum Teil Ihrer Frage zu beantworten, ich glaube, unabhängig davon, ob der Ordner src gebaut wird, sind die Gen-Dateien und apk, und sie sind von den src-Dateien erstellt. Eine Art Kaskadenbau von dem, was ich verstehe. Ich könnte falsch liegen. Ich habe jedoch nicht viel Erfahrung mit Maven, also konnte ich den Rest nicht beantworten. Hoffentlich kann Ihnen jemand anderes davon erzählen. Viel Glück!

3

"was genau passiert, wenn ich den/src-Ordner eines Android-Projekts aus dem 'build path' entferne (nur MainActivity/gen bleibt dort)?"

Sie erstellen ein „leeres apk“, wo Sie nur den Zugriff auf Ressourcen haben :)

Über Maven, haben Sie zwei Möglichkeiten:

  • Businesses Struktur Maven Quelle und erzählen von Eclipse, wo Quellen sind. Importieren Sie das Projekt als "Vorhandenen Android-Code", dann gehen Sie zu Java Build Path, entfernen Sie den Ordner "src" und fügen Sie die Ordner "src/main/java /" und "src/test/java" hinzu.
  • Arbeiten Sie mit Eclipse-Standard-Paket-Struktur und sagen Sie Maven, wo Quellen sind. In Ihrem pom.xml unter Add folgende Direktive Maven zu sagen, wo es für Quellen aussehen soll: <sourceDirectory>src</sourceDirectory>
+0

"Sie erstellen eine" leere apk ", wo Sie nur Zugriff auf Ressourcen haben :)" Ich glaube nicht, dass das richtig ist, weil ich die Anwendung kompilieren und ausführen kann ... – FWeigl

0

warum nicht installieren ‚M2e‘

importieren Sie dann das Maven-Projekt in Eclipse mit der ‚Einfuhr in Eclipse 'Menü im Eclipse' Explorer '.

dann sollten Sie in der Lage sein, auf 2 Arten zu bauen:

auf der CLI 'mvn' Ziel mit

in Eclipse

Verwandte Themen