〖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 ...
随机推荐
- 利用Logstash插件进行Elasticsearch与Mysql的数据
Logstash与Elasticsearch的安装就不多说了,我之前有两篇文章写的比较详细了ElasticSearch + Logstash + Kibana 搭建笔记 和 Filebeat+Logs ...
- Xen4CentOS 帮你移植到 CentOS 6 和 Xen 4
CentOS 发布了 Xen4CentOS 项目,该项目的目的是为了帮助 CentOS 5 的 Xen 用户移植到 CentOS 6,同时更新到 Xen 4 .因为 RHEL 6 不再提供 Xen,改 ...
- [leetcode]Wildcard Matching @ Python
原题地址:https://oj.leetcode.com/problems/wildcard-matching/ 题意: Implement wildcard pattern matching wit ...
- Multiply Strings leetcode java
题目: Given two numbers represented as strings, return multiplication of the numbers as a string. Note ...
- Hadoop vs Spark性能对比
http://www.cnblogs.com/jerrylead/archive/2012/08/13/2636149.html Hadoop vs Spark性能对比 基于Spark-0.4和Had ...
- SQL多表连接查询(详细实例)(转)
http://www.xker.com/page/e2012/0708/117368.html select * from student,course where student.ID=course ...
- 主成分分析(PCA)原理及推导
原文:http://blog.csdn.net/zhongkejingwang/article/details/42264479 什么是PCA? 在数据挖掘或者图像处理等领域经常会用到主成分分析,这样 ...
- Android利用RecognizerIntent识别语音并简单实现打电话动作
关于Android利用RecognizerIntent识别语音并简单实现打电话,详细看实现代码例如以下: package com.example.recognizerintentactivity; i ...
- Mongoose的分页功能
来自: https://github.com/edwardhotchkiss/mongoose-paginate 拷贝如下: Note: This plugin will only work wi ...
- 3611: [Heoi2014]大project|树形DP|虚树
构建出虚树然后DP统计答案 自己写的DP太傻QAQ,各种WA 膜了一发PoPoQQQ大爷的DP方法 mxdis,mndis分别表示到当前点近期和最远的被选出来的点的距离 mx,mn分别表示在以当前点为 ...