2011-11-28 46 views
2

我正在嘗試在eclipse上構建ICS聯繫人代碼。由於聯繫人使用了一些隱藏的類,我創建了一個包含所有必需類的新jar文件,併成功構建了apk。Android的ICS版本在eclipse上構建聯繫人代碼

但現在問題是我添加在jar中的任何類都丟失了最終的apk包中的鏈接,我得到noClassDefFoundError異常。

我反編譯了apk,發現這個類是在apk中出現的。爲什麼鏈接丟失,事件中沒有類文件存在於apk中?

我嘗試使用jar文件作爲外部庫,但由於其大小(> 20mb)未成功。

回答

2

聯繫人應用程序正在使用幾種類型的隱藏文件。其中一些是隱藏框架項目,如AggregationSuggestions.PARAMETER_MATCH_NAME,其他屬於靜態庫,如com.android.phone.CallLogAsync。第一種文件不應該嵌入到APK中,但第二種文件應該是。

如果你看看Android.mk爲聯繫人,你可以找出需要什麼樣的靜態庫:

LOCAL_STATIC_JAVA_LIBRARIES := \ 
com.android.phone.common \ 
com.android.vcard \ 
android-common \ 
guava \ 
android-support-v13 \ 
android-support-v4 \ 
android-ex-variablespeed \ 

編譯在Eclipse聯繫您應該添加框架類「用戶庫」,所有靜態庫作爲「外部JAR」。

獲取所有需要的jar的最簡單方法是構建Android源代碼並查看out/target/common/obj/JAVA_LIBRARIES。每個庫都有自己的目錄名爲libname _intermediates其中包含classes-full-debug.jar。這些罐子正是你建立聯繫人所需要的。框架類駐留在framework_intermediates中,但是您可能需要添加更多的jar。

您應該在Eclipse中爲您的項目調整「訂購&導出」,以確保您的具有框架類的「用戶庫」高於「Android 4.0」。

+0

我可以在互聯網上的任何地方下載這些庫並將其放入我的應用程序中嗎? –

+1

@Darth Beleg從哪裏可以下載這些jar文件? –