1. 程式人生 > >本地Android程式碼庫的搭建

本地Android程式碼庫的搭建

在android系統開發的過程中,source code是由git來做程式碼管理的。在android source code中有很多的git倉庫,如果單個去管理的話會比較麻煩。這就引入了repo。repo是用python寫的一個指令碼,用來封裝git的操作。
下面就以android原始碼為例,介紹repo+git的搭建。

  1. repo工具的安裝
    對於普通使用者安裝repo的方法如下
    1.新建~/bin,並且在系統變數中新增這個bin路徑
    mkdir ~/bin
    export PATH=~/bin:$PATH
    2.下載repo指令碼
    curl http://commondatastorage.googleapis.com/git-repo-downloads/repo

    > ~/bin/repo
    chmod a+x ~/bin/repo

  2. manifest倉庫的建立
    repo進行程式碼管理是通過一個配置檔案(xml檔案)來進行的。預設情況這個配置檔案是default.xml。位置為:.repo/manifests
    假設伺服器地址為:10.8.5.239
    賬戶:git
    1.首先在伺服器端建立一個空的git倉庫,用來儲存manifest。
    git init --bare manifest.git
    2.從客戶端clone manifest倉庫
    git clone [email protected]:/home/git/CDR8010/manifest/manifest.git
    3.新增xml配置檔案
    xml配置檔案格式如下:

    	<?xml version="1.0" encoding="UTF-8"?> 
    	<manifest>
    		<remote fetch="../" name="master"/>
    		<default remote="master" revision="master"/>
    		<project name="CodeAurora89xx/platform/vendor/askey/sdk_addonde" path="LA.UM.7.6.2/LINUX/android/vendor/askey/sdk_addonde" />
    	< /manifest>

    remote fetch元素是用來指定程式碼git倉庫所在的位置。這個位置是相對位置,相對manifest.git倉庫的位置。
    default remote=代表是預設遠端程式碼的分支,revision代表的reposync時要下載的分支名稱
    project name=代表程式碼在伺服器中存放的位置
    path=代表程式碼從伺服器中下載下來之後存放的位置

  3. 伺服器端git倉庫的建立
    由於android程式碼是從google直接下載下來的。google預設也是通過git來管理android程式碼。所以在.repo/manifest目錄下面就存在一個default.xml配置檔案。那麼就根據這個xml檔案來初始化自己的git倉庫。
    由於android中的倉庫很多,所以寫一個指令碼來初始化git倉庫

    #!/usr/bin/python3
    import os
    import sys
    if len(sys.argv) == 1:
       print('錯誤!請傳入 xml 檔案')
    elif len(sys.argv) > 2:
       print('錯誤!傳入引數太多')
    else:
       print('傳入的檔案是 %s' % sys.argv[1])
       
    with open(sys.argv[1], 'r') as fin:
       while True:
       	linestr = fin.readline()
       	if linestr == '':
       		break
       	if (('name=' in linestr) or ('name =' in linestr)) and (('project' in linestr) or ('path' in linestr)):   #本行內容含有name資訊
       		charistr1 = 'name="'
       		charistr2 = '"'
       		gitprojstr = linestr[linestr.index(charistr1)+len(charistr1) : linestr.index(charistr1)+len(charistr1)+ linestr[linestr.index(charistr1)+len(charistr1):].index(charistr2)]
       		cmd = 'git init --bare %s.git' % gitprojstr
       		os.system(cmd) 
       		print(cmd)
    

    這個指令碼就是讀取default.xml檔案中的project name屬性來建立倉庫。
    這樣伺服器端的原始碼倉庫就已經建立完成。

  4. Android 原始碼中新增自己的git配置
    步驟3中已經將倉庫建立完成,下面就需要將原生代碼push到伺服器端。但是原始碼中是從google下載下來的。所以此時程式碼中連線的程式碼庫是google的。要想將本地的程式碼push到自己的伺服器上,就需要將這些庫新增自己伺服器對應的庫。幸好repo提供了遍歷庫的功能。
    在原始碼目錄下面執行如下命令:
    repo forall -c ‘git remote add CDR8010 [email protected]:/home/git/CDR8010/$REPO_PROJECT.git’
    其中REPO_PROJECT對應的是project name。
    這條命令執行完成之後,就在每個git庫中添加了自己的git倉庫。

  5. 推送原生代碼到伺服器端git倉庫
    到目前為止,已經將程式碼配置完成。接下來的工作就是將當前的程式碼推送到自己的伺服器上。
    repo start master --all
    repo forall -c ‘git push -u CDR8010 master’
    上面第一條命令是將各個git倉庫建立一個master本地分支
    第二條命令將會進入到每個git庫,之後將本地master程式碼push到Skysoft分支對應的遠端git倉庫中
    至此repo+git的環境就已經搭建完成。並且將程式碼推送到遠端伺服器中了。

  6. 從伺服器repo download程式碼
    將程式碼儲存在伺服器中的目的就是讓開發人員能夠從伺服器中下載code。
    下載code方法為:
    repo init -u [email protected]:/home/git/CDR8010/manifest/manifest.git
    上述命令就是將步驟2中的manifest同步下來,畢竟裡面存放著git倉庫的資訊。
    接下來就是同步git倉庫中的程式碼:
    repo sync
    下載完成之後就能編譯啦。

