源代碼的下載和編譯

 

下載、編譯和測試Android源代碼linux

1.配置Android源代碼下載環境android

  建立一個用於存放下載腳本文件(repo)的目錄:「mkdir ~/bin     git

  PATH=~/bin:$PATH」;算法

  下載repo腳本文件:「curl  編程

  https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo網絡

  chmod a+x ~/bin/repo」;架構

  建立用於存放Android源代碼的目錄:「mkdir android_source    app

  cd android_source」;框架

  初始化:「repo init -u curl

  https://android.googlesource.com/platform/manifest」;

  開始下載Android源代碼:「repo sync」。

2.Android源代碼目錄結構

  abi (ABIapplicationbinary interface,應用程序二進制接口)

  bionicbionic C庫)

  bootable(啓動引導相關代碼)

  build(存放系統編譯規則及generic等基礎開發配置包)

  cts(兼容性測試套件標準)

  dalvikdalvik Java虛擬機)

  development(應用程序開發相關)

  device(設備相關代碼)

  docs (介紹開源的相關文檔)

  externalandroid使用的一些開源的模組)

  frameworks(核心框架,Android SDK的源代碼)

  hardware(主要是硬件適配層HAL代碼)

  libcore(核心庫相關)

  ndk (ndk相關代碼。AndroidNDKAndroid NativeDevelopment Kit

  是一系列的開發工具,容許程序開發人員在Android應用程序中嵌

  入C/C++語言編寫的非託管代碼。)

  out(編譯完成後的代碼輸出與此目錄)

  packages(應用程序包)

  prebuiltx86arm架構下預編譯的一些資源)

  sdksdk及模擬器)

  system(文件系統、應用及組件——C語言)

  Makefile

3.下載Android源代碼中的一部分

  方法一:使用repo sync命令(在當前目錄生成一個隱藏目錄.Repo

  方法二:使用git clone命令

4.編譯Android源代碼

  初始化編譯環境:「source build/envsetup.sh」或

  「.build/envsetup.sh」;

  選擇目標:使用lunch命令;

  編譯Android源代碼:「make」;

5.out目錄結構

  host:編譯過程當中須要的庫和工具;

  targetcommonproduct

6.將本身的APK做爲Android內置程序發佈

  直接將apk文件複製到system/app目錄下,再從system目錄生成system.img文件。

7.用模擬器測試system.img文件

 

下載和編譯Linux內核源代碼

1.下載Linux內核源代碼

  「git clone https://android.googlesource.com/kernel/common.git」下載最新Linux內核源代碼;「git branch -a」查看當前有哪些遠程版本庫;「git checkout --b 導出內容」可導出所需內容。

2.Linux內核源代碼目錄結構

  arch:與CPU架構相關的源代碼和配置文件

  block:部分塊設備驅動程序。

  crypto:經常使用加密和散列算法,還有一些壓縮和CRC校驗算法。

  Documentation:關於內核各部分的通用解釋和註釋。

  drivers:設備驅動程序,每一個不一樣的驅動佔用一個子目錄。

  firmware:一些驅動程序須要使用的設備固件的實現代碼。

  fs:各類支持的文件系統,如extfatntfs等。

  include:頭文件。其中,和系統相關的頭文件被放置在linux子目

  錄下。

  init:內核初始化代碼(注意不是系統引導代碼)。

  ipc:進程間通訊的代碼。

  kernel:內核的最核心部分,包括進程調度、定時器等,和平臺相

  關的一部分代碼放在arch/*/kernel目錄下。

  lib:庫文件代碼。

  mm:內存管理代碼,和平臺相關的一部分代碼放在arch/*/mm

  錄下。

  net:網絡相關代碼,實現了各類常見的網絡協議。

  samples:一些內核編程範例。

  scripts:用於配置內核文件的腳本文件。

  security:主要是一個SELinux的模塊。

  sound:經常使用音頻設備的驅動程序等。

  toolsLinux自帶的工具的實現代碼。

  usr:實現了一個cpio

  virt:內核虛擬機的實現代碼。

3.安裝Android內核的編譯環境

  配置Linux內核源代碼根目錄下的Makefile文件,打開Makefile文件,找到ARCHCROSS_COMPILE:「ARCH  ?=arm  CROSS_COMPILE?= arm-none-linux-gnueabi-」。

  第一步:準備工做 第二步:解壓編譯器 第三步:驗證交叉編譯器是否安裝成功 第四步:安裝libncurses5

4.配置和編譯Linux內核

  make clean:清除大多數由編譯生成的文件,但保留配置文件。

  make mrproper:清除全部由編譯產生的文件,清除配置文件。

  make distclean:make mrproper+刪除編輯器留下的備份文件和補丁

  文件。

  在Linux源代碼根目錄執行配置命令:「make config」(文本)「make menuconfig」(字符界面)「make oldconfig」(字符界面)「make xconfig」(圖形界面)。

  成功編譯Linux內核後,會在<Linux內核源代碼根目錄>/arch/arm/boot目錄生成一個zImage文件,該文件就是Linux內核的二進制版本。

相關文章
相關標籤/搜索