当前位置: 首页 > news >正文

网站开发有哪些语言手机网站大全下载

网站开发有哪些语言,手机网站大全下载,传奇手游网站大全,初中毕业想学设计上哪个学校关于repo repo只是谷歌做的#xff0c;方便下载安卓源码的工具#xff0c;本质上是对下载清单进行批量处理#xff0c;然后使用git克隆。 在windows上下载源码只需要自己处理即可。 具体做法 首先使用git克隆安卓源码清单 git clone https://mirrors.tuna.tsinghua.edu.…关于repo repo只是谷歌做的方便下载安卓源码的工具本质上是对下载清单进行批量处理然后使用git克隆。 在windows上下载源码只需要自己处理即可。 具体做法 首先使用git克隆安卓源码清单 git clone https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest随后进入manifest目录查看所有tag git tagtag名就是安卓源码的版本选择你要的版本记下来。例如android-13.0.0_r9 随后切换分支 git checkout android-13.0.0_r9记住文件夹中的default.xml的路径 以上操作完成了清单的下载接下来我们只需要执行按清单下载的操作即可。 我提供两个我编写的脚本一个python环境一个golang环境。 注意该脚本不支持断点续传如需使用请保持网络环境良好或自行修改脚本。 Python环境 该Python下载脚本仅支持单线程下载不过git仍可以跑满你的网速 import xml.dom.minidom import os from subprocess import callversion android-13.0.0_r9# 1. 源码要保存的路径 rootdir D:/AOSP/version# 2. git 的路径 git rC:\Program Files\Git\cmd\git.exe# 3. default.xml 的路径 dom xml.dom.minidom.parse(rD:\AOSP\manifest\default.xml) root dom.documentElement# 4. 只支持单一镜像源 prefix git clone https://aosp.tuna.tsinghua.edu.cn/ suffix .gitif __name__ __main__:if not os.path.exists(rootdir):os.mkdir(rootdir)for node in root.getElementsByTagName(project):os.chdir(rootdir)d node.getAttribute(path)last d.rfind(/)if last ! -1:d rootdir / d[:last]if not os.path.exists(d):os.makedirs(d)os.chdir(d)cmd prefix node.getAttribute(name) suffix# 单线程下载call(cmd)Golang环境 该golang脚本支持从多个镜像站并发下载可限制每个镜像站同时下载的线程个数以及总线程个数。 注意 * 总线程个数应小于等于各个镜像站线程个数相加* resource.go package mainimport (sync )type Resource struct {Url stringLock chan struct{} }type ResourcePool struct {resources []*Resourcecond *sync.Cond }func NewResourcePool(list []*Resource) *ResourcePool {pool : ResourcePool{cond: sync.NewCond(sync.Mutex{}),}pool.resources listreturn pool }func (pool ResourcePool) GetResource() *Resource {pool.cond.L.Lock()defer pool.cond.L.Unlock()for {for _, resource : range pool.resources {select {case resource.Lock - struct{}{}:return resourcedefault:continue}}pool.cond.Wait()} }func (pool ResourcePool) ReleaseResource(resource *Resource) {-resource.Lockpool.cond.Signal() } main.go package mainimport (encoding/xmlflagfmtlogosos/execpath/filepathstringssync )type Project struct {XMLName xml.Name xml:projectName string xml:name,attrPath string xml:path,attr }type Manifest struct {XMLName xml.Name xml:manifestProject []Project xml:project }var (concurrentNum introotDir stringmanifestPath stringwg sync.WaitGroup )var resourceA Resource{Url: https://mirrors.bfsu.edu.cn/git/AOSP/%s.git, Lock: make(chan struct{}, 4)} var resourceB Resource{Url: https://aosp.tuna.tsinghua.edu.cn/%s.git, Lock: make(chan struct{}, 3)}//var resourceC Resource{Url: https://mirror.nju.edu.cn/%s.git, Lock: make(chan struct{}, 3)}//var resourceC Resource{Url: https://mirrors.shanghaitech.edu.cn/%s.git, Lock: make(chan struct{}, 3)}func init() {flag.IntVar(concurrentNum, concurrentNum, 7, Number of concurrent goroutines)flag.StringVar(rootDir, root, D:/AOSP/android-13.0.0_r9, Root dir of AOSP.)flag.StringVar(manifestPath, manifest, D:/AOSP/manifest/default.xml, Manifest of AOSP.) }func errorHandle(str string, err error) {if err ! nil {log.Fatalf(Failed to %s: %v, str, err)os.Exit(-6)} }func main() {flag.Parse()manifestXML, err : os.ReadFile(manifestPath)errorHandle(Read manifest file, err)var manifest Manifesterr xml.Unmarshal(manifestXML, manifest)errorHandle(Parse manifest XML, err)err os.MkdirAll(rootDir, 0755)errorHandle(Create root directory, err)sem : make(chan struct{}, concurrentNum)pool : NewResourcePool([]*Resource{resourceA, resourceB,})for _, node : range manifest.Project {wg.Add(1)go func(project Project) {defer wg.Done()sem - struct{}{}defer func() { -sem }()cmdDir : rootDird : project.Pathlast : strings.LastIndex(d, /)if last ! -1 {d filepath.Join(rootDir, d[:last])if err : os.MkdirAll(d, 0755); err ! nil {errorHandle(Create d directory, err)}cmdDir d}resource : pool.GetResource()if resource nil {fmt.Println(No resource available)os.Exit(2)return}cmd : exec.Command(git, clone, fmt.Sprintf(resource.Url, project.Name))cmdDir strings.ReplaceAll(cmdDir\\, /, \\)cmd.Dir cmdDirif err : cmd.Run(); err ! nil {fmt.Printf(Failed to clone node: %v %s \n, err, cmd)return}pool.ReleaseResource(resource)fmt.Printf(Cloned node: %s \n, project.Name)}(node)}wg.Wait() }截至到23年10月3日完全可用的镜像站仅剩清华其他AOSP的镜像或多或少均有问题 python的脚本足矣经测试均速16m/s一晚上可以下载好android-13.0.0_r9的所有源码 go的脚本推荐大家不要乱用过多的下载进程会对镜像站造成巨大的负载
http://www.yutouwan.com/news/446253/

