魔趣开源项目定制版Repo-全程无需科学上网环境同步完整Android源码库

魔趣开源项目定制版Repo-全程无需科学上网环境同步完整Android源码库
0

#1

什么是Repo:
Android 使用Git作为代码管理工具,并为此开发了Repo命令行工具。
Repo实现了Git中部分命令的封装,使得海量的Git库可以得到便捷的管理。

使用魔趣开源项目定制版Repo的好处:
同步Android源码的第一步便是下载Repo,而这个脚本存放于谷歌的服务器上。
我们在下载它的时候需要科学上网,但是往往挂着代理,也常常要重试好几回方能成功下载。
而且即使下载成功了,在之后repo init的步骤中,又要在初始化目录再次下载,又要重试好多回。
更为重要的是,安卓源码中有大量项目指向"https://android.googlesource.com",不科学上网根本无法下载。
而且自己搭建科学上网服务步骤过于繁琐,受限于代理服务器性能,最终下载速度依旧会很慢。
有些人可能会选择修改源码库Manifest文件中的AOSP地址,但这种方式也有缺陷。
Manifest文件经常发生更新,一旦发生更新,同步代码就会报错。此时又需要改回去,再同步,再修改。
使用魔趣定制版Repo可以无需科学上网从魔趣开源项目位于国内的服务器上进行Repo的更新、下载。
更可以在环境变量中自定义AOSP项目的拉取地址,使得源码的下载过程中不需要科学上网和修改Manifest文件。

安装Repo:(如果你之前安装过Rpeo,请删除,必须要使用魔趣定制版本)
1.在当前用户的根目录创建bin文件夹,并添加到系统环境变量中。

$ mkdir ~/bin
$ PATH=~/bin:$PATH

2.下载Repo并给予执行权限

 $ curl https://download.mokeedev.com/git-repo-downloads/repo > ~/bin/repo
 $ chmod a+x ~/bin/repo

同步源码:
在需要同步源码的文件目录下使用repo命令进行初始化和同步,例如同步MK71.2源码

$ repo init -u https://github.com/MoKee/android -b mkn-mr1
$ repo sync

旧项目切换:
已经repo初始化过的项目,默认还是会从Google下载,需要使用repo init切换下(切换前请删除项目目录.repo/repo文件夹)

$ repo init -u https://github.com/MoKee/android.git -b mkn-mr1

高级模式:
修改用户根目录.bashrc文件添加参数配置可以修改AOSP镜像的拉取地址,默认为Google地址。(需要哪个配置哪一行)

$ export MK_AOSP_REMOTE=caf (高通镜像)
$ export MK_AOSP_REMOTE=ustc (中国科学技术大学镜像)
$ export MK_AOSP_REMOTE=tuna (清华大学镜像)
$ export MK_AOSP_REMOTE=aosp (Google镜像)

如何更新:
在项目根目录执行

$ repo selfupdate

特别说明:
目前我们仅向魔趣开源项目的开发者提供AOSP镜像的免科学上网同步功能。
其它ROM使用定制版Repo只能享受到Repo的免科学上网更新、下载。同步代码过程和原版Repo没有区别。


#2

摆下几个问题,自己一边谷歌一边期待指点:
$mokee 项目根目录

1.去$mokee/.repo/manifest(用git切换分支):git checkout mkm remotes/origin/mkm), 再$mokee repo sync,仍要下载部分文件,虽然量不大(再切回mkn-mr1也是如此)
↑ ↑ ↑ ↑ ↑ ↑ ↑
这个操作跟
$mokee:repo init xxx -b mkm
有区别么?

2.我用的z2,想就地试手,在魔趣的git上该机型的device,vendor已经没了,lineageos的git上也没有这两个,我能请问编译服务器上用的配置?


#3

不一样,用repo init切换更科学。
z2属于受保护的项目,维护者没有授权我们开源内核以外的项目。


#4

非常魔性的问题,需要请教
我下了zuk z2(2.0.069)的官方源码来编译
出错在这个地方:

一个叫vdso.o.dbg文件找不到 依赖项vdso.o
然后我去到vdso.S所在的文件夹尝试编译vdso.o(它依赖vdso.S)
然后,报错linux/init.h 没有那个文件或目录
我惊了,明明源码根目录有include/linux/init.h的

搞不懂,求直接或间接指点(比如怎么看make时都包含了哪些头文件路径)


#5

老哥,为什么我按照你说的做的,还是会去http://android.googlesource.com/下载东西?
用的是$ export MK_AOSP_REMOTE=ustc (中国科学技术大学镜像)

ubuntu@ubuntu:~/mokee$ echo $MK_AOSP_REMOTE
ustc

已经解决

手动修改repo的仓库地址,详情参照:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/


#6

龙猪大佬,我执行 init 的时候报了这个错

repo:6: missing end of string
repo:175: parse error near `end'

是什么原因呢,系统是ubuntu17.10
python 版本是2.7.X


#7

最近这两天频繁501
fengzi@fengzi-vm:~/aosp$ repo init -u https://aosp.tuna.tsinghua.edu.cn/mirror/manifest --mirror
Get https://mokeedev.review/git-repo
error: RPC failed; HTTP 501 curl 22 The requested URL returned error: 501 Unsupported Content-Encoding
fatal: The remote end hung up unexpectedly


#8

改了review的首选http地址,导致不能通过匿名方式访问了。暂时没时间修复。


#9

#10

#11

#12

#13

已经修复,请重新下载repo


#14

请问这是什么问题:

# repo init -u https://github.com/MoKee/android -b mkn-mr1 --depth 1
Get https://github.com/MoKee/git-repo
remote: Enumerating objects: 4059, done.
remote: Counting objects: 100% (4059/4059), done.
remote: Compressing objects: 100% (1757/1757), done.
remote: Total 4059 (delta 2360), reused 3940 (delta 2241), pack-reused 0
Receiving objects: 100% (4059/4059), 2.36 MiB | 706.00 KiB/s, done.
Resolving deltas: 100% (2360/2360), done.
From https://github.com/MoKee/git-repo
 * [new branch]      stable     -> origin/stable
 * [new tag]         v1.13.0.1  -> v1.13.0.1
 * [new tag]         v1.13.0.2  -> v1.13.0.2
 * [new tag]         v1.13.0.3  -> v1.13.0.3

object 2f0dee721c4ca828770359470829e2944bc9bc47
type commit
tag v1.13.0.3
tagger Martincz Gao <martincz@mokeedev.com> 1544827805 +0800

Signed version v1.13.0.3 released

gpg: Signature made Sat 15 Dec 2018 06:50:05 AM CST using RSA key ID 2ECD2531
gpg: Can't check signature: No public key
error: could not verify the tag 'v1.13.0.3'


fatal: cloning the git-repo repository failed, will remove '.repo/repo'

#15

签名更新了,删掉~/.repoconfig再init就好了


#16

多谢:hugs:


#17

请问在我repo sync的时候
同步的是mkn-mr1
报错fatal: repository ‘https://github.com/ThirdProject/android_system_update_engine/’ not found
我在github上并没有发现该工程
请问如何解决


#18

这是7.1的代码啊,这个项目是新建的,确实没正确同步过去。我处理一下


#19

感谢,好的,问题已经解决;不过又有个新的问题,这个7.1的代码中,mka不能使用,我查找了build/envsetup.sh,并没有的function mka(),请问我该怎么办呢?


#22

7.1也是能用的。。mka方法在vendor/mk的envsetup.sh,用这个的前提是你已经. build/envsetup.sh