當前位置:首頁 » 編程軟體 » android60源碼編譯

android60源碼編譯

發布時間: 2024-03-03 10:53:38

Ⅰ 自己可以編譯安卓源碼

用最新的Ubuntu 16.04,請首先確保自己已經安裝了Git.沒安裝的同學可以通過以下命令進行安裝:

sudo apt-get install git git config –global user.email 「[email protected]」 git config –global user.name 「test」

其中[email protected]為你自己的郵箱.

簡要說明

android源碼編譯的四個流程:1.源碼下載;2.構建編譯環境;3.編譯源碼;4運行.下文也將按照該流程講述.

源碼下載

由於某牆的原因,這里我們採用國內的鏡像源進行下載.
目前,可用的鏡像源一般是科大和清華的,具體使用差不多,這里我選擇清華大學鏡像進行說明.(參考:科大源,清華源)

repo工具下載及安裝

通過執行以下命令實現repo工具的下載和安裝

mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo

補充說明
這里,我來簡單的介紹下repo工具,我們知道AOSP項目由不同的子項目組成,為了方便進行管理,Google採用Git對AOSP項目進行多倉庫管理.在聊repo工具之前,我先帶你來聊聊多倉庫項目:

我們有個非常龐大的項目Pre,該項目由很多個子項目R1,R2,...Rn等組成,為了方便管理和協同開發,我們為每個子項目創立自己的倉庫,整個項目的結構如下:


這里寫圖片描述

執行完該命令後,再使用make命令繼續編譯.某些情況下,當你執行jack-admin kill-server時可能提示你命令不存在,此時去你去out/host/linux-x86/bin/目錄下會發現不存在jack-admin文件.如果我是你,我就會重新repo sync下,然後從頭來過.

