Potrzebuję utworzyć bibliotekę Androida, którą mogę dołączyć jako słoik do dowolnej aplikacji na Androida. Używam NetBeans 6.8, wtyczki nbandroid i Android SDK.Jak mogę użyć zewnętrznego słoja w projekcie Android w NetBeans?
Kroki zrobiłem do tej pory to:
1) Tworzenie projektu biblioteki, z android.jar zawarte mieć dostęp do klas Android (biblioteka korzysta android.util.Log i inne zajęcia na Androida).
2) Skompiluj bibliotekę jako słoik.
3) Dodaj słoik biblioteki do aplikacji Android (kliknij prawym przyciskiem myszy Biblioteki pod węzłem projektu i dodaj słoik).
4) Dodaj < używa-biblioteki > do manifestu systemu Android. (błędne i niepotrzebne)
Krok 3 przynajmniej pozwala mi odwoływać się do klas biblioteki w kodzie źródłowym aplikacji, ale wydaje się, że klasy nie są uwzględniane podczas kompilacji. Po uruchomieniu aplikacji pojawia się następujący błąd w dzienniku.
I/dalvikvm( 349): Could not find method mylibrarypackage.MyClass.myMethod, referenced from method myapplicationpackage.HomeActivity.onCreate
W/dalvikvm( 349): VFY: unable to resolve static method 985: Lmylibrarypackage/MyClass;.myMethod()V
D/dalvikvm( 349): VFY: replacing opcode 0x71 at 0x000a
D/dalvikvm( 349): Making a copy of Lmyapplicationpackage/HomeActivity;.onCreate code (160 bytes)
D/AndroidRuntime( 349): Shutting down VM
W/dalvikvm( 349): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
E/AndroidRuntime( 349): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime( 349): java.lang.NoClassDefFoundError: mylibrarypackage.MyClass
E/AndroidRuntime( 349): at myapplicationpackage.HomeActivity.onCreate(HomeActivity.java:58)
E/AndroidRuntime( 349): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime( 349): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
E/AndroidRuntime( 349): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470)
E/AndroidRuntime( 349): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
E/AndroidRuntime( 349): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
E/AndroidRuntime( 349): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 349): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 349): at android.app.ActivityThread.main(ActivityThread.java:4310)
E/AndroidRuntime( 349): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 349): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 349): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime( 349): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
E/AndroidRuntime( 349): at dalvik.system.NativeStart.main(Native Method)
Czy muszę dodać bibliotekę do ścieżki budowy gdzieś indziej? Czy czegoś brakuje?
Nie rozumiem, dlaczego byłaby inna, ale błąd w dzienniku wydaje się wskazywać inaczej, chyba że jest coś, czego mi brakuje. –
Następnie winię wtyczkę NetBeans! ;) Czy to działa, jeśli skompilujesz go z wiersza poleceń za pomocą mrówki? Domyślnie skrypt mrówki dla systemu Android odwołuje się do katalogu 'libs' zawierającego dołączone pliki JAR. –