`
mmdev
  • 浏览: 12921018 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

同步和提交AOKP源码

 
阅读更多

===注意事项===
以下操作无法在Windows平台下执行。
注册用的邮箱建议使用Gmail,其他邮箱未测试。
请先用SMARTHOSTS替换Linux系统原有的HOSTS。
请先安装git工具。

===术语定义===
目录:就是文件夹。
提交(commit):应理解为一个名词,将单个或多个操作的行为看做一个对象,这个对象就叫做提交。
github:一种代码托管服务器。
gerrit:一种代码评审机制。
分支(branch):同步到本地的源码是主干,代码的修改不应在主干上直接修改,而是新建一个分支进行修改,修改后评审过没有问题之后才会合并到主干。在AOKP这个项目中,作为普通开发者要做的是“新建分支>修改代码>提交操作”,评审和合并的操作由AOKP开发组来决定。

*********同步AOKP源码*********mkdir ~/bin
//创建名为bin的目录
PATH=~/bin:$PATH
//将bin文件夹添加到PATH环境变量
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
//将repo脚本安装到bin/repo目录下
chmod a+x ~/bin/repo
//修改权限
mkdir ~/aokp
//创建名为aokp的目录,源码将同步到这个目录里
cd ~/aokp
//进入aokp目录
repo init -u git://github.com/AOKP/platform_manifest.git -b ics
//初始化git代码库,-b ics表示ics分支。
repo sync -jX
//开始同步,将代码库同步到本地,X表示你的CPU核心数。直接repo sync不加参数也可以。复制代码同步时间需要很久很久很久很久很久很久很久很久很久很久很久很久。。。。。。。。。。。。。。。。。
而且会出现各种错误。。。要有心理准备。。。。


*********提交代码*********
===注册账户===
打开https://github.com/AOKP
点击顶上的Signup and Pricing
点击第一行Free for open source右边的Create a free account
记住自己用户名username和注册的邮箱email,待会要用。
//这里注册的账户是github的,并不专属于AOKP
//github可以理解为是一个项目托管的服务器,AOKP这个项目的各种代码存在这个服务器上,它只是这个服务器上无数个项目中之一。

打开http://www.gerrit.aokp.co
点右上角register
点击Register with a Google Account
授权谷歌账户。
//这是在aokp的代码评审服务器上注册,这是AOKP用于审核开发者提交的各种代码的服务器。
//Open显示的是来自世界各地的开发者的提交,这些提交尚未被采用,待评审。
//Merged表示已合并到代码主干中的提交,也就是通过评审正式加入到AOKP代码中。

===配置git用户名===
打开终端,输入命令,不含[]git config --global review.gerrit.aokp.co.username [用户名]
git config --global review.gerrit.aokp.co.email [注册邮箱]复制代码===验证配置===
打开终端,输入命令ls ~/.ssh/复制代码检查是否有id_rsa和id_rsa.pub
如果有,表示配置完成,可以开始“修改代码并提交”的操作。

如果没有,输入命令,不含[]ssh-keygen -t rsa -C [邮箱]
cat ~/.ssh/id_rsa.pub复制代码复制所有出现的内容

登陆Gerrit > 右上角的Settings > 左边列表里的SSH Public Keys
点击右边的Add Key
把刚才复制的内容贴进去,点下面的Add key按钮。

打开http://gerrit.sudoservers.com/#/q/status:merged,n,z
点右上角Sign In
点击Sign in with a Google Account
登陆后点击右上角settings
点击右边SSH Public Keys
点击Add Key ...
把刚才复制的内容贴进去,点下面的Add按钮。
//这一步是添加SSH密钥,它包含你的注册信息,在与Gerrit服务器交互时让服务器可以识别你的身份。

===修改代码并提交===
在进行任何操作前,必须先重新同步一遍源码,确保本地源码最新,防止造成分支错乱。
以下部分操作在熟悉命令含义后可省略,此处是以最安全最保守的步骤来做的。

此处以添加ROMControl翻译为例
进入源码所在目录后,输入命令repo start translations packages/apps/ROMControl
//它的含义是为packages/apps/ROMControl展开一个名为translations的分支,若无此分支则会自动新建,若有此分支则进入此分支。复制代码然后输入命令,进入ROMControl的目录cd packages/apps/ROMControl复制代码输入命令git branch
//这是用来查看当前所在分支,上一句如果执行正确的话,当前分支应该在translations(绿色表示)
git status
//这是用来查看当前状态,因为还没做任何修改,所以应该显示没有代码被修改。复制代码接下来,可以对代码进行修改。

修改完成后,输入命令git status
//显示当前状态,修改过的文件应该显示为红色
git diff
//显示修改的具体内容与原版的区别,按q可退出
git status
//再次显示当前状态,确认一遍修改过的文件,显示为红色
repo start translations .
//再次在当前目录下确认分支,不要漏掉最后的点
git status
//再次显示状态,确认修改过的文件,文字红色复制代码这时候如果有错还来得及改。。。
确认完全没问题之后,输入命令git add -A
//添加所有的修改,包括文件内容修改、文件及目录的增删
git status
//再次显示状态,修改过的文件此时应为绿色
git commit -s
//准备提交,将光标移动到最顶部,写上本次提交的说明,不能用#,其它的部分千万不要动。
//比如本次修改更新了一些翻译,提交说明就写上Update Simplified Chinese translations
//按ctrl+o是保存,按过之后提示保存的文件名,不用改它,直接回车
//再按ctrl+x退出
git log
//显示日志,此时为本地日志,按q退出,这个看不看无所谓。
repo upload .
//上传提交到服务器,最后的点不要漏掉复制代码===修正提交===
如果发现已经提交到服务器的代码需要修改,可按下列步骤操作。
这仅适用于尚未合并的提交,也就是在gerrit的Open里能看到的提交才能修正。
如果提交已经合并到主干,你只能重新执行一个新的提交,而不是这一节所说的修正提交。

打开http://gerrit.sudoservers.com/#/q/status:open,n,z
打开需修改的提交,记住Change-Id

然后在本机对代码进行修改

修改完确认无误之后输入命令git status
//显示修改过的文件,文字红色
git add -A
//添加所有的修改,包括文件内容修改、文件及目录的增删
git status
//再次显示修改过的文件,文字应为绿色
git commit --amend
//修正提交,核对Change-Id与刚才记住的是否一致
repo upload .
//上传到服务器,最后的点不要漏掉复制代码*********其他操作*********
删除一个分支,不含[]git branch -D [分支名]
//删除的分支不能是当前分支,你可以先repo start一个新的分支,然后再删除错误的分支复制代码如果在git commit之后发现错了,不想上传到服务器git reset --hard HEAD^
//这是重置上一次提交,相当于删除,但对于git来说不是删除,而是将提交变成了悬空对象(dangling commit),并且在reflog仍有记录,提交依然可以找回。
git fsck --lost-found
//这是找回删除的提交,可以看到已删除的提交ID,如果你不想找回提交,不要执行这一句
git reflog expire --expire-unreachable=0 --all
//这是清空reflog
git gc --prune=0
//这是清空悬空对象(dangling objects)
git fsck --lost-found
//这时再执行这一句,已找不到任何提交。复制代码
分享到:
评论

相关推荐

    Android代码-AOKP.co

    aokp-co-webviewer Basic app that opens AOKP.co in a WebView, along with a few other small features. Setup for building with Gradle.

    AOKP Nightlies:aokp每晚-开源

    来自AOKP来源的构建以及来自AOKP Gerrit评论的樱桃精选

    AOKP for VISION:适用于HTC Vision的基于AOKP的rom-开源

    为HTC Vision(Desire Z / G2)构建的Android Open Kang Project。 这是一个经过大量修改和调整的Android ROM。

    AOKP Nightly Builds - Fully Loaded:AOKP每晚构建+添加应用[没有GAPPS![-开源

    转到此处获取完整说明:http://forum.xda-developers.com/showthread.php?t=1916100

    华为P1 D1ROM 移植教程

    于许多同学想自己动手移植MIUI,或者力卓,AOKP等ROM, 加上我自己决定不再支持D1,不想再把时间浪费在这种无益的 方面, 也有没有那么多时间精力去做。 所以我写下此篇移植的教 程,让更多的人都能学习自己移植。 ...

    android_device_xiaomi_land:Redmi 3S 3.18和4.9的高音设备树

    小米Redmi 3S的设备特定配置规格表特征规格中央处理器八核1.4 GHz Cortex-A53芯片组高通MSM8937金鱼草430显卡肾上腺505记忆2/3 GB搭载Android版本6.0.1贮存16/32 GB微型SD最高256 GB电池4100 mAh(不可拆卸)方面139...

    ROM Toolbox Pro 6.5.1.0.apk

    包括AOKP,CyanogenMod和其他流行的ROM。 ☆创建,管理和恢复nandroid备份 ☆擦除数据,缓存,dalvik缓存,电池统计 ☆从SD卡安装多个ROM和ZIP ★应用程序管理器★ ☆批量备份和恢复应用程序及其数据 ☆安排备份在...

    android_manifest

    [AOKP康师傅] 入门: 要开始构建过程,您需要熟悉 。 要初始化本地存储库,请使用如下命令: repo init -u https://github.com/Kang-OS-R/android_manifest -b eleven 然后同步: repo sync -c --force-sync --...

    Baked-jb-开源

    )包括Rom Control(从aokp修改而来的烤制风格)包括aokp开关(aokp)包括Powerwidgets(厘米)包括CM的自定义led控件(cm)锁屏快捷方式5手机8平板电脑(cm)锁屏天气(cm)锁屏日历(cm)完全自定义的Mms应用程序...

    Screen Stream Mirroring Pro 2.5.7.apk

    警告:如果您使用备用ROM(CyanogenMod,AOKP ...)以获得更好的结果,建议您将ROM更新到最新版本! 无根设备说明: 在Android 5.0之前,如果您的设备没有root,则需要使用我们的启动工具来激活屏幕镜像。 在这里...

    AICP Perseus-开源

    在 Android Lollipop 之前,ROM 一直基于 AOKP。 不幸的是,由于 AOKP 停止开发(但后来又卷土重来),我们将基础更改为 CM。 通过将 CM 重新命名为 LineageOS (LOS),我们通过 AOSP 的一些调整变成了 LineageOS,...

    A840S工程机升级官方系统教程含资源下载v0.8

    泛泰A840S工程机升级教程,并提供资源下载链接,仅适用于ws20主板,可升级到正式机分区表,升级至官方166系统,以及cm、aokp、小米等系统。

    HotSwapper:Bootstrap Android构建系统以及各种Android fork之间的快速切换

    您应该能够使用一个简单的命令在构建风格和分支之间进行交换。 ./hotswapper make <ROMTYPE> 有效的是:( aosp , aokp , pa , pac , vanir , omni , slim , cm ) 有效的取决于ROM。 实例是( 4.4 , ...

    android_packages_apps_PerformanceControl

    性能控制 与 AOKP 捆绑的 CPU 控制应用程序(免费)( ) 根据 GPL v3 许可 许可证 -

    packages_apps_PerformanceControl

    绩效控制 与AOKP( )捆绑在一起的CPU控制应用程序(免费) 根据GPL v3许可 许可-https:

    PAC-man ROM for LG P760:PAC-man ROM 是三个超级 ROM 的组合-开源

    Paranoid + Aokp + Cyanogen = PACman 这个 ROM 将三个超级 ROM 的所有调整合二为一。 当您拥有多合一功能时,为什么要在 ROM 中选择!! 闪存说明 要求: -- 解锁 P760 -- 有关闪存 rom 的知识 闪存步骤: -- 进行...

Global site tag (gtag.js) - Google Analytics