兼容Android 6.0顺献,您需要做的幾件事兒蛤克!

目前谷歌已經放出了Android O(8.0)的預覽版厌衙,但很多app并沒有使用6.0以來的新特性畦木。下面就結合官方文檔和自己工作中需要的一些問題兜粘,簡單總結了下申窘,在對您的應用進行針對target23以其以上重構時,需要注意和兼容的問題孔轴。


一剃法,低耗電模式。

Android 6.0(API 級別 23)引入了低電耗模式路鹰,當用戶設備未插接電源贷洲、處于靜止狀態(tài)且屏幕關閉時收厨,該模式會推遲 CPU 和網絡活動,從而延長電池壽命优构。而 Android 7.0 則通過在設備未插接電源且屏幕關閉狀態(tài)下诵叁、但不一定要處于靜止狀態(tài)(例如用戶外出時把手持式設備裝在口袋里)時應用部分 CPU 和網絡限制,進一步增強了低電耗模式钦椭。

A.網絡訪問的限制

在涉及到網絡訪問拧额,特別時后臺訪問網絡的,需要測試下彪腔,在低耗電模式下势腮,應用是否執(zhí)行正常,會不會anr或者崩潰

B.后臺喚醒機制

即對齊喚醒漫仆,主要涉及到的是WakeLockAlarm捎拯,后臺的一些定時服務,可能會不準

二盲厌,后臺優(yōu)化

Android 7.0移除了三項隱式廣播署照,以幫助優(yōu)化內存使用和電量消耗。此項變更很有必要吗浩,因為隱式廣播會在后臺頻繁啟動已注冊偵聽這些廣播的應用建芙。刪除這些廣播可以顯著提升設備性能和用戶體驗。

A. CONNECTIVITY_ACTION

面向 Android 7.0 開發(fā)的應用不會收到CONNECTIVITY_ACTION廣播懂扼,即使它們已有清單條目來請求接受這些事件的通知禁荸。在前臺運行的應用如果使用BroadcastReceiver請求接收通知,則仍可以在主線程中偵聽CONNECTIVITY_CHANGE阀湿。

B. ACTION_NEW_PICTURE

C. ACTION_NEW_VIDEO

應用無法發(fā)送或接收ACTION_NEW_PICTUREACTION_NEW_VIDEO廣播赶熟。此項優(yōu)化會影響所有應用,而不僅僅是面向 Android 7.0 的應用陷嘴。

三映砖,權限更改

A.私有文件的文件權限不應再由所有者放寬,為使用MODE_WORLD_READABLE和/或MODE_WORLD_WRITEABLE而進行的此類嘗試將觸發(fā)SecurityException灾挨。

B.當你跨package域傳遞file://的URI時邑退,接收者得到的將是一個無權訪問的路徑,將會觸發(fā)FileUriExposedException劳澄。官方推薦的方式是使用FileProvider地技,也可以使用ContentProvider

Eg:調用系統(tǒng)相機拍照并存入指定路徑中

Api24之前,可以這樣

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); Uri uri = Uri.fromFile(sdcardTempFile);

intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);

Target=24時秒拔,會報crash FileUriExposedException

Target24上的正確方法是:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); ContentValues contentValues = new ContentValues(1); contentValues.put(MediaStore.Images.Media.DATA, sdcardTempFile.getAbsolutePath());

Uri uri = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues);

或者使用FileProvider方式

這塊兒莫矗,分享模塊或者其他有 調起三方應用并給其傳遞我們應用理解的圖片等文件資源的話,會存在這個問題。這塊兒有個帖子寫到了他們的解決辦法

http://www.reibang.com/p/68a4e8132fcd

四趣苏,屏幕縮放

Android 7.0 支持用戶設置顯示尺寸,以放大或縮小屏幕上的所有元素梯轻,從而提升設備對視力不佳用戶的可訪問性食磕。用戶無法將屏幕縮放至低于最小屏幕寬度


在android N上,Setting多了一個Display size設置喳挑,更改這個屬性彬伦,系統(tǒng)會以如下方式通知正在運行的應用:

A.如果是面向API級別23或更低版本系統(tǒng)的應用,系統(tǒng)會自動終止其所有后臺進程伊诵。這意味著如果用戶切換離開此類應用单绑,轉而打開Settings屏幕并更改Display size設置,則系統(tǒng)會像處理內存不足的情況一樣終止該應用曹宴。如果應用具有任何前臺進程搂橙,則系統(tǒng)會如處理運行時更改中所述將配置變更通知給這些進程,就像對待設備屏幕方向變更一樣笛坦。

B.如果是面向Android 7.0的應用区转,則其所有進程(前臺和后臺)都會收到有關配置變更的通知

在這里,需要測試這幾個方面的問題:

a.界面顯示問題版扩,既在用戶更改了這個屬性時废离,整個界面元素的大小都會變化,需要測試此時我們的界面是否ok

b.當設備配置發(fā)生變更時礁芦,更新任何與密度相關的緩存信息

五蜻韭,NDK應用鏈接至平臺庫

從 Android 7.0 開始,系統(tǒng)將阻止應用動態(tài)鏈接非公開 NDK 庫柿扣,這種庫可能會導致您的應用崩潰肖方。

即使您的代碼可能不會鏈接私有庫,但您的應用中的第三方靜態(tài)庫可能會這么做未状。因此窥妇,所有開發(fā)者都應進行相應檢查,確保他們的應用不會在運行 Android 7.0 的設備上崩潰娩践。

Logcat會給我們一些提示活翩。

應用面向 API 級別 24 或更高級別,logcat 會生成以下運行時錯誤翻伺,您的應用可能會崩潰:

java.lang.UnsatisfiedLinkError: dlopen failed: library "libcutils.so"

("/system/lib/libcutils.so") needed or dlopened by

"/system/lib/libnativeloader.so" is not accessible for the namespace

"classloader-namespace"

at java.lang.Runtime.loadLibrary0(Runtime.java:977)

at java.lang.System.loadLibrary(System.java:1602)

利用 Android 7.0DK 中的 readelf 工具材泄,您可以通過運行以下命令生成給定.so文件的所有動態(tài)鏈接的共享庫列表:

aarch64-linux-android-readelf -dW libMyLibrary.so

六,Android for Work

可以使用DevicePolicyManagewr.getWifiMacAddress()訪問設備的 WLAN MAC 地址吨岭。如果設備上從未啟用 WLAN拉宗,則此方法將返回一個null值。

七,權限旦事,重要的權限需要授權魁巩。



網上很多開源的授權工具類,例如這個

https://github.com/opengit/MonkeyAndroid/blob/master/app/src/main/java/com/sunjiajia/monkeyandroid/utils/PermissionsUtil.java

八姐浮,其他

懸浮窗授權谷遂。 很多時候程序里面有在當前界面彈出一個授權窗口,引導用戶去授權或者開啟輔助選項等卖鲤。在api24上肾扰,需要對在當前頁面彈窗這一動作授權

Note:If the app targets API level 23 or higher, the app user must explicitly grant this permission to the app through a permission management screen. The app requests the user's approval by sending an intent with actionACTION_MANAGE_OVERLAY_PERMISSION. The app can check whether it has this authorization by callingSettings.canDrawOverlays().

Constant Value: "Android.permission.SYSTEM_ALERT_WINDOW"

代碼如下:

if?(Build.VERSION.SDK_INT?>=?23)?{

if(!Settings.canDrawOverlays(getApplicationContext()))?{

//啟動Activity讓用戶授權

Intent?intent?=?new?Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);

startActivity(intent);

return;

}?else?{

//執(zhí)行6.0以上繪制代碼

}

}?else?{

//執(zhí)行6.0以下繪制代碼

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蛋逾,隨后出現(xiàn)的幾起案子集晚,更是在濱河造成了極大的恐慌,老刑警劉巖区匣,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件偷拔,死亡現(xiàn)場離奇詭異,居然都是意外死亡亏钩,警方通過查閱死者的電腦和手機条摸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铸屉,“玉大人钉蒲,你說我怎么就攤上這事〕固常” “怎么了顷啼?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長昌屉。 經常有香客問我钙蒙,道長,這世上最難降的妖魔是什么间驮? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任躬厌,我火速辦了婚禮,結果婚禮上竞帽,老公的妹妹穿的比我還像新娘扛施。我一直安慰自己,他們只是感情好屹篓,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布疙渣。 她就那樣靜靜地躺著,像睡著了一般堆巧。 火紅的嫁衣襯著肌膚如雪妄荔。 梳的紋絲不亂的頭發(fā)上泼菌,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音啦租,去河邊找鬼哗伯。 笑死,一個胖子當著我的面吹牛篷角,可吹牛的內容都是我干的焊刹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼内地,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赋除?” 一聲冷哼從身側響起阱缓,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎举农,沒想到半個月后荆针,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡颁糟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年航背,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棱貌。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡玖媚,死狀恐怖,靈堂內的尸體忽然破棺而出婚脱,到底是詐尸還是另有隱情今魔,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布障贸,位于F島的核電站错森,受9級特大地震影響,放射性物質發(fā)生泄漏篮洁。R本人自食惡果不足惜涩维,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望袁波。 院中可真熱鬧瓦阐,春花似錦、人聲如沸篷牌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽娃磺。三九已至薄湿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背豺瘤。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工吆倦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人坐求。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓蚕泽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親桥嗤。 傳聞我的和親對象是個殘疾皇子须妻,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容

  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,424評論 0 17
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,163評論 25 707
  • 2017年5月17日 Kylin_Wu 標注(★☆)為考綱明確給出考點(必考) 常見手機系統(tǒng)(★☆) And...
    Azur_wxj閱讀 1,815評論 0 10
  • 我想對 這個世界 說一聲 平安 我想對 所有的人們 道一聲 平安 我知道 你們忙碌著 疲憊著 過完今天 我也知道 ...
    彼得王子閱讀 99評論 0 0
  • 西安之行,旅途開始渊鞋〈赂火車千里,歡聲笑語锡宋。課上游戲儡湾,其樂融融。競答知識执俩, 答題搶包徐钠。興慶公園,大雨滂沱役首,沉香避雨丹皱,別...
    佩妍閱讀 152評論 1 0