2013-01-25 66 views
1

我有兩個模塊:我的應用程序的模塊,我想用的Android 2.3平臺進行編譯,並ActionBarSherlock庫模塊,它必須與的Android 4.0平臺進行編譯。當我設置這種方式和運行應用程序(ActionBarSherlock設置爲我模塊的依賴)項目結構 - IDEA試圖編譯一切與2.3 API,並顯示類似這樣的錯誤:編譯不同的機器人模塊

android-apt-compiler: action-bar-sherlock\res\values-v14\abs__themes.xml:32: error: Error retrieving parent for item: No resource found that matches the given name 'android:Theme.Holo.Light.Dialog'

如何正確設置的想法?

+0

在每個模塊中,您可以設置所需的版本。問題是爲什麼每次編譯項目時都要編譯ABS。爲什麼不把Jake git repo或者在本地構建庫並將其添加到項目中? –

+0

因爲使用ABS作爲Intellij模塊是將其包含在項目中的唯一方法。該模塊被設置爲主模塊的依賴關係。它總是重新編譯。 – Taras

+0

基於Maven的Android項目,您可以將其作爲依賴關係 –

回答

4

您可以使用以下清單聲明編譯一切與4.0庫,但支持2.3:

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

在這個例子中,17是目前的最新版本的API,但你可以使用15,或任何你需要。

+0

但即使minSdkVersion設置爲10,Intellij也允許使用來自第14個SDK的API類(例如,android.util.LruCache)。它具有誤導性。 – Taras

+0

@Taras,這與這個問題無關。提供的答案將解決您的構建問題。關於它的誤導性,我完全同意 - Eclipse在「兼容性」應用程序中使用高級API時會提醒您。然而,這是一個編輯器問題,你必須忍受我的猜測。 – Shade

+0

此外,即使由於缺陷修正和SDK本身的改進而支持較低級別的API,也可以使用最新版本的SDK進行編譯。 – Shade