⑴ android 7.0 以上 Charles 和 Fiddler 無法抓取 HTTPS 包的解決方式
最近升級了 targetSdkVersion 到 28 後發現在 Android 7.0 以上機型 Charles 抓取 https 包時顯示找不到證書,但是 Android 6.0 機型還是可以正常抓包。原因是因為從 Android 7.0 開始,默認的網路安全性配置修改了,具體請閱讀官方文檔 網路安全性配置 。
Android 6.0(API 23)及更低版本應用的默認網路安全性配置如下:
而在 Android 7.0(API 24)到 Android 8.1(API 27)的默認網路安全性配置如下:
而在 Android 9.0(API 28)及更高版本的默認網路安全性配置如下:
對比很容易發現,在 Android 7.0(API 24)到 Android 8.1(API 27),默認不再信任用戶添加的 CA 證書,所以也就不再信任 Charles 和 Fiddler 抓包工具的證書,所以抓取 HTTPS 包時才會失敗。而且在 Android 9.0(API 28)及更高版本上,不僅默認只系統預裝的 CA 證書,還默認禁止所有明文通信(不允許 http 請求)。
所以解決該問題就需要應用信任 Charles 和 Fiddler 抓包工具的證書抓包工具即可。
最簡單的解決方式是使用 Android 6.0 以下的網路安全性配置:
添加 res/xml/network_security_config.xml :
然後在清單文件中指向該文件:
這種解決方式有一個安全風險:正式版的應用會有被他人抓包的風險。
如何只在調試模式下允許抓包呢?
使用 <debug-overrides> 即可實現只在 android:debuggable 為 true 時才生效的配置:
網上有些解決方式是將 Charles 和 Fiddler 的證書添加到 raw 文件夾下的方式也可以,但是繁瑣了點。
在 Android 9.0(API 28)以上允許部分 http 請求
最佳的解決方式肯定是全部使用 https 請求,安全性更高,如果有些請求或測試環境下還是需要使用 http 請求,需要在網路安全性配置添加白名單:
⑵ 【Android初級】如何正確獲取WiFi列表
獲取Android設備上的WiFi列表是一項常見的需求,但實現過程中需注意正確的步驟和方法。以下為簡化版步驟,確保能獲取到最新且准確的WiFi列表信息。
本地環境設定如下:
Android Studio版本:3.0.1;DEMO APK的Min SDK Version為API 23,Target SDK Version為API 24,Compile SDK Version為API 26;真機運行於Android 7.0系統。
獲取WiFi列表的完整流程:
1. 開啟WiFi並激活定位服務,確保設備能被正確識別和使用。
2. 在`onCreate`方法中動態申請`ACCESS_FINE_LOCATION`許可權,以獲取定位信息。
3. 同樣在`onCreate`內注冊廣播接收器,以便在定位服務改變時接收通知。
4. 定義`mReceiver`類,並在布局文件中加入一個`Button`,以便觸發WiFi掃描。
5. 在`AndroidManifest.xml`文件中聲明`ACCESS_FINE_LOCATION`許可權。
值得注意的是,申請許可權的操作可能在`onCreate`中重復進行,這是因為Android系統可能在運行時才對應用許可權進行檢查,確保應用僅在實際需要時請求許可權,而非僅在編譯時聲明。
實現過程中的常見誤區:
一些開發者可能會在調用`startScan`方法後立刻調用`getScanResults`獲取結果,但這會得到上一次掃描的WiFi列表,而非最新的信息。正確的做法是在接收器的`onReceive`方法中處理並獲取掃描結果。
在實現過程中遇到任何問題或有不同見解,歡迎與我一起探討,共享解決方案。
⑶ 如何查看android api
查看android api有兩種方式:在線查看與離線查看。
1. 在線查看
在線查看一般是指在安卓開發者官網上直接查看,但這需要你的網路環境可以訪問谷歌。
官方地址如下:
https://developer.android.com/reference/packages.html
目前最新的API是android 24,如下圖,左邊可以切換API的版本,右邊可以切換顯示包索引還是類索引。
依次打開Develop-->Reference,然後就可以看到API文檔了。這個docs幾乎包含了開發者官網的全部內容,所以除了查看API,還可以查看官方教程等資源。
另外,雖說這是離線文檔,但裡麵包含了谷歌字體服務和幾個連接谷歌的腳本,所以打開時可能會很慢。解決方案是用一個編輯器比如Notepad++,搜索各文件中包含的訪問谷歌服務的網址字串,並將其替換為空串就可以了。
⑷ 如何查看Android SDK API文檔
查看android api有兩種方式:在線查看與離線查看。
1. 在線查看
在線查看一般是指在安卓開發者官網上直接查看,但這需要你的網路環境可以訪問谷歌。
官方地址如下:
https://developer.android.com/reference/packages.html
目前最新的API是android 24,如下圖,左邊可以切換API的版本,右邊可以切換顯示包索引還是類索引。
依次打開Develop-->Reference,然後就可以看到API文檔了。這個docs幾乎包含了開發者官網的全部內容,所以除了查看API,還可以查看官方教程等資源。
另外,雖說這是離線文檔,但裡麵包含了谷歌字體服務和幾個連接谷歌的腳本,所以打開時可能會很慢。解決方案是用一個編輯器比如Notepad++,搜索各文件中包含的訪問谷歌服務的網址字串,並將其替換為空串就可以了。