在Android中開源類庫使用過程中相容性等問題的討論

來源:互聯網
上載者:User

1、在Android4.0環境下編譯的actionbarsherlock、slidingmenu類庫,能不能在4.0以下的版本中使用

相信很多人跟我一樣,都以為在低版本(如Android2.1或2.3版本)編譯的應用能夠在高版本中運行,但高版本(比如Android3.0或4.0)中編譯的應用恐怕就不能在低版本中運行。於是,我們可能就會想方設法地把一些在高版本中編譯的代碼,改成在低版本的Android SDK中編譯,以便相容。我們一直忽視了在<manifest>檔案中關於相容性的聲明,如下面程式碼片段。

<uses-sdk android:minSdkVersion="integer"         android:targetSdkVersion="integer"         android:maxSdkVersion="integer"     />

android:minSdkVersion就聲明了應用可以運行在最小的什麼API版本之上。我們如何知道,一個應用可以運行在什麼API上面呢?常查Android Reference(API文檔)的同學,應該對下面這幅圖很熟悉。

在API Reference中不僅說明了你調用的函數的功能,也說明了它是在什麼版本API中引入的(見紅框處)。從而我們需要檢查一下自己應用中的系統調用函數的是在什麼版本的API中引入的。

slidingmenu的相容性聲明

actionbarsherlock的相容性聲明

上面兩幅圖分別是slidingmenu、actionbarsherlock的相容性說明。如果我們只使用slidingmenu,那麼我們的應用裡面的相容性說明的android:minSdkVersion只要大於5就行了,如果同時使用slidingmenu、actionbarsherlock,那麼android:minSdkVersion就必須至少是7。

對於Android高版本中引入的SDK,一般google都會推出相應的相容包。比如在Android3.0才推出的Fragment相關API,在android-support-v4這個相容包中就有對應的相容API,詳見建立Fragment。

最後,做一個結論,在高版本的環境下(如Android4.0)編譯的應用能不能在低版本的Android系統中運行不是看編譯的SDK版本,而是取決於android:minSdkVersion這個最小API版本聲明。

當然,你不能聲明了android:minSdkVersion是5,結果在引用中使用了android:minSdkVersion為11才引入的API。

2、遇到“IllegalStateException: Both setBehindContentView must be called in onCreate in addition to setContentView.”錯誤

這個錯誤是在一啟動,還沒見到介面的時候,就爆出的錯誤。這是因為在代碼中,缺少 setBehindContentView(R.layout.menu_frame)。而這個函數主要就是用來決定側邊欄長什麼樣的。

public class BaseActivity extends SlidingFragmentActivity

而這又是因為我的Activity繼承了SlidingFragmentActivity(見下面程式碼片段),這個特殊的Activity本身就帶有側邊欄,因此必須在OnCreate函數那裡就調用setBehindContentView()函數來設定側邊欄的樣式。

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.