2012-04-01 41 views
6

Tôi mới phát triển Android và gặp sự cố khi sử dụng AndEngine. Tôi cố gắng để chạy một ứng dụng rỗng nhưng nhận được một lỗi thời gian chạy như sau:AndEngine - Không thể khởi tạo Hoạt động

04-01 21:56:16.326: W/dalvikvm(280): Unable to resolve superclass of Lcom/MyApps/TestApp/TestAppActivity; (31) 
04-01 21:56:16.326: W/dalvikvm(280): Link of class 'Lcom/MyApps/TestApp/TestAppActivity;' failed 
04-01 21:56:16.336: D/AndroidRuntime(280): Shutting down VM 
04-01 21:56:16.336: W/dalvikvm(280): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
04-01 21:56:16.376: E/AndroidRuntime(280): FATAL EXCEPTION: main 
04-01 21:56:16.376: E/AndroidRuntime(280): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.MyApps.TestApp/com.MyApps.TestApp.TestAppActivity}: java.lang.ClassNotFoundException: com.MyApps.TestApp.TestAppActivity in loader dalvik.system.PathClassLoader[/data/app/com.MyApps.TestApp-1.apk] 
04-01 21:56:16.376: E/AndroidRuntime(280): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 
04-01 21:56:16.376: E/AndroidRuntime(280): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
04-01 21:56:16.376: E/AndroidRuntime(280): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
04-01 21:56:16.376: E/AndroidRuntime(280): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
04-01 21:56:16.376: E/AndroidRuntime(280): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-01 21:56:16.376: E/AndroidRuntime(280): at android.os.Looper.loop(Looper.java:123) 
04-01 21:56:16.376: E/AndroidRuntime(280): at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-01 21:56:16.376: E/AndroidRuntime(280): at java.lang.reflect.Method.invokeNative(Native Method) 
04-01 21:56:16.376: E/AndroidRuntime(280): at java.lang.reflect.Method.invoke(Method.java:521) 
04-01 21:56:16.376: E/AndroidRuntime(280): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
04-01 21:56:16.376: E/AndroidRuntime(280): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
04-01 21:56:16.376: E/AndroidRuntime(280): at dalvik.system.NativeStart.main(Native Method) 
04-01 21:56:16.376: E/AndroidRuntime(280): Caused by: java.lang.ClassNotFoundException: com.MyApps.TestApp.TestAppActivity in loader dalvik.system.PathClassLoader[/data/app/com.MyApps.TestApp-1.apk] 
04-01 21:56:16.376: E/AndroidRuntime(280): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
04-01 21:56:16.376: E/AndroidRuntime(280): at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
04-01 21:56:16.376: E/AndroidRuntime(280): at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
04-01 21:56:16.376: E/AndroidRuntime(280): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
04-01 21:56:16.376: E/AndroidRuntime(280): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 
04-01 21:56:16.376: E/AndroidRuntime(280): ... 11 more 

Các biểu hiện đã qua sử dụng:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.MyApps.TestApp" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="8" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:name=".TestAppActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

Tôi đã thử đặt tên trọn gói thay vì .TestAppActivity nhưng không có bất kỳ may mắn. Tuy nhiên, khi tôi mở rộng TestAppActivity từ Activity thay vì BaseGameActivity nó hoạt động.

Any help is appreciated, Sami

Trả lời

8

Các lỗi Unable to resolve superclass of Lcom/MyApps/TestApp/TestAppActivity và nó hoạt động khi bạn kế thừa từ Activity sẽ đề nghị rằng bạn không bao gồm các thư viện AndEngine trong APK của bạn — do đó trong thời gian chạy BaseGameActivity không thể được tìm thấy.

Đảm bảo phụ thuộc AndEngine nằm trong thư mục libs trong dự án Android của bạn; không chỉ được thêm vào classpath Eclipse của bạn.

Thực tế, nếu bạn có plugin Eclipse mới nhất của Android, mọi phụ thuộc sẽ được tự động đưa vào APK của bạn nếu bạn chỉ đặt chúng trong libs.

+0

Cảm ơn bạn rất nhiều. Đã giải quyết được sự cố. Tôi chỉ thêm nó vào classpath – Sami

+1

Sau khi cập nhật ADT lên phiên bản mới nhất tại thời điểm tôi phát hiện ra cùng một vấn đề. Tôi đã có andengine.jar trong thư mục lib, được thêm vào các thư viện tham chiếu và nó đã làm việc cho đến nay. Bây giờ, tôi phải thay đổi lib thành libs. Họ có thực sự phải phát hành SDK mới sau mỗi 5 phút không? Họ không thể tạo ra một môi trường ổn định? – Yar

+3

Cá nhân tôi thấy dễ dàng hơn nhiều khi chỉ tham chiếu dự án AndEngine thay vì sao chép và dán tệp .jar vào thư mục libs. Điều này được thực hiện thông qua Properties -> Android và sau đó tham khảo các dự án AndEngine dưới dạng thư viện. – Dan

2

Tôi đã có một thông báo lỗi gần như indentical, và vấn đề của tôi là tôi đã cài đặt phiên bản sai của JDK, khi tôi tải xuống và cài đặt JDK6 thay vì 7 nó hoạt động tốt. Trong trường hợp này sẽ cứu bất cứ ai đi qua cơn ác mộng sống mà tôi vừa trải qua, tôi sẽ để lại điều này ở đây.

Các vấn đề liên quan