補充:
由於要從伺服器端下載程式碼,所以需要將本地伺服器的public key新增到git server的authorized_keys中。

相關推薦

本地Android程式碼搭建

在android系統開發的過程中,source code是由git來做程式碼管理的。在android source code中有很多的git倉庫,如果單個去管理的話會比較麻煩。這就引入了repo。repo是用python寫的一個指令碼,用來封裝git的操作。 下

搭建瑞芯微rk3128本地android程式碼伺服器

從供應商那裡拿到的rk3128android 4.4的原始碼包。解壓前壓縮包大概5G,通過命令解壓後發現只有一個隱藏的.repo 目錄大小4096。 然後執行命令 repo sync -l 意思是從本地工作樹跟新程式碼。 完成 後。所有的程式碼都已

B 站 Android 程式碼的演進歷程

早在2012年,B 站 Android APP 便已上線。當時開發者不過一人,而如今,業務線眾多、隸屬不同團隊的Android 端開發人員數以百計。從單兵作戰到百花爭鳴,程式碼庫的組織管理也隨之經過數次的改革、演進。 單倉庫 2014年底,Android 端的常駐開發人員一隻手也數

GDB除錯Android程式碼——環境搭建及除錯過程

[email protected]:~/java/adt-bundle-linux-x86_64-20140321/android-ndk-r10b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin$ adb forward

Android 程式碼(自定義一套 Dialog通用提示框 )

public class CommomDialog extends Dialog implements View.OnClickListener{ private TextView contentTxt; private TextView titleTxt; private Text

本地新建程式碼上傳到git遠端程式碼

場景 在本地已經建立了程式碼庫並且已經儲存了檔案,現在想把程式碼上傳到遠端的程式碼庫上: 1、首選在雲端建立一個空的程式碼庫 git init --bare test.git 2、在本地專案的根

Android.mk添加本地程序和的經常使用模版

size 例如 center 配置文件 clear hello main 解釋 共享 Android.mk添加本地程序和庫的經常使用模版 Android中添加本地程序或者庫。這些程序和庫與其所在路徑沒有關系。僅僅與它們的配置文件Android.mk有關。Androi

CentOS6.x rsync+httpd搭建配置本地YUM源

本地yum倉庫 本地repo倉庫 自動同步網上yum倉庫一、環境說明 yum庫,是readhat/CentOS 系統軟件倉庫,可以通過http ftp協議傳輸存儲在網絡上的倉庫;yum 主要功能是更方便的添加/刪除/更新RPM 包,自動解決軟件包依賴性問題,便於管理大量系統的更新維護軟件包問題

repo搭建android程式碼倉庫

        OEM提供的rk3188+Android4.4.2原始碼包是把全部的android原始碼做成了一整個git倉,看著都嚇人。於是我打算改造一下。      &nbs

git提交程式碼時遇到程式碼有更新以及本地有更新的解決方法

在多人協作開發時,經常碰到同事把最新修改推送到遠端庫,你在本地也做了修改,這個時候無論是執行git pull還是執行git push都會提示錯誤,我的解決方式如下: 先隱藏掉本地的修改,然後執行git pull從程式碼塊拉取最新程式碼,具體步驟如下: 1.輸入 git s

git使用-將本地專案新增到遠端程式碼

最近剛接觸Git,發現挺好用的,而且OSC還提供了免費的託管倉庫,打算把自己電腦上的程式碼同步到OSC上,結果總是出現各種失敗。網上搜索的解決方案大部分是先在[email protected]上建立專案,然後再clone到本地,而我是想把已經在本地建立好的倉庫直接p

【Git】在本地建立git管理自己的程式碼

1、建立本地庫 git init . 新建庫 git config --global user.email "[email protected]" git config --global

電腦基礎知識及拓展:使用Git將程式碼更新到本地(完整版)

環境:Git已安裝(皮一下) 新建一資料夾 右鍵,Git Bash Here git init   新增庫 git remote add origin 想要更新的原始碼地址   將庫裡的程式碼下載到本地 git pull origin ma

git 基本操作 git 刪除本地分支和遠端分支、原生代碼回滾和遠端程式碼回滾

git 刪除本地分支和遠端分支、原生代碼回滾和遠端程式碼庫回滾   【git 刪除本地分支】 git branch -D br   【git 刪除遠端分支】 git push origin :br  (origin

Android so檔案的區節section修復程式碼分析

一、Android so庫檔案的節表secion修復方案整理              https://bbs.pediy.com/thread-191649.htm             2. ELF section修復的一些思考              

ANDROID webview載入本地內容程式碼

由於我目前的應用大部分為html網頁內容,所以之前一直沿用webview.load(url)的方式來載入網頁,所以就出現了很多網頁載入很慢的情況,看網上所述大部分由載入遠端載入js,css導致的。所以就把webview.load(url)調整為載入本地內容,js和css均有

Android開源之使用ZXing開源生成二維碼及識別本地二維碼圖片

/** * 解析二維碼(使用解析RGB編碼資料的方式) * * @param path * @return */ public static Result decodeBarcodeRGB(String path) { if (Text

轉:更新最新程式碼本地、和推送原生代碼到遠端程式碼

一.更新最新程式碼到本地 1.檢視遠端分支 使用如下命令可以檢視遠端倉庫(我這裡有一個origin倉庫) $ git remote -v git remote命令會列出每個遠端庫的簡短名字,在克隆完某個專案後,至少可以看到一個名為 origin 的遠端庫,gi

Android-框架-App工程結構搭建:幾種常見Android程式碼架構分析

        架構是有關軟體整體結構與元件的抽象描述,用於指導大型軟體系統各個方面的設計。其是對儲存在Active Directory中的物件類別和屬性的描述。對於每一個物件類別來說,該架構定義了物件類必須具有的屬性,它也可以有附加的屬性,並且該物件可以是它的父物件

Android開發之——搭建本地Crashing跟蹤系統ACRA

前言 開發的手機應用,受諸多條件的限制如:硬體、系統升級、網路等綜合因素的影響,極有可能產生異常,如何有效的收集異常資訊反饋給程式開發人員,便於及時有效的解決BUG,便成為了首要問題。 值得慶賀的是國內一些大廠已經提供了SDK供開發者免費試用,如友盟統計,騰訊Bugly等