我需要創建一個Android庫,我可以將它作爲jar包含在任何Android應用程序中。我使用NetBeans 6.8,nbandroid插件和Android SDK。如何在NetBeans的Android項目中使用外部jar?
我把到目前爲止的步驟是:
1)創建庫項目,包括的android.jar能夠訪問到Android類(庫使用android.util.Log和其他Android類)。
2)將庫編譯爲jar。
3)將庫的jar添加到Android應用程序(右鍵單擊項目節點下的Libraries並添加jar)。
4)將<使用庫>添加到Android清單。(錯誤的和不必要的)
第3步至少允許我在應用程序的源代碼中引用庫的類,但這些類實際上並沒有在編譯時被包含。當我運行該應用程序時,在日誌中出現以下錯誤。
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)
是否必須將庫添加到構建路徑的其他位置?我錯過了什麼嗎?
我不明白爲什麼它會有所不同,但在日誌中的錯誤似乎表明,否則,除非有其他東西我失蹤。 – 2010-01-13 21:47:12
然後我責備NetBeans插件! ;)如果你使用ant從命令行編譯它,它會工作嗎?我想默認情況下,Android Ant腳本爲包含的JAR引用一個'libs'目錄。 – 2010-01-13 22:47:05