Android5.0和Android6.0適配

来源:https://www.cnblogs.com/cambodia/archive/2020/01/03/12145771.html
-Advertisement-
Play Games

gradle配置項 1. compileSdkVersion 用哪個 Android SDK 版本編譯你的應用。因此我們強烈推薦總是使用最新的 SDK 進行編譯。在現有代碼上使用新的編譯檢查可以獲得很多好處,避免新棄用的 API ,並且為使用新的 API 做好準備。 2. minSdkVersion ...


gradle配置項

  1. compileSdkVersion
    用哪個 Android SDK 版本編譯你的應用。因此我們強烈推薦總是使用最新的 SDK 進行編譯。在現有代碼上使用新的編譯檢查可以獲得很多好處,避免新棄用的 API ,並且為使用新的 API 做好準備。
  2. minSdkVersion
    是應用可以運行的最低要求,也是各大Android應用商店用來判斷用戶設備是否可以安裝某個應用的標誌之一
  3. targetSdkVersion
    targetSdkVersion 是 Android 提供向前相容的主要依據
targetSdkVersion < 平臺的API級別 向前相容舉個慄子:targetSdkVersion==23(6.0),當前設備Android版本7.0,運行程式時用6.0那一套介面。介面:API介面
targetSdkVersion = 平臺的API級別 不啟用相容性
targetSdkVersion > 平臺的API級別 舉個慄子:targetSdkVersion==23(6.0),當前設備Android版本是 5.0 ,運行程式 用的是5.0那套介面。設備根本到不了6.0

是不是意味著targetSdkVersion越低越好?

  1. 使用低版本API的其中一個不足,顯示的效果比較OUT,提供的可用的介面或類比較少
  2. 高版本API會針對低版本存在的問題進行改進和完善,擯棄一下不用的類或介面,新增一些方法或屬性,如果你使用的方法是在某個API被另一個方法代替的話,你可能就得在代碼中區分APP是運行在哪個版本的Android系統
  3. 應用平臺對targetSdkVersion有要求

minSdkVersion <= targetSdkVersion <= compileSdkVersion

andorid 5.0 新特性

  1. Material Design
  2. 支持64位ART虛擬機。
  3. Overview 多任務視窗。
  4. RecyclerView
  5. 卡片CardView
  6. Palette是一個可以從圖片(Bitmap)中提取顏色的幫助類,可以使UI更加美觀,根據圖片動態的顯示相應的顏色

android 5.0適配

  1. 啟動服務,不支持隱式調用的問題
    解決方案
    1. 使用action調用,必須指定包名啟動(判斷當前當前系統版本)
    2. ComponentName 傳入包名和類名,必須是完整類名路徑。
  2. android5.0 getRunningTasks 和getRunningAppProcesses(僅返回當前應用包名)失效
    解決方案
    1. 第一種辦法,用 UsageStatsManager,需要許可權,且只針對系統應用有效,而且要打開設置頁面。
    2. 第二種,不需要許可權,外國的一個開源項目:https://github.com/jaredrummler/AndroidProcesses(Android7.0後不生效
  3. backgroundTint屬性只能在5.0以上的api中調用
    解決方案
    1. 我們可以新建一個values-v21文件夾,這個裡面聲明的屬性會在api21以上的機器上優先於values文件夾中執行
  4. Android API 21(5.0)引入了一個Drawable的子類VectorDrawable
    解決方案(https://www.jianshu.com/p/0972a0d290e9
    1. minSdkVersion<21:如果想要渲染矢量圖的話必須在app模塊的build.gralde文件里添加一行代碼:

       defaultConfig {
           vectorDrawables.useSupportLibrary = true
       }
    2. 在Application或者Activity上加上AppCompateDelegate開啟CompatVectorFromResources支持
    3. Button,TextView,應用矢量圖,保險的是先把矢量圖轉為selector,然後selector代替矢量圖使用

  5. Android5.0上 WebView中Http和Https混合問題
    解決方案

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
    }
  6. WebView cookie 存儲問題

     public static void syncCookie(String url, String key) {
         CookieManager cookieManager = CookieManager.getInstance();
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
             cookieManager.removeSessionCookies(null);
             cookieManager.flush();
         } else {
             cookieManager.removeSessionCookie();
             CookieSyncManager.getInstance().sync();
         }
         cookieManager.setAcceptCookie(true);
         cookieManager.setCookie(url, key);
     }
  7. JobScheduler和JobService是安卓在api 21中增加的介面(保活),功能更強的鬧鐘


