Tôi cần tạo thư viện Android mà tôi có thể đưa vào làm một cái bình trong bất kỳ ứng dụng Android nào. Tôi sử dụng NetBeans 6.8, plugin nbandroid và SDK Android.Làm thế nào tôi có thể sử dụng một bình bên ngoài trong một dự án Android trong NetBeans?
Các bước tôi mất cho đến nay là:
1) Tạo dự án thư viện, với android.jar bao gồm để có quyền truy cập đến các lớp học Android (thư viện sử dụng android.util.Log và các lớp học Android khác).
2) Biên dịch thư viện làm bình.
3) Thêm jar của thư viện vào ứng dụng Android (nhấp chuột phải vào Thư viện bên dưới nút dự án và thêm bình).
4) Thêm < sử dụng-thư viện > vào tệp kê khai Android. (sai và không cần thiết)
Bước 3 ít nhất cho phép tôi tham khảo các lớp của thư viện trong mã nguồn của ứng dụng, nhưng các lớp dường như không thực sự được đưa vào thời gian biên dịch. Khi tôi chạy ứng dụng, tôi nhận được lỗi sau trong nhật ký.
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)
Tôi có phải thêm thư viện vào đường dẫn xây dựng ở nơi khác không? Tui bỏ lỡ điều gì vậy?
Tôi không thấy lý do tại sao nó sẽ khác nhau, nhưng lỗi trong nhật ký dường như chỉ ra khác, trừ khi có điều gì đó khác tôi bị thiếu. –
Sau đó, tôi đổ lỗi cho plugin NetBeans! ;) Nó hoạt động nếu bạn biên dịch nó từ dòng lệnh bằng cách sử dụng ant? Tôi nghĩ theo mặc định, tập lệnh ant Android tham chiếu thư mục 'libs' cho các JAR được bao gồm. –