編輯:關於android開發
開發手機APP和 H5 應用經常需要在本地和線上環境分開測試,一般想到的操作都是修改hosts,我也一直這麼干的,但手機上修改hosts是需要 ROOT權限的,這樣太過麻煩,還有變磚頭的風險,而且有些手機根本不能ROOT的。
忙和了一下午,總算完全達到預期,有點收獲,下面說說重點,主要是兩個:
做個本地的 DNS 服務,有點像DNS劫持的感覺,這個是一勞永逸的辦法
首先,你需要一個Linux 虛擬機或一台服務器
我下面的配置使用的 Centos7.0 系統,不通版本可能有些差別的。
一、安裝 DNSMasq
# 安裝 yum install dnsmasq -y service dnsmasq start # 編輯配置參數 vi /etc/dnsmasq.conf # 查找 resolv-file 去掉注釋符,添加文件路徑 # 表示 dnsmasq 會從這個指定的文件中尋找上游dns服務器 resolv-file=/etc/resolv.conf # 查找 no-hosts , 確保前面有 # 井號的(表示被注釋掉的),否則 hosts 配置不起作用 # 監聽的IP listen-address=127.0.0.1,192.168.0.103 strict-order addn-hosts=/etc/hosts cache-size=32768 # 配置到網卡參數,centos7 和 6 的網卡名是不同的,用ifconfig 查看替換下 # centos 7 以前 vi /etc/sysconfig/network-scripts/ifcfg-eth0 # centos7 不一定相同 vi /etc/sysconfig/network-scripts/ifcfg-enp3s0 # 最多只能寫3個,注意原配置中若存在則需要調整 DNS1=127.0.0.1 DNS2=192.168.0.103 DNS3=202.101.172.35 #DNS3=202.101.172.47 # 保存後, resolv.conf 文件內容會自動更新的 cat /etc/resolv.conf # 查看DNS是否已添加進去 # 注冊服務 chkconfig dnsmasq on # 重啟 /etc/init.d/dnsmasq restart # centos7 下使用的命令 systemctl restart dnsmasq # 檢查是否安裝成功 netstat -tunlp|grep 53 yum install bind-utils # 測試是否啟用 DNS 配置 dig m.ai9475.com # 編輯 hosts 文件,配置本地 DNS 劫持域名 IP 的映射關系 vi /etc/hosts 192.168.0.105 m.ai9475.com
這樣服務端的 DNS 劫持就基本配置好了 下一步還需要在手機上設置 DNS 對應的 IP,
打開 網絡設置 -> wifi連接 -> 修改網絡 -> 高級 -> 靜態IP方式 -> 修改第一個NS的IP即可,第二個可用正常的公網DNS
如下圖:
最後注意:修改 hosts 之後,需要重啟 dnsmasq 還有 network 最好也重啟
二、使用本地網絡代理
這個方法比較有局限性,對 H5 網頁應用還可以,對部分原生 APP 可能無效哦,但有個好處是配合一些軟件可以做前端的抓包查看,對測試接口之類的查看數據很有用
我用到過兩個軟件,
1. Fiddler
這個軟件使用很方便,網上有很多介紹,這裡就不說了,但據說僅支持 windows 平台
2. Whistle
這個是開源的項目,跨平台,我目前用的是這個,配置也很簡單
下面簡單說下如何安裝使用
依賴 Nodejs,所以先安裝 nodejs
我這裡圖方便,就用 yum 的方式安裝了
curl --silent --location https://rpm.nodesource.com/setup_4.x | bash - yum install -y nodejs
下載速度可能有些忙,10KB/s 下載了好半天才下完,耐心等吧
npm install cnpm -g --registry=https://registry.npm.taobao.org cnpm install -g whistle w2 start
這樣就完成了。。。
查看代理請求數據,就是抓包數據
http://127.0.0.1:8900
http://127.0.0.1:8899
:8899 是代理的端口,但也可以查看抓包數據
兩個端口都可以看,下圖看看效果先(圖片可以直接拖拽查看大圖)
其他的就直接看官方說明文檔吧,中文的,很清晰明了
https://avwo.github.io/whistle/install.html
後面就是手機上操作和上面的 DNS 設置是同一個地方
打開 網絡設置 -> wifi連接 -> 修改網絡 -> 高級 -> 代理(手動配置) -> 填寫局域網中服務器的IP,如192.168.0.103,端口 8899
如下圖:
最後就是修改服務器上的 hosts,參考上方 DNS 配置 hosts 的操作是一樣的
差不多就這樣設置好了。
最後需要注意的就是清除手機上的緩存,一定要關閉浏覽器和應用,清理內存後再打開,否則手機上的 DNS 和網絡設置可能沒有切換過來的。
以上配置我都是在 Android 設備上測試的, iOS 沒有應用可測試,不過按理說應該是一樣的效果的。
雖然代理的方法對有些APP 不一定有用,但建議還是 DNS 和 代理一起上吧。。。就這樣了。
Android MeasuerSpce的由來及使用 含義:MeasuerSpce是parent傳遞給child的一組測量值(size)和模式(mode)的組合。 使用場景
上次簡單地介紹了AudioRecord和AudioTrack的使用,這次就結合SurfaceVie
Android View分區域點擊實現方案——1.根據坐標范圍 Android View分區域點擊實現方案——1.根據坐標范圍 標簽: Android學習記錄
Android5.0新特性-Material Design 概述 2014年,Google攜Android5.X重裝歸來,全新的UI設計和更加優化的性能,令開發者眼前一亮
(試筆)一、Android四大框架之ContentProvider的學習