1. 程式人生 > >安卓專案升級sdk和第三方庫遇到的問題及解決方案

安卓專案升級sdk和第三方庫遇到的問題及解決方案

有時候一些專案進行維護的時候需要進行版本升級,當然第三方庫肯定要升級,比如百度地圖,alipay,sharesdk,蒲公英,訊飛語音sdk等。如果在改變sdkversion後構建Android Studio專案的時候,執行發現,出現沒找到資源的錯誤!找不到com.android.support/appcompat-v4/24.0.1/res/values-v24/values-v24.xml出現這個問題之後嘗試將compileSdkVersion設為23(如果sdk裡面沒有下載API 23的,則需要下載),問題解決!

很多時候會忘記幾個Version之間的關係。現在羅列一下以免下次忘記:

1、compileSdkVersion 編譯版本,意思就是當為23時,則andorid studio編譯的時候用的是sdk裡的api-23的版本,裡面的函式會用到最新的,一些淘汰的API不會再呼叫,為此很多時候會出現無法相容你引入的第三方老庫的問題;老專案會用到pulltoRefshlib的庫,裡面的函式就有不相容6.0的問題。會報出Floatmath無法找到對應的方法的錯誤;

解決辦法:Android6.0使用 Math.floor 代替 FloatMath.floor 即可;

2、minSdkVersion相容的最低版本,一般我都設定為17。誰要是用安卓版本4.2一下的做測試的我就想和他聊聊了。版本4.2的手機還能叫手機麼。

3、targetSdkVersion目標sdk,targetSdkVersion這個屬性是在程式執行時期起作用的,系統根據這個屬性決定要不要以相容模式執行這個程式。一般設定和compileSdkVersion版本一樣即可。這個值說直白一點就是當執行app的機器的安卓版本高於你app的編譯版本的時候。這個屬性通知系統,你已經針對這個指定的目標版本測試過你的程式,系統不必再使用相容模式來讓你的應用程式向前相容這個目標版本。就是禁用系統的相容模式。

4、buildToolsVersion這個值是構建工具的版本,隨便吧。高點沒問題。

好了,分析完上面四個值,現在該具體到更改了這些值之後帶來的錯誤該如何解決的問題了。

Error:(5, 30) java: 程式包org.apache.http.client不存在  


加上 useLibrary 'org.apache.http.legacy' 這一句就行了,位置放哪參考截圖。還有上面提到的資原始檔不存在的錯誤,以及6.0以後的函式錯誤。

具體來說還有一個比較常見的錯誤就是style.xml裡面的錯誤,因為隨著安卓版本的迭代,style在各版本也各不相同,關於style的錯誤出現後,要根據版本具體問題具體分析,網上查一下就能解決錯誤,不再多做贅述。