錯誤三:使用emulator時,虛擬機停在黑屏界面,點擊無任何響應.此時,可能是kerner內核問題,解決方法如下:
執行如下命令:

  • ./out/host/linux-x86/bin/emulator -partition-size 1024 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7

  • 通過使用kernel-qemu-armv7內核 解決模擬器等待黑屏問題.而-partition-size 1024 則是解決警告: system partion siez adjusted to match image file (163 MB >66 MB)

    如果你一開始編譯的版本是aosp_arm-eng,使用上述命令仍然不能解決等待黑屏問題時,不妨編譯aosp_arm64-eng試試.

    結束吧

    到現在為止,你已經了解了整個android編譯的流程.除此之外,我也簡單的說明android源碼的多倉庫管理機制.下面,不妨自己動手嘗試一下.

    Ⅱ android6.0.1源碼編譯報錯如下,求教

    有什麼編譯的錯誤,可以貼出具體的log信息,看看具體是哪裡出錯了

    Ⅲ android 導進來的工程修改源碼後怎麼編譯

    1、Android的文件系統結構是怎樣的,我們安裝的程序放在那裡?
    編譯Android源碼之後,在out/target/proct/generic一些文件:
    ramdisk.img、system.img、userdata.img、 system、 data、root
    其中, system.img是由 system打包壓縮得到的, userdata.img是由 data打包壓縮得到的。

    ramdisk.img是模擬器的文件系統,把ramdisk.img解壓出來可知道,ramdisk.img里的文件跟root文件夾的文件基本一樣。模擬器裝載ramdisk.img並解壓到內存,接著分別把system.img和userdata.img掛載到 ramdisk下的system和data目錄。我們編譯出來的應用程序就是放在system/app下的。用戶安裝的程序則是放在data/app下。

    2、Android SDK和android源碼能為我們提供什麼工具?
    AndroidSDK提供有很多工具,如adb,ddms,emulator,aapt等,並提供kernel-qemu、ramdisk.img、system.img、userdata.img。因此,只要有android SDK,我們就可以在模擬器上把android跑起來。
    Android源碼可以編譯出android SDK、adb等工具、android文件系統,以及ADT插件,也就是說,我們可以從android源碼編譯出所有android相關的東西。

    3、 把Android源 碼」make」之後會生成許多工具和android文件系統(system.img等),我們又可以使用「makesdk」來生成android SDK,android
    SDK也包括有工具和android文件系統(system.img等),而原來安裝的時候我們也安裝了androidSDK,那麼我們在開發時應該使用那些工具和android文件系統呢?

    Ⅳ android編譯命令的說明

    android源碼目錄下的build/envsetup.sh文件,描述編譯的命令

    - m:       Makes from the top of the tree.

    - mm:      Builds all of the moles in the current directory.

    - mmm:     Builds all of the moles in the supplied directories.

    要想使用這些命令,首先需要設置android腳本編譯環境,在源碼根目錄執行 source build/envsetup.sh

    m:編譯所有的模塊

    mm:編譯當前目錄下的模塊,當前目錄下要有Android.mk文件

    mmm:編譯指定路徑下的模塊,指定路徑下要有Android.mk文件

    下面舉個例子說明,假設我要編譯android下的\framework\av\cmds\screenrecord模塊,

    當前目錄為源碼根目錄,方法如下:

    1、source build/envsetup.sh

    2、mmm framework/av/cmds/screenrecord

    或者 :

    1、source build/envsetup.sh

    2、cd framework/av/cmds/screenrecord

    3、mm

    Ⅳ 如何單獨編譯Android源代碼中的模塊

    1.make 模塊名稱
    需要查看Android.mk文件的LOCAL_PACKAGE_NAME變數。
    2.mmm命令
    用於在源碼根目錄編譯指定模塊,參數為模塊的相對路徑。只能在第一次編譯後使用。比如要編譯Phone部分源碼,需要在終端中執行以下命令:
    $mmm packages/apps/phone
    3.mm命令
    用於在模塊根目錄編譯這個模塊。只能在第一次編譯後使用。例如要編譯Phone部分源碼,需要在終端中執行以下命令:
    $cd packages/apps/phone
    $mm
    註:mmm和mm命令必須在執行「.build/envsetup.sh」之後才能使用,並且只編譯發生變化的文件。如果要編譯模塊的所有文件,需要-B選項,例如mm -B。

    Ⅵ 如何在Android系統源碼的環境下用make來編譯

    第一個方法簡單點,不過需要在Android系統源碼的環境下用make來編譯:
    1. 在應用程序的AndroidManifest.xml中的manifest節點中加入
    android:sharedUserId="android.uid.system"這個屬性。
    2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform這一行
    3. 使用mm命令來編譯,生成的apk就有修改系統時間的許可權了。

    Ⅶ 如何單獨編譯Android源碼中的模塊

    第一次下載好Android源代碼工程後,我們通常是在Android源代碼工程目錄下執行make命令,經過漫長的等待之後,就可以得到Android系統鏡像system.img了。以後如果我們修改了Android源代碼中的某個模塊或者在Android源代碼工程新增一個自己的模塊,是不是還是執行make命令呢?答案是否定的,Google為我們准備了另外的命令來支持編譯單獨的模塊,以及重新打包system.img的命令。在繼續學習Android源代碼之前,就讓我們先來看看這個命令吧。
    一. 首先在Android源代碼目錄下的build目錄下,有個腳本文件envsetup.sh,執行這個腳本文件後,就可以獲得一些有用的工具: USER-NAME@MACHINE-NAME:~/Android$ . ./build/envsetup.sh 注意,這是一個source命令,執行之後,就會有一些額外的命令可以使用: - croot: Changes directory to the top of the tree. - m: Makes from the top of the tree. - mm: Builds all of the moles in the current directory. - mmm: Builds all of the moles in the supplied directories. - cgrep: Greps on all local C/C++ files. - jgrep: Greps on all local Java files. - resgrep: Greps on all local res/*.xml files. - godir: Go to the directory containing a file. 這些命令的具體用法,可以在命令的後面加-help來查看,這里我們只關注mmm命令,也就是可以用它來編譯指定目錄的所有模塊,通常這個目錄只包含一個模塊。
    二. 使用mmm命令來編譯指定的模塊,例如Email應用程序: USER-NAME@MACHINE-NAME:~/Android$ mmm packages/apps/Email/ 編譯完成之後,就可以在out/target/proct/generic/system/app目錄下看到Email.apk文件了。Android系統自帶的App都放在這具目錄下。另外,Android系統的一些可執行文件,例如C編譯的可執行文件,放在out/target/proct/generic/system/bin目錄下,動態鏈接庫文件放在out/target/proct/generic/system/lib目錄下,out/target/proct/generic/system/lib/hw目錄存放的是硬體抽象層(HAL)介面文件。
    三. 編譯好模塊後,還要重新打包一下system.img文件,這樣我們把system.img運行在模擬器上時,就可以看到我們的程序了。 USER-NAME@MACHINE-NAME:~/Android$ make snod
    四. 參照Ubuntu上下載、編譯和安裝Android最新源代碼一文介紹的方法運行模擬器: USER-NAME@MACHINE-NAME:~/Android$ emulator 這樣一切就搞定了。

    Ⅷ 如何單獨編譯Android源代碼中的模塊

    1.make 模塊名稱
    需要查看Android.mk文件的LOCAL_PACKAGE_NAME變數。
    2.mmm命令
    用於在源碼根目錄編譯指定模塊,參數為模塊的相對路徑。只能在第一次編譯後使用。比如要編譯Phone部分源碼,需要在終端中執行以下命令:
    $mmm packages/apps/phone
    3.mm命令
    用於在模塊根目錄編譯這個模塊。只能在第一次編譯後使用。例如要編譯Phone部分源碼,需要在終端中執行以下命令:
    $cd packages/apps/phone
    $mm
    註:mmm和mm命令必須在執行「.build/envsetup.sh」之後才能使用,並且只編譯發生變化的文件。如果要編譯模塊的所有文件,需要-B選項,例如mm -B。

    熱點內容
    忘記戰隊密碼怎麼解散 發布:2024-11-16 03:30:15 瀏覽:734
    jsandroid文件 發布:2024-11-16 03:24:39 瀏覽:948
    在香港怎麼買安卓手機 發布:2024-11-16 03:15:37 瀏覽:762
    存儲sp 發布:2024-11-16 03:14:08 瀏覽:849
    電視機存儲功能 發布:2024-11-16 03:12:50 瀏覽:869
    極品飛車17安卓怎麼安裝 發布:2024-11-16 03:12:13 瀏覽:317
    長春java 發布:2024-11-16 03:10:47 瀏覽:577
    性價比高的台式電腦怎麼配置 發布:2024-11-16 03:04:58 瀏覽:632
    軟體測試學python 發布:2024-11-16 02:55:39 瀏覽:563
    sql2008數據同步 發布:2024-11-16 02:33:46 瀏覽:928