導航:首頁 > 源碼編譯 > 安卓系統源碼編譯

安卓系統源碼編譯

發布時間:2023-07-06 03:53:53

❶ 如何編輯和調試android源碼

在源碼中,存在idegen模塊,該模塊專門用來為idea工具生成系統源碼的project.
在開始編譯該模塊之前,首先確保你已經編譯過Android源碼了,如果沒有,可以參考上篇文章進行編譯.
和編譯普通的模塊一樣,我們用mmm命令編譯idegen.在開始編譯之前,檢查out/host/linux-x86/framework/目錄下是否存在idegen.jar文件,存在則說明你已經編譯過該模塊,否者,則需要編譯.執行如下命令即可:
soruce build/envsetup.sh
mmm development/tools/idegen/
sudo ./development/tools/idegen/idegen.sh123123

其中mmm development/tools/idegen/執行完成後會生成idegen.jar,而sodo ./development/tools/idegen/idegen.sh則會在源碼目錄下生成IEDA工程配置文件:android.ipr,android.iml及android.iws.
簡單的說明一下這三個文件的作用:
android.ipr:通常是保存工程相關的設置,比如編譯器配置,入口,相關的libraries等
android.iml:則是主要是描述了moles,比如moles的路徑,依賴關系等.
android.iws:則主要是包含了一些個人工作區的設置.

❷ 自己可以編譯安卓源碼嗎

用最新的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源碼的多倉庫管理機制.下面,不妨自己動手嘗試一下.

    安卓怎麼使用修改過的源碼編譯程序

    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系統源碼的環境下用make來編譯

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

    ❺ 如何單獨編譯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源碼的編譯選項

    現僅就工作遇到的問題做個總結。所用硬體平台為amlogic stvm3。---------------------------------------------------------------------------關於版本號:文件build/core/version_defaults.mk用來檢查一些跟版本相關的變數是否定義;如果未定義,則使用默認值。這些變數包括 PLATFORM_VERSION # 如 2.2.5 PLATFORM_SDK_VERSION # 8, 對應2.2.5 PLATFORM_VERSION_CODENAME # REL,即發行版 DEFAULT_APP_TARGET_SDK # 同SDK_VERSION或VERSION_CODENAME BUILD_ID # 默認為UNKNOWN BUILD_NUMBER # 默認eng.$(USER).$(shell date +%Y%m%d.%H%M%S)的形式。 version_defaults.mk首先包含進build_id.mk。用戶應當配置build_id.mk,而不應該改動version_defaults.mk文件。然後檢查上述變數,如未定義則賦值默認值。---------------------------------------------------------------------------關於調試功能(adb)的開啟編譯android源碼之前總是要先運行build/envsetup.sh,以初始化一些常用命令(實際上是bash的函數,如add_lunch_combo)。其中也從以下文件中引入了一些編譯設置: device/${CHIPSET_VENDOR}/vendorsetup.sh我們這里使用的CHIPSET_VENDOR為amlogic。比如我們有文件device/amlogic/vendorsetup.sh,內容為"產品名-編譯類型(flavor)"列表(稱為combo),如下: add_lunch_combo m1ref-eng add_lunch_combo m1ref-user add_lunch_combo m2ref-eng add_lunch_combo m2ref-user add_lunch_combo stvm3-eng add_lunch_combo stvm3-user其中,m1ref和stvm3是產品名(作前綴),後面為編譯類型。除此前綴外可選的combo值有: eng, user, userdebug, tests。(參考文件build/core/main.mk中對於變數TARGET_BUILD_VARIANT的篩查條件)我們可以修改vendorsetup.sh文件,來改變為特定設備編譯的結果。以下是各個編譯類型的特點: eng: 工程模式,用於平台級的調試,是默認的編譯類型。

    閱讀全文

    與安卓系統源碼編譯相關的資料

    熱點內容
    無水印高清電影 瀏覽:772
    拼車夫婦韓國中文 瀏覽:783
    怎麼在設置開啟app內購買 瀏覽:335
    三個女人在監獄是什麼電影曹查理演的 瀏覽:434
    復愛舊仇電影日本 瀏覽:210
    軍用壓縮餅乾和軍糧 瀏覽:596
    韓國成人百合電影 瀏覽:271
    戴拿奧特曼客串過的電影 瀏覽:403
    學金融工資高還是學程序員 瀏覽:528
    有一個外國電影大家躲在超市裡 瀏覽:134
    60分鍾在線觀看 瀏覽:680
    營銷系統源碼有哪些 瀏覽:543
    圖片導航網站源碼 瀏覽:737
    linux開啟終端 瀏覽:663
    日本愛 瀏覽:818
    雲伺服器如何運行項目 瀏覽:487
    韓劇一個女主叫美娜善喜 瀏覽:565
    降低php版本 瀏覽:58
    成年二次元下載 瀏覽:50