2012-03-23 30 views
9

ADT r17 tôi dường như có một vấn đề khó khăn kể từ khi cập nhật mới nhất ADT để phát hành 17.Jar-file vấn đề với

Tôi đã thực hiện một ứng dụng đơn giản để minh họa cho vấn đề của tôi, tôi không biết nếu tôi làm bất cứ điều gì sai trái. Hoạt động chính của ứng dụng của tôi được kế thừa từ FragmentActivity trong gói hỗ trợ và bằng cách nào đó ứng dụng gặp sự cố khi khởi chạy.

Để minh họa, tôi đã thực hiện một dự án mẫu.

Trước hết, đây là mã của lớp giả của tôi, DummyProjectActivity, rất đơn giản:

public class DummyProjectActivity extends FragmentActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
} 

Sau đó, có các biểu hiện:

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

    <uses-sdk android:minSdkVersion="8" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:name=".DummyProjectActivity" 
      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> 

Các tập tin .jar được nhập khẩu một cách chính xác trong dự án và tôi nhận được dấu vết ngăn xếp này:

E/AndroidRuntime(11509): FATAL EXCEPTION: main 
E/AndroidRuntime(11509): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{be.emich.labs/be.emich.labs.DummyProjectActivity}: java.lang.ClassNotFoundException: be.emich.labs.DummyProjectActivity 
E/AndroidRuntime(11509): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1879) 
E/AndroidRuntime(11509): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
E/AndroidRuntime(11509): at android.app.ActivityThread.access$600(ActivityThread.java:122) 
E/AndroidRuntime(11509): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
E/AndroidRuntime(11509): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(11509): at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(11509): at android.app.ActivityThread.main(ActivityThread.java:4340) 
E/AndroidRuntime(11509): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(11509): at java.lang.reflect.Method.invoke(Method.java:511) 
E/AndroidRuntime(11509): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
E/AndroidRuntime(11509): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
E/AndroidRuntime(11509): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(11509): Caused by: java.lang.ClassNotFoundException: be.emich.labs.DummyProjectActivity 
E/AndroidRuntime(11509): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
E/AndroidRuntime(11509): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
E/AndroidRuntime(11509): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
E/AndroidRuntime(11509): at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 
E/AndroidRuntime(11509): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1870) 
E/AndroidRuntime(11509): ... 11 more 

Tôi đang làm gì sai ở đây? Đây có phải là một lỗi trong các công cụ dev mới nhất?

Tôi đang gặp sự cố trong mọi dự án sử dụng FragmentActivity từ thư viện tương thích. Tôi không hiểu điều gì có thể sai. Bất cứ ai khác có vấn đề này? Trợ giúp sẽ được đánh giá cao. Tôi không gặp vấn đề với Hoạt động kế thừa từ FragmentActivity. Tôi đã gỡ cài đặt/cài đặt lại ứng dụng. Thực hiện nhiều "dự án sạch". Khởi động lại Eclipse.

CẬP NHẬT: Vấn đề dường như không được liên kết với gói tương thích nhưng cách ADT r17 xử lý liên kết tệp jar. Chum được đưa vào nên được đưa vào thư mục libs/và ADT sẽ tự động liên kết chúng. Nếu không, họ sẽ bị thiếu trong APK và khiến ứng dụng gặp sự cố bất cứ khi nào mã từ jarfile được gọi.

+0

Tôi sẽ cố gắng bằng cách nhập các nguồn thay vì tệp .jar. Hãy xem liệu điều đó có thay đổi gì không. Có thể có sự cố với tệp .jar. – eMich

+0

Trong tò mò, trong đầu ra nhật ký của bạn ở trên, nó có nói "VFY: không thể tìm thấy lớp được tham chiếu trong chữ ký" trước khi ngoại lệ? – jfritz42

Trả lời

6

Cho đến khi công cụ phát hành mới nhất nhấp chuột phải> Thêm gói tương thích vào dự án của tôi không hoạt động và tôi đã bao gồm tệp jar theo cách thủ công thông qua thuộc tính dự án. Tôi đã thử "Thêm gói tương thích" một lần nữa và kể từ r17 có vẻ như điều này là cố định cho máy tính của tôi. Điều này đã khắc phục được sự cố.

+2

Tệp jar của tôi thường nằm trong thư mục có tên "lib" và không được bao gồm trong APK vì một số lý do. Chuyển chúng sang libs liên kết chúng tự động với ADT r17, và điều này đã khắc phục vấn đề. – eMich