相关文章:

  • 报喜鸟集团有限公司网页制作seo运营是什么
  • 社区子网站群建设wordpress 模拟word
  • 蜀都网站建设舜王asp.net学校网站整站系统源码
  • 黄页88网站关键词怎么做怎么做网站需要多少钱
  • 盈科互动网站建设制作公司杭州竞彩网站开发
  • 中国建设银行网站无法访问东营网红桥
  • 哈尔滨php网站开发公司郑州企业网站优化排名
  • 百度收录网站怎么做制作网站和制作网页的分别
  • 做网站最简单的方法wordpress微信分享图片不显示
  • 网站备案授权书怎么填河北建设厅网站开通账号
  • 河南建设教育协会网站网站设计培训成都哪家好
  • 做司考题的网站南宁网络推广方案
  • 网站怎么解析域名小说网站设计模板
  • 泰安高新区建设局网站网页美工设计师
  • 磁盘阵列做网站天长哪个广告公司做网站
  • 网站文章排版的重要性wordpress 腾讯验证码
  • 松江网站开发培训班安徽seo优化规则
  • 建设医院官方网站网站维护中一般要多长时间
  • 网站建设包含的内容win10 做网站服务器吗
  • 网站内容运营h5商城和小程序商城的区别
  • 河北建设行业信息网站html网页表格代码
  • 网页建设网站代码网站蜘蛛来访纪录
  • 专业建站公司联系方式陕西企业网站建设
  • owasp 网站开发ui设计学费多少 要学多久
  • 怎么建设家乡网站有没有专门做二手电脑的网站
  • 网站被别人做了跳转建设工程发布公告的网站
  • 网站建设发布ps科技感公司简介ppt介绍范本
  • 物流网站建设规划总结wordpress如何做站群
  • 巩义专业网站建设公司做箱包外贸哪个网站好
  • 做托福的网站外贸营销网站怎么建站