安装 pacman -S privoxy
配置 修改/etc/privoxy/config
添加:
forward-socks5 / 127.0.0.1:1080 . #ss的代理
listen-address localhost:8118
重启 systemctl restart privoxy
PS 终端中使用代理 export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118
问题 App中一个遗留的bug,当用户使用支付宝进行支付时会概率出错.并且没有规律.
原因 对比支付宝的的url,发现部分参数中多了+号,程序中对url进行了URLDecoder.<em>decode</em>(url),导致空格变成了+号,从而导致支付宝报错.
背景 Android-async-http已经不更新了。ps:还为这个库提交过功能https://github.com/android-async-http/android-async-http/pull/840
Android-async-http是基于HttpClient的。
替换方案 将项目中所有的请求代码都替换工作量巨大,也容易出问题。所以采用将Okhttp封装为Android-async-http的方式进行替换。
android-async-http的使用方法:
从代码可以看出,想要快速的替换需要:
1.使用okhttp来实现AsyncHttpClient
2.实现AsyncHttpResponseHandler,FileAsyncHttpResponseHandler,JsonHttpResponseHandler,TextHttpResponseHandler等项目中使用的Handler即可.
背景 用户反馈华为Mate10 无法使用App。
升级 targetSdkVersion = 26
遇到的问题 网络请求异常
TransactionTooLargeException
通知渠道
FileUriExposedException
Charles无法抓Https
MODE_WORLD_READABLE no longer supported
BadTokenException 7.1
Not allowed to start service
getRunningServices deprecated in API level 26 As of O, this method is no longer available to third party applications. For backwards compatibility, it will still return the caller’s own services.
ps:时间太长了想起来再写,详情有空再整理
命令 Remote git remote set-url origin
[email protected]:xfans/VirtualApp.git
git push origin master
Upstream git remote add upstream
[email protected]:asLody/VirtualApp.git
git fetch upstream
git merge upstream/master
快速下载android frameworks源码 git clone --branch android10-release
[email protected]:mirrors/platform_frameworks_base.git --depth 1
介绍 优点: 1.基于Arch,但不用折腾
2.滚动更新,但比Arch慢,比Arch更稳定
3.支持AUR仓库,软件非常多,比如deepin qq,sogou输入法等,一行命令就可以安装
4.Wiki非常丰富
缺点: 1.滚动更新,容易滚挂
安装步骤 下载 https://mirrors.tuna.tsinghua.edu.cn/manjaro-cd/
usb安装 df -h 查看你的u盘
sudo umount /dev/sdb 卸载U盘
dd if=xxx.iso of=/dev/sdb bs=1M 制作启动盘
note: /dev/sdb为u盘
添加国内源 编辑 vi /etc/pacman-mirrors.conf
修改 OnlyCountry=China
根据速度排序 pacman-mirrors -g
添加Arch源 编辑 vi /etc/pacman.conf
在末尾添加 同步 sudo pacman -Syy && sudo pacman -S archlinuxcn-keyring
安装zsh 执行 sudo pacman -S zsh
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
chsh -s /bin/zsh
安装输入法 sudo pacman -S fcitx-im # 全部安装
问题 部分客户端api报错,特别是8.0系统上,访问api出现bad request http request or invalid response,from ulb错误。
解决步骤 1.服务器联调 服务器端未发现问题,参数都对。服务器上也没有这句错误信息。猜测应该是服务器上层报出来的错误,如负载均衡。
2.用Charles抓包 Charles抓包后,就不会出现该错误了。后来发现Charles对错误报文进行了兼容处理,发给服务器的应该对的。
3.去GIthub查网络库的issues 项目中使用的是,Android-async-http这个库,issues中没有人说8.0中有这个问题,猜想应该是自己代码中的问题。
4.大鲨鱼Wireshark抓包 大鲨鱼Wireshark抓包后会出现该错误,没有看出报文有异常。
比较正确的报文和错误的报文,发现大小不一样。
最终发现(找了好久,反正就是很艰难),错误的报文Header中多了一个空行。
原因 在往Header中添加参数时,有一个参数出现了\n,正常情况下客户端发送报文的时会忽略\n,而有的版本把\n放在了报文中,导致报文格式出错。
背景 有时候需要在GitHub上下载单个目录里面的文件,而不需要去克隆整个项目,太大的项目克隆起来太慢。
解决方案 GitHub是支持SVN访问的,所以可以使用SVN下载单个目录。
下载master分支 复制浏览器地址栏中的地址,如:
https://github.com/bumptech/glide/tree/master/integration
将tree改为trunk即可。
https://github.com/bumptech/glide/trunk/integration
下载其他分支 如:
https://github.com/bumptech/glide/tree/3.0/integration
将tree改为branches即可。
https://github.com/bumptech/glide/branches/3.0/integration
然后svn checkout 即可。
背景 用户经常在国外使用App,国外的网络环境更加复杂,经常会出现UnknownHostException的异常,无法解析DNS。
解决方案 当遇到该异常时就需要自己去解析DNS。常用的自己解析DNS的方式有两种
1.自己拿到IP后替换域名(App老的方式) 比如使用dnsjava拿到IP后需要:
augmented-traffic-control A tool to simulate network conditions,Facebook提供的一款网络环境模拟工具,可以使用他来测试App在各种网络环境下的问题。
安装环境要求 Python2.7、Django1.10.+
以下在Manjora下的安装命令
切换Python环境到Python2.7 安装pip sudo pacman -S python2-pip
安装Django1.10.+ sudo pip install Django==1.10.8
安装ATC 安装lib sudo pacman -S pip install atc_thrift atcd django-atc-api django-atc-demo-ui django-atc-profile-storage
Django配置 django-admin startproject atcui
cd atcui
修改atcui/settings.py中的INSTALLED_APPS 修改atcui/urls.py中的urlpatterns及引用 更新数据库 python manage.py migrate
创建虚拟Ap Linux开启虚拟AP
启动ATC sudo atcd --atcd-wan wlp3s0 --atcd-lan ap0
注意:wlp3s0是我的无线网卡,ap0是我创建的虚拟ap网卡
设置错误可能出现:https://github.com/facebook/augmented-traffic-control/issues/239
启动ATCUI python manage.py runserver 0.0.0.0:8000
导入默认配置 下载该路径下的文件https://github.com/facebook/augmented-traffic-control/tree/master/utils 运行导入命令 ./restore-profiles.sh localhost:8000
手机使用ATC 使用Android、iOS 的浏览器访问
ip:8000 ip为你电脑的ip