Post

如何向AOSP提交补丁程序

如何向AOSP提交代码

前几天论坛里有一个兄弟说使用libufdt拆解dt镜像失败了,怎么办?于是我马上复现了这个问题。当我修改完后能工作,准备提交到谷歌主线却蒙住了,怎么发送提交?


为什么错误了?

于是我马上看了看代码,发现对象已经在def __init__(self,**kwargs)方法(def)进行了属性(孔子)绑定,之后 调用类(class) /创建对象 不需要传入参数。

顺便在这里普及一个面向对象编程知识

1
2
3
4
5
6
7
8
9
# 类(class)↓
class Game():	
# 构造__init__方法(def),也就是构造函数↓					   
	def __init__(self,**kwargs):   
# 已有属性绑定到self.__name上↓
		self.__name = kwargs['孔子'] 
# 方法(def)↓
	def play(self):  		               
		print("%s,我们来打CSGO!!!",%self.__name)

引用类(class) /创建对象,再引用方法(def)/实例化对象

1
2
3
4
5
6
# 引用类(class) //创建对象()
p = Game()
# 引用方法(def) //实例化对象,对象的参数已经在init   
p.play()

$: 孔子我们来打CSGO!!!

又或者在def kick(self)上一行加入@classmethod后,

1
2
3
	@classmethod
	def kick(self)
		print("%s,我们来打CSGO!!!",%self.name)

直接引用方法/实例化对象也可达到效果

1
2
3
p.play()

$: 孔子我们来打CSGO!!!

好像写偏了,我继续回到拆解镜像出现错误的地方。

谷歌近日的提交

Author: Luca Stefani luca.stefani.ge1@gmail.com Date: Wed Aug 5 16:30:43 2020 +0200

mkdtboimg: Add support to V0 DTBO image creation

  • The current script tries to support both V0 and V1 but fails at supporting V0 completely

Test: Create V0 and V1 dtbo images, boot them Change-Id: I1e97f32b6cf7401f411bddf649e1dde4b34a81f1

1
2
3
4
5
6
7
@@ -83,7 +87,14 @@ class DtEntry(object):
    def __init__(self, **kwargs):
-        missing_keys = set(self.REQUIRED_KEYS) - set(kwargs)
+        self.__version = kwargs['version']
//....
-    def compression_info(self, version):
+    def compression_info(self):

我就这样改了

1
2
-        compression_format = self.dt_entries[idx].compression_info(self.version)
+        compression_format = self.dt_entries[idx].compression_info()

如何提交补丁程序到谷歌

首先我们需要了解git知识,。

1
git clone https://android.googlesource.com/platform/system/libufdt

当你修改完文件之后,git检测到文件在暂存区被修改,使用git add (-A) 加入(所有)文件到工作区,git commit提交文件到工作区,提交工作区前要写入这次的修改信息。

1
2
git add -A
git commit -s   

查看修改情况

1
git log

终端会输出以下内容

1
2
3
4
5
6
7
commit 2d80e2189c2f3dbba505f36c6bb0b11d334a9dd4 (HEAD -> master)
Author: Gah0 <woshishacha3@gmail.com>
Date:   Thu Aug 20 08:05:02 2020 +0800

mkdtboimg: fix extra 1 argument on compression_info()

when dump a image will happen compression_info() takes exactly 1 argument (2 given)

这个时候提交还在本地,我们用git push origin提交master分支到Gerrit

1
$ git push origin master:refs/for/master 	    # 提交到一个新的 gerrit 上面

提交不进去的话,没关系,请接着看!

配置 Gerrit 登录密钥

进入 AndroidOpen Source Project 点击右上角 sign in,登陆 google 账户。

登陆好账户之后,设置一下名字setting

然后设置Obtain password,允许一下git使用权限。

再次使用git push即可。


avatar avatar

待会就会有相关Reviewers来看你的代码了,changes里还有很多提交呢,Reviewer也忙不过来,他们会按照时间顺序排列查看的。

Reviewers通过后就进入主线了。

avatar

This post is licensed under CC BY 4.0 by the author.