Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> 在Android中開源類庫使用過程中兼容性等問題的討論

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

編輯:Android開發教程

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.cn/OS/extra/

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved