日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android7.0适配方案

發布時間:2025/3/21 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android7.0适配方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1安裝時解析錯誤

?

我們的App通常會有檢查更新的功能。用戶在收到提示更新并且下載完后,會自動打開安裝頁面讓用戶來去安裝。這時就會出現安裝錯誤的問題,這類的問題的可能性比較多。比如較低版本的App想要覆蓋已有的較高版本App會提示安裝未完成,或是簽名不一致導致的。

?

不過7.0上常見的有以下兩種情況。

?

1.應用間共享文件

?

在targetSdkVersion大于等于的24的App中,但是我們沒有去適配7.0。那么在調用安裝頁面,或修改用戶頭像操作時,就會失敗。那么就需要你去適配7.0或是將targetSdkVersion改為24以下(不推薦)。

?

適配的方法這里就不細講,大家可以看看?Android 7.0 行為變更 通過FileProvider在應用間共享文件吧?這篇文章。

?

2.APK signature scheme v2

?

Android?7.0 引入一項新的應用簽名方案 APK Signature Scheme v2,它能提供更快的應用安裝時間和更多針對未授權 APK 文件更改的保護。在默認情況下,android?Studio 2.2 和 Android Plugin for Gradle 2.2 會使用 APK Signature Scheme v2 和傳統簽名方案來簽署您的應用。詳細看安卓官方說明(https://developer.android.google.cn/about/versions/nougat/android-7.0.html#apk_signature_v2)。

?

簡單地說就是任何方式的篡改APK 文件,在利用了V2簽名的apk上會失效。

我所用的Android Studio目前是2.3.3 在?Gradle?2.2.3時。

?

打包頁面是這樣

?

?

可以看到默認是V1 和V2選中的。

1)只勾選v1簽名就是傳統方案簽署,但是在7.0上不會使用V2安全的驗證方式。?
2)只勾選V2簽名7.0以下會顯示未安裝,7.0上則會使用了V2安全的驗證方式。?
3)同時勾選V1和V2則所有版本都沒問題。

?

這里問題就來了,默認全部勾選,按道理所有版本是沒有問題的。

?

那么我們為什么還是安裝錯誤?

?

其實是因為我們項目采用了美團早期的快速生成渠道包(https://tech.meituan.com/mt-apk-packaging.html)方案。這種方案不適用于V2的簽名方案。(因為實現思路就是給已有的apk文件中添加空的渠道文件)

?

解決辦法:

?

1.如果你的渠道較少,可以用gradle方式的多渠道打包。渠道多的話就不適用了。

?

2.畢竟V2不是強制的,那么我們要用傳統方案簽署,可以打開模塊級build.gradle?文件,然后將行v2SigningEnabled false添加到您的版本簽名配置中:

?

android {...defaultConfig { ... }signingConfigs {release {storeFile file("myreleasekey.keystore")storePassword "password"keyAlias "MyReleaseKey"keyPassword "password"v2SigningEnabled false //<--這里}}}

?

或者將Gradle?升級為2.3以上。那么打包頁面是這樣

?

?

我們可以不勾選V2選項。

?

3.前兩種方法是比較快速的可以解決問題,但是一旦這種安全措施被強制(畢竟我們可以感受到安卓在安全方面的努力,比如權限控制、應用間共享文件),我們怎么辦。

?

其實美團早早發現了這個問題,具體看這篇?新一代開源Android渠道包生成工具Walle(https://tech.meituan.com/android-apk-v2-signature-scheme.html)。里面有深度的原理講解,滿滿的干貨。

?

?

2PopupWindow位置不正確

?

7.0系統的手機上,PopupWindow彈出位置不正確。

?

有兩種可能:

?

1.我們使用了update方法,同時設置了Gravity(Gravity.NO_GRAVITY沒事)。因為在update方法中有調用computeGravity方法去獲取Gravity。(7.0以下沒有獲取Gravity進行更新判斷)

?

?

public void update() {// 省略部分代碼final int newGravity = computeGravity();if (newGravity != p.gravity) {p.gravity = newGravity;update = true;}if (update) {setLayoutDirectionFromAnchor();mWindowManager.updateViewLayout(mDecorView, p);}}

?

?

Android 7.0 computeGravity方法源碼

?

?

private int computeGravity() {int gravity = Gravity.START | Gravity.TOP;if (mClipToScreen || mClippingEnabled) {gravity |= Gravity.DISPLAY_CLIP_VERTICAL;}return gravity; }

?

Android 7.1 computeGravity方法

?

?

private int computeGravity() {int gravity = mGravity == Gravity.NO_GRAVITY ? Gravity.START | Gravity.TOP : mGravity;if (mIsDropdown && (mClipToScreen || mClippingEnabled)) {gravity |= Gravity.DISPLAY_CLIP_VERTICAL;}return gravity; }

?

很顯然在7.0上我們設置的Gravity被覆蓋了。解決就很簡單了,不使用update方法。如果你真的要使用可以參考這篇文章的方法。

?

PopupWindow 在 Android N(7.0) 的兼容性問題

http://www.jianshu.com/p/0df10893bf5b

?

2.PopupWindow高度為MATCH_PARENT,在顯示的時候調用showAsLocation方法時,PopupWindow并沒有在指定控件的下方顯示。如果使用showAsDropDown,會全屏顯示。

?

解決方法:

?

1.最簡單的解決方法就是指定?PopupWindow?的高度為?WRAP_CONTENT, 調用?showAsDropDown方法。

2.或者彈出時做一下判斷處理(代碼來自PopupWindowCompat?https://github.com/tianma8023/PopupWindowCompat)

?

?

if (Build.VERSION.SDK_INT >= 24) { // Android 7.x中,PopupWindow高度為match_parent時,會出現兼容性問題,需要處理兼容性int[] location = new int[2]; // 記錄anchor在屏幕中的位置anchor.getLocationOnScreen(location);int offsetY = location[1] + anchor.getHeight();if (Build.VERSION.SDK_INT >= 25) { // Android 7.1 ,8.0中,PopupWindow高度為 match_parent 時,會占據整個屏幕// 故而需要在 Android 7.1上再做特殊處理int screenHeight = ScreenUtils.getScreenHeight(context); // 獲取屏幕高度popupWindow.setHeight(screenHeight - offsetY); // 重新設置 PopupWindow 的高度}popupWindow.showAtLocation(anchor, Gravity.NO_GRAVITY, 0, offsetY); } else {popupWindow.showAsDropDown(anchor); }

?

3后臺優化

?

小伙伴們都知道在Android中有一些隱式廣播,使用這些隱式廣播可以做一些特定的功能,如,當手機網絡變成WiFi時自動下載更新包等。?

?

但,這些隱式廣播會在后臺頻繁啟動已注冊偵聽這些廣播的應用,從而帶來很大的電量消耗,為緩解這一問題來提升設備性能和用戶體驗,在Android 7.0中刪除了三項隱式廣播,以幫助優化內存使用和電量消耗。

?

Android 7.0 應用了以下優化措施:

?

  • 在 Android 7.0上 應用不會收到?CONNECTIVITY_ACTION?廣播,即使你在manifest清單文件中設置了請求接受這些事件的通知。 但,在前臺運行的應用如果使用BroadcastReceiver 請求接收通知,則仍可以在主線程中偵聽 CONNECTIVITY_CHANGE。

  • 在 Android 7.0上應用無法發送或接收?ACTION_NEW_PICTURE?或ACTION_NEW_VIDEO?類型的廣播。

?

?

應對策略:Android 框架提供多個解決方案來緩解對這些隱式廣播的需求。 例如,JobScheduler API?

https://developer.android.google.cn/reference/android/app/job/JobScheduler.html
提供了一個穩健可靠的機制來安排滿足指定條件(例如連入無線流量網絡)時所執行的網絡操作。?

您甚至可以使用?JobScheduler API?來適應內容提供程序變化。

?

另外,大家如果想了解更多關于后臺的優化可查閱后臺優化。

https://developer.android.google.cn/preview/features/background-optimization.html

?

移動設備會經歷頻繁的連接變更,例如在 Wi-Fi 和移動數據之間切換時。 目前,可以通過在應用清單中注冊一個接收器來偵聽隱式?CONNECTIVITY_ACTION?廣播,?
讓應用能夠監控這些變更。?

?

由于很多應用會注冊接收此廣播,因此單次網絡切換即會導致所有應用被喚醒并同時處理此廣播。

?

以上內容來自這里

https://github.com/crazycodeboy/crazycodeboy.github.io/blob/master/_posts/2016-9-28-Android7.0適配心得.md

?

?

4其他

?

多語言特性

?

首先是官方的API指南:語言和語言區域

http://blog.csdn.net/qq_17766199/article/details/n/guide/topics/resources/multilingual-support.html

變化對比:?Android 7.0多語言支持開發淺析

http://blog.csdn.net/cekiasoo/article/details/53012646

實現功能:?Android 實現應用內置語言切換

http://blog.csdn.net/cekiasoo/article/details/54933135

?

通知欄適配

?

這里有一篇非常詳細的通知欄介紹與適配,分享給大家:Android通知欄介紹與適配總結

http://iluhcm.com/2017/03/12/experience-of-adapting-to-android-notifications/

?

WebView問題

?

  • Android 7.0 WebView 部分機型打不開

    http://blog.csdn.net/u012347067/article/details/70829013

  • Android 7.0 WebView 二級跳轉后界面空白

    http://www.jianshu.com/p/07b781795b78

?

最后覺得不錯,點個贊吧!

原文鏈接:https://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650823906&idx=1&sn=7a0351cad466a4c6cde4fafe9378efc9&chksm=80b7887cb7c0016a69cfd98c2187b76813b161b9dc329df7889d4b78a4f61582fe7328d981a2&scene=21#wechat_redirect

總結

以上是生活随笔為你收集整理的Android7.0适配方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av看片资源| 丁香九月婷婷 | 亚洲桃色av | 91黄址| 欧美精品动漫 | 精品视频在线观看 | 欧美激情影音先锋 | 韩国伦理电影免费在线 | av高清不卡 | 99热热热热| 日韩av一 | 少妇综合网 | 开心激情播播网 | 亚洲视频一区在线 | 在线观看福利片 | 精品国产综合 | 久久99精品久久久久久水蜜桃 | 狼人狠狠干 | 亚洲一级片免费 | 少妇搡bbbb搡bbb搡小说 | 亚洲精品国产suv | 天天干干干干干 | 亚洲精品乱码久久久久久日本蜜臀 | 日韩精品成人免费观看视频 | 麻豆视频91 | 久久精品一本 | 日日操狠狠操 | 草久免费视频 | 国产亚洲精久久久久久无码77777 | 在线观看黄色网页 | 黄色av播放 | 成人免费一区二区三区 | 手机在线免费看av | 视频久久 | 国产麻豆一级片 | 中国老头性行为xxxx | 奇米四色在线视频 | 国产区123 | 一区二区三区国产 | 亚洲一区中文字幕在线 | 深夜免费福利视频 | 日本女优网址 | 国产绳艺sm调教室论坛 | 香蕉影院在线观看 | 亚洲国产精品久久久久久久 | 超碰首页| 成人av片在线观看 | 麻豆传媒网站 | 国产精品电影网 | 日本黄色一区二区 | 国产调教在线观看 | 亚洲精品国产精品乱码在线观看 | 91精品毛片 | 久久两性视频 | 欧美性猛交ⅹxx | 先锋影音av资源在线观看 | 国产youjizz | 美腿丝袜亚洲色图 | 女人扒开腿让男人桶爽 | 综合色88 | 日韩一区欧美 | 91中文字日产乱幕4区 | 亚洲aaaa级特黄毛片 | 伊人久久色 | 香蕉视频一级片 | 精品产国自在拍 | 日本一区视频在线 | 久久久国| 国产福利在线视频观看 | 亚洲欧美日韩综合在线 | 林由奈在线观看 | 猛男大粗猛爽h男人味 | 国产视频一区二区在线播放 | 日批免费在线观看 | 久草新在线 | 成人av免费在线观看 | 国产伦理在线观看 | 91精品国产一区二区无码 | 羞羞的网站在线观看 | 91色区| 亚洲av永久一区二区三区蜜桃 | 播播网色播播 | 国产成人一区二区三区影院在线 | 欧美熟妇另类久久久久久不卡 | 噼里啪啦国语版在线观看 | xx性欧美肥妇精品久久久久久 | 欧美精品成人一区二区三区四区 | 翔田千里一区二区三区av | 日本天堂一区 | 一区二区三区伦理片 | 真人抽搐一进一出视频 | 天天av网| 永久免费毛片 | 小视频国产 | 又嫩又硬又黄又爽的视频 | 在线免费一区 | 日本在线视频免费观看 | 韩国美女视频在线观看18 | 91高清在线免费观看 |