〖Android〗代理与正常网络分开同步CyangenMod源码
为了同步CyanogenMod源代码,你也学会了翻墙,对吗?
通常 .repo/manifest.xml 文件有Google AOSP的Project,也有Github的Project;
访问Github不需要翻墙,而同步Google源代码则避免不了了;
想分开同步,想智能一点吗?
#!/usr/bin/env python
# encoding: utf-8 import os,sys,subprocess
import xml.dom.minidom
from xml.dom.minidom import Node # 代理环境
proxy_user=''
proxy_pass=''
proxy_host='123.123.123.123' # 请改
proxy_port=12345 # 请改
if len(proxy_user) == 0:
http_proxy="http://%s:%d" %(proxy_host, proxy_port)
https_proxy="http://%s:%d" %(proxy_host, proxy_port)
else:
http_proxy="http://%s:%s@%s:%d" %(proxy_user, proxy_pass, proxy_host, proxy_port)
https_proxy="http://%s:%s@%s:%d" %(proxy_user, proxy_pass, proxy_host, proxy_port)
proxyenv={"http_proxy":http_proxy, "https_proxy":https_proxy} # 解析.repo/manifest.xml文件,取出project节点
doc = xml.dom.minidom.parse('.repo/manifest.xml')
projects = doc.getElementsByTagName('project') github_projects=[]
google_projects=[] errorsync_projects=[] # 执行同步函数
def sync_project(project, env=None):
"""
执行同步命令
project: 期望同步的Project name
"""
cmd="repo sync %s" %project
print '>>>', cmd
# 执行同步
process = subprocess.Popen(cmd, shell=True, env=env,\
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# 实时读取STDOUT
out = process.stdout.readline()
while out:
print out,
out = process.stdout.readline()
err = process.stderr.readline()
# 实时读取STDERR
while err:
print err,
err = process.stderr.readline()
# 等待进程结束获得返回值
process.poll()
errcode = process.returncode
# 若有错误追加到错误数组
if errcode != 0:
errorsync_projects.append(project) # 对project进行分类
# AOSP的Project保存在 google_projects 数组
# CyanogenMod的Project保存在 github_project 数组
for node in projects:
remote=node.getAttribute('remote')
project=node.getAttribute('name')
if remote == 'aosp':
google_projects.append(project)
else:
github_projects.append(project) cur_env=os.environ.copy()
cur_env["http_proxy"]=http_proxy
cur_env["https_proxy"]=https_proxy
# 同步来自Google的Project
for project in google_projects:
sync_project(project, cur_env)
sys.exit() # 同步来自Github的Project
for project in github_projects:
sync_project(project) # 输出同步出错的Project
if len(errorsync_projects) != 0:
print '>>> 同步出现了错误的Project: '
for project in errorsync_projects:
print project print '>>> 请执行命令以重新同步Project: '
for project in errorsync_projects:
if project in google_projects:
sync_cmd="env http_proxy=%s https_proxy=%s repo sync %s" %(http_proxy, https_proxy, project) else:
sync_cmd="repo sync %s" %project
print sync_cmd
保存脚本到 sync_split.py,同步的时候执行:
cd /path/to/src
python sync_split.py
Enjoy!
〖Android〗代理与正常网络分开同步CyangenMod源码的更多相关文章
- Okhttp同步请求源码分析
进阶android,OKhttp源码分析——同步请求的源码分析 OKhttp是我们经常用到的框架,作为开发者们,我们不单单要学会灵活使用,还要知道他的源码是如何设计的. 今天我们来分析一下OKhttp ...
- android Service Activity三种交互方式(付源码)(转)
android Service Activity三种交互方式(付源码) Android应用服务器OSBeanthread android Service Binder交互通信实例 最下边有源代码: ...
- 《Android NFC 开发实战详解 》简介+源码+样章+勘误ING
<Android NFC 开发实战详解>简介+源码+样章+勘误ING SkySeraph Mar. 14th 2014 Email:skyseraph00@163.com 更多精彩请直接 ...
- Android反编译(一)之反编译JAVA源码
Android反编译(一) 之反编译JAVA源码 [目录] 1.工具 2.反编译步骤 3.实例 4.装X技巧 1.工具 1).dex反编译JAR工具 dex2jar http://code.go ...
- 40 网络相关函数(八)——live555源码阅读(四)网络
40 网络相关函数(八)——live555源码阅读(四)网络 40 网络相关函数(八)——live555源码阅读(四)网络 简介 15)writeSocket向套接口写数据 TTL的概念 函数send ...
- 39 网络相关函数(七)——live555源码阅读(四)网络
39 网络相关函数(七)——live555源码阅读(四)网络 39 网络相关函数(七)——live555源码阅读(四)网络 简介 14)readSocket从套接口读取数据 recv/recvfrom ...
- 38 网络相关函数(六)——live555源码阅读(四)网络
38 网络相关函数(六)——live555源码阅读(四)网络 38 网络相关函数(六)——live555源码阅读(四)网络 简介 12)makeSocketNonBlocking和makeSocket ...
- 37 网络相关函数(五)——live555源码阅读(四)网络
37 网络相关函数(五)——live555源码阅读(四)网络 37 网络相关函数(五)——live555源码阅读(四)网络 简介 10)MAKE_SOCKADDR_IN构建sockaddr_in结构体 ...
- 36 网络相关函数(四)——live555源码阅读(四)网络
36 网络相关函数(四)——live555源码阅读(四)网络 36 网络相关函数(四)——live555源码阅读(四)网络 简介 7)createSocket创建socket方法 8)closeSoc ...
随机推荐
- jquery获取table,遍历输出tr中各个td的内容(转载)
首先,依赖jquery.. 1 $('#btntb').click(function(){ 2 $('#tab tr').each(function(i){ // 遍历 tr 3 $(this).ch ...
- [转]php的public、protected、private三种访问控制模式的区别
FROM : http://blog.163.com/weiwenjuan_bj/blog/static/14035033620129304183850/?suggestedreading publi ...
- [转]http status 汇总
转:http://www.cnblogs.com/cxd4321/archive/2008/11/20/1337776.html 常见HTTP状态码 200 OK 301 Moved Permanen ...
- 整理:FPGA选型
针对性整理下FPGA选型问题 一.获取芯片资料: 要做芯片的选型,首先就是要对有可能要面对的芯片有整体的了解,也就是说要尽可能多的先获取芯片的资料.现在FPGA主要有4个生产厂家,ALTERA,XIL ...
- 构建-0 Gradle DSL 属性和方法【API】
Android Plugin DSL Reference This is the DSL reference for Android Gradle Plugin. Start reading by f ...
- win10安装jdk以及配置环境变量
本人使用的jdk版本:jdk-8u171-windows-x64.exe, 1.安装jdk: 双击 jdk-8u171-windows-x64.exe ,然后就是简单的安装流程,安装文件位置建议保持默 ...
- xgboost入门与实战(实战调参篇)
https://blog.csdn.net/sb19931201/article/details/52577592 xgboost入门与实战(实战调参篇) 前言 前面几篇博文都在学习原理知识,是时候上 ...
- 1 R语言介绍
注释:# 赋值:<- 查看.设定当前工作目录:getwd() setwd() wd:workspace directory[setwd("c:/myproject/project ...
- Get file extention in XSLT
When working with data view web parts or data form web parts in SharePoint, you might want to use ...
- Skyline开发3-没有注册类0x80040154
原生64位程序 我们现在使用的操作系统多为64位系统,其中大部分用的还是32位的软件. 64位软件优点是:可以进行更大范围的整数运算:可以支持更大的内存:除做科学运算的时候取得更好的性能外,不能提高其 ...