Android 6.0 適配及新特性

  1. 運行時許可權,請務必在運行時檢查和請求許可權
    1. Normal Premission:普通許可權
    2. Dangerous Permission/Group: 危險許可權/組

      android.permission.READ_CALENDAR允許程式讀取用戶日曆數據
      android.permission.WRITE_CALENDAR允許一個程式寫入但不讀取用戶日曆數據
      android.permission.CAMERA,允許訪問攝像頭進行拍照
      android.permission.READ_CONTACTS允許程式讀取用戶聯繫人數據
      android.permission.WRITE_CONTACTS允許程式寫入但不讀取用戶聯繫人數據
      android.permission.GET_ACCOUNTS訪問一個帳戶列表在Accounts Service中
      android.permission.ACCESS_FINE_LOCATION允許一個程式訪問精良位置(如GPS)
      android.permission.ACCESS_COARSE_LOCATION允許一個程式訪問CellID或WiFi熱點來獲取粗略的位置
      android.permission.RECORD_AUDIO允許程式錄製音頻
      android.permission.CALL_PHONE允許一個程式初始化一個電話撥號不需通過撥號用戶界面需要用戶確認
      android.permission.READ_PHONE_STATE 訪問電話狀態
      android.permission.READ_CALL_LOG  查看電話日誌
      android.permission.WRITE_CALL_LOG寫入電話日誌
      android.permission.ADD_VOICEMAIL  允許應用程式添加系統中的語音郵件
      android.permission.USE_SIP  允許程式使用SIP視頻服務
      android.permission.PROCESS_OUTGOING_CALLS   允許應用程式監視、修改、忽略撥出的電話
      android.permission.BODY_SENSORS  允許該應用存取監測您身體狀況的感測器所收集的數據,例如您的心率
      android.permission.SEND_SMS允許程式發送SMS簡訊
      android.permission.RECEIVE_SMS允許程式監控一個將收到簡訊息,記錄或處理
      android.permission.READ_SMS允許程式讀取簡訊息
      android.permission.RECEIVE_WAP_PUSH允許程式監控將收到WAP PUSH信息
      android.permission.RECEIVE_MMS允許一個程式監控將收到MMS彩信,記錄或處理
      android.permission.WRITE_EXTERNAL_STORAGE   允許程式寫入外部存儲,如SD卡上寫文件
      android.permission.READ_EXTERNAL_STORAGE   訪問您設備上的照片、媒體內容和文件

  2. 取消支持 Apache HTTP
    解決方案:
    android {
    useLibrary 'org.apache.http.legacy'
    }

  3. BoringSSL
    請勿鏈接到並非 NDK API 組成部分的加密庫,如 libcrypto.so 和 libssl.so

  4. 硬體標識符訪問權
    1. WifiInfo.getMacAddress() 方法和 BluetoothAdapter.getAddress() 方法現在會返回常量值 02:00:00:00:00:00。
    2. 現在想訪問硬體標識,如:WiFi和藍牙,必須要有 ACCESS_FINE_LOCATION或者ACCESS_COARSE_LOCATION許可權
      WifiManager.getScanResults()
      BluetoothDevice.ACTION_FOUND
      BluetoothLeScanner.startScan()
  5. AudioManager類 不再支持直接設置音量或將特定音頻流靜音
    1. setStreamSolo() 方法已棄用,您應該改為調用 requestAudioFocus() 方法。
    2. setStreamMute() 方法也已棄用,請改為調用 adjustStreamVolume() 方法並傳入方向值 ADJUST_MUTE 或 ADJUST_UNMUTE
  6. 相機服務變更
    1. 相機服務中共用資源的訪問模式已從之前的“先到先得”訪問模式更改為高優先順序進程優先的訪問模式
  7. dlopen failed: "has text relocations"
    1. 解決方案一:將targetSdkVersion 修改為<23
    2. 解決方案二: https://wiki.gentoo.org/wiki/Hardened/Textrels_Guide 通過scanelf / objdump定位存在TEXTREL問題的文件, 以及關鍵代碼在文件中的偏移量, 然後根據偏移量對應的特征 (函數名 / hard code的絕對地址等), 定位到代碼所在.
    3. 在mk腳本中, 對LOCAL_CFLAGS, 增加-fPIC參數
  8. 電源管理
    在原有的電源管理的基礎上加入了兩種新的狀態:
    1. App Standby—應用待機狀態
    2. Doze 系統休眠狀態
  9. 規範化App Link (應用程式鏈接)
  10. 指紋識別(統一API)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 適用環境: 資料庫版本:MySQL 5.7.26 操作系統:CentOS 7 製作思路: 將資料庫初始化和配置工作放到安裝腳本中方便定製: 1、打包MySQL應用目錄 2、不自動生成配置文件 3、不自動生成數據目錄 4、不自動初始化數據 Spec代碼: # # # MySQL參數配置 # mysql ...
  • 場景 Android佈局管理器-使用LinearLayout實現簡單的登錄視窗佈局: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103838995 幀佈局管理器FrameLayout 實現效果 註: 博客: https://b ...
  • 場景 Android佈局管理器-從實例入手學習相對佈局管理器的使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103838924 線性佈局LinearLayout,分為水平和垂直線性佈局。 實現效果如下 註: 博客: htt ...
  • 場景 AndroidStudio跑起來第一個App時新手遇到的那些坑: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103797243 使用相對佈局RelativeLayout實現簡單的登錄提示的佈局,效果如下 註: 博客: h ...
  • 最近有一些開發朋友問我應該怎樣提升自己的能力,回想起來做了這麼久 iOS 開發,我也有過那種“讓我做一個功能實現個需求我會做,但接下來怎樣提高我不知道。”的時期,這裡嘗試列一下 iOS 開發的相關技術,再說說在學習進階上我的一些想法。 iOS 技術棧 這裡按我的理解給 iOS 相關技術分個類,以工程 ...
  • 1.壓力測試monkey 通過cmd輸入下麵命令: 表示測試com.example.phonecall應用程式,隨機發送點擊/滑動/切換事件10000次,( -v -v -v)表示信息日誌為最高級,然後列印的信息傳到F:\monkey_log\test1.txt里. 如下圖所示: 2.單元測試 2. ...
  • This interface shows how a spring animation can be created by specifying a “damping” (bounciness) and “response” (speed). 這個交互顯示瞭如何通過指定“阻尼”(有彈性)和“響應”( ...
  • 場景 實現效果如下 註: 博客: https://blog.csdn.net/badao_liumang_qizhi 關註公眾號 霸道的程式猿 獲取編程相關電子書、教程推送與免費下載。 實現 新建Android項目,首先打開activity_main.xml 修改其為FrameLayout幀佈局管理 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...