2013-05-22 88 views
2

我有一個設置像這樣:ADT 22多個圖書館的問題

NativeLibrary CommonJavaComponents 
    |  |   |  | 
    |  |   |  | 
    |  FunctionalLibrary1 | 
    |   |    | 
    ----------Project--------- 

起初略顯複雜,但這個是我最簡單的臺UPS之一。

  • NativeLibrary包含.so文件和JNI罐子
  • CommmonJavaComponents包含自定義活動/片段的祖先和Android的支持,v13.jar
  • FunctionalLibrary1同時使用以上,並給出了在項目
  • 使用額外的功能
  • Project直接引用的所有3

我已經設法通過出口得到的一切編制的「Android私人圖書館「。

不幸的是我的設備我得到這樣的:CommonJavaComponents

05-22 16:52:50.110: W/dalvikvm(3215): Unable to resolve superclass of Lcom/test/library/common/activity/LoggingActivity; (50) 
05-22 16:52:50.110: W/dalvikvm(3215): Link of class 'Lcom/test/library/common/activity/LoggingActivity;' failed 

LoggingActivity生活和Android的支持,v13.jar延伸FragmentActivity

有誰知道我需要什麼魔法來執行或ADT 22只是簡單的破碎?

編輯

爲了簡潔:

NativeLibrary,CommonJavaComponents,FunctionalLibrary1都有出口Android的私家藏書Project引用所有三個,它編譯但仍顯示上述錯誤。

+2

導出* Android專用庫*用於所有項目,而不僅僅是庫項目。 –

+0

感謝您的答案,但我已經嘗試過 - 一路導出,只引用最後一個祖先,引用所有三個,並且只從基礎二導出並引用所有三個。沒問題:/ – Graeme

回答

0

卸載應用程序並重新安裝似乎已修復它。 Android/Eclipse似乎無法在更改依賴庫的導出設置時發生更改,因此無法正確重建或重新安裝。

要確認,工作設置涉及Project直接引用它的每個依賴庫作爲Android Libraries。每個項目(甚至包括Project,儘管這應該不會有任何影響)正在使用出口Android私人圖書館

與ADT 16的更新 - 應該包含一個大的閃爍警告說「這將打破你的項目設置 - 請等到你不在發佈週期」

+1

公平 - 甚至在一個空白的項目上測試不相關的功能我遇到了「java.lang.ClassNotFoundException」問題,它既不包含庫項目,也不涉及任何活動和一些碎片。我會非常強烈地建議不安裝ADT 22! – Graeme

+0

轉到http://stackoverflow.com/questions/16596969/libraries-do-not-get-added-to-apk-anymore-after-upgrade-to-adt-22/16596990#16596990 –

+0

@Subra是的,我看到你可以導出:) ADT r22仍然在地獄:) – Graeme

3

我還得到了ARCA的ClassNotFoundExcpetion。 ACRA jar位於我們的一個核心庫項目中,並從該中心位置導入到應用程序項目中。

在設備上卸載和安裝App(由Graeme建議)並沒有改變我的情況。如果那樣的話,這將會使應用程序用戶無法更新,並且ADT 22將不能用於生產用途。

我可以在幾個項目中找到問題,以便我們明確地將jar文件添加到Java Build Path中。這個2011款式的處理libs文件夾中的jar的習慣(我猜在ADT 17之前)已經被保存在我們的應用程序的許多地方。

我設法通過簡單的更換和使用以下內容規範所有庫項目的classpath文件與ADT 22和工具17運行項目:

<classpath> <classpathentry kind="src" path="src"/> <classpathentry kind="src" path="gen"/> <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> <classpathentry kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/> <classpathentry kind="output" path="bin/classes"/> </classpath>

所有jar文件被刪除,「私人圖書館「必須像其他許多人之前所說的那樣出口。

這與API目標17個項目進行了測試:

android.library=true 
target=android-17 

如果percieve遺留的問題儘量做到與根應用項目(即您嘗試運行非庫項目)

相同

有一點補充:你設法讓你的應用程序編譯並運行你可以在Eclipse的「問題」視圖中看到您的libs文件夾更新後的瓶子後:

The container 'Android Private Libraries' references non existing library '.../FINARXAndroidWidgets/libs/jackson-core-2.1.1.jar' 

庫變量的內容不能由用戶編輯。唯一幫助我的是重啓eclipse。

這樣做的壞處在於,它也可能發生在別人的工作區中的SVN/GIT更新之後。

+0

什麼對我有效......'唯一幫助我的是重新啓動eclipse. – JRomero

+0

嘿,有問題的庫變量內容你在最後提到。重新開始eclipse工作! – GuyNoir