導航:首頁 > 源碼編譯 > 安卓源碼編譯工程師

安卓源碼編譯工程師

發布時間:2022-06-19 14:45:31

1. 如何定製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: 工程模式,用於平台級的調試,是默認的編譯類型。

2. 用別人的android代碼怎麼修改

1、可以使用 eclipse 來編輯 java 程序、檢查錯誤(主要是類庫包含和語法方面),但是不能在 eclipse 上編譯運行 android 源碼,還是得在 shell 中 make(或 mm 或 mmm)
2、android 源碼文件夾里提供有一些 eclipse 配置文件, .claapath:eclipse 工程的配置文件,方便我們直接把 android 源碼相應的文件和 JAVA 包導入工程 android-formatting.xml 和 android.importorder:這個很重要,主要是用來規范我們的編碼風格,更容 易使我們的代碼風格一致
3、把 android 源碼作為一個工程導入 eclipse 時,必須注意兩點
1)、新建的工程必須是 java project,不能是 android project,否則會破壞 android 源碼(一般是多添 加文件/文件夾)
2)、導入前最好檢查.classpath 里的文件在 android 源碼中是否有相應的文件(文件夾),否則也會破壞 android 源碼(一般是多添加文件/文件夾)
總的來說: 1、用 eclipse 來編輯代碼、檢查錯誤
2、不在 eclipse 上編譯、運行 android 源碼程序,只能在命令行通過 make(或 mm 或 mmm)編譯 android 源 碼
3、可以在 eclipse 上調試 android 源碼程序(原理:eclipse 通過 ddms 伺服器在 emulator 上進行調試), 並可以單步調試、斷點調試。
下面,從官方文檔總結出具體怎樣用 eclipse 來開發 android 源碼
1、建立基本的 android 開發環境 請參考官方文檔或<android 模擬器在 ubuntu8.10 的安裝> 2、編譯 android 源碼 android 源碼根目錄下通過 make 進行編譯,請注意一些配置,具體可參考<android 源碼的編譯>
3、把 eclipse 工程配置文件復制到 android 源碼根目錄下 cp development/ide/eclipse/.classpath ./ chmod u+w .classpath # Make the writable
4、修改 eclipse 程序的配置 1)、修改 eclipse 緩存設置 把 eclipse.ini(在 eclipse 軟體的安裝目錄下)的 3 個值改為下面的值: -Xms128m -Xmx512m -XX:MaxPermSize=256m 2)、把 android-formatting.xml 和 android.importorder 導入 eclipse android-formatting.xml、.classpath 和 android.importorder 都放在 development/ide/eclipse/下 android-formatting.xml 用來配置 eclipse 編輯器的代碼風格;android.importorder 用來配置 eclipse 的 import 的順序和結構。 在 window->preferences->java->Code style->Formatter 中導入 android-formatting.xml 在 window->preferences->java->Code style->Organize Imports 中導入 android.importorder 3)、安裝 anyedit 插件(可選) 在 http://andrei.gmxhome.de/anyedit/下載並導入 eclipse 中
5、把 android 源碼作為一個工程導入 eclipse 導入前先檢查.classpath 里的文件在 android 源碼中是否有相應的文件 (文件夾) 否則也會破壞 android , 源碼(一般是多添加文件/文件夾),.classpath 里多餘的路徑可刪除 新建 Java Project(不是 android project,否則會破壞 android 源碼),選擇從已存在的工程導入,工 程名任意,完成。 導入時,eclipse 要 build 工程,比較慢。導完後,一般都沒有錯誤。
6、eclipse 上調試 android 里的程序。 先執行: cd android 源碼目錄 . build/envsetup.sh lunch 1 emulator & ddms & # to build the emulator # you should see a GUI picture of a phone # you should get a splufty debugging console 然後在 eclipse 中配置調試類型和埠: 在 Run->Debug Configurations->Remote java application 上雙擊,然後,」Host:」設為 localhost,」 Port:」設為 8700,」Connection Type」為 Standard(Socket Attach) 然後「Apply」 注意,在點擊」Debug」時苦出錯,說 8700 埠被佔用,那麼把 DDMS 程序關掉,重新打開 DDMS 就 OK 了。 如果提供連不到 VM 錯誤時,請注意,要先在 DDMS 中選中某一進程(對應某一應用程序),才能在 eclipse 執行 Debug。 在 eclipse 調試時,可以設斷點、單步調試。估計 google 團隊也是這樣開發、調試 android 應用程序的
7、編譯 android 源碼 執行: cd android 源碼目錄 . build/envsetup.sh 那麼就會多出 mm/mmm 等命令, mm/mmm 用來編譯模塊 (包括 C、 C++、 JAVA 程序)我們也可以直接在 android 。 源碼根目錄下執行「make 模塊名」來編譯模塊。 Android 源碼中添加 修改應用 Posted on 2010-08-19 13:37 zhangweia 閱讀(1607) 評論(0) 編輯 收藏 第一部分:添加一個新的應用 1. 在和系統相同版本的 SDK 目錄下開發自己的 android 應用 2. 把開發的 android 工程放到源碼的 packages/apps/目錄下 3. 在工程目錄下添加 Android.mk 文件,修改 LOCAL_PACKAGE_NAME :=test001 把工程名指定為 自己的工程名,我載入的工程為 test001 LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := user LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_STATIC_JAVA_LIBRARIES := googlelogin-client LOCAL_PACKAGE_NAME :=test001 LOCAL_CERTIFICATE := shared include $(BUILD_PACKAGE) # Use the folloing include to make our test apk. include $(call all-makefiles-under,$(LOCAL_PATH)) 4. 回到源碼目錄,然後執行 . build/envsetup.sh 注意 sh 後面有個空格 5. 執行 mmm packages/apps/test001 編譯 test001.apk 包 6. 執行 make snod,編譯 system.img 包 7. 執行 emulator &就可以在應用程序下看到自己編譯的工程了 第二部分:修改原有的 Android 應用 1. 首先新建一個 android 工程,載入自己的 java 文件和資源文件 2. 在自己的 android 工程初步調試成功以後,把該工程的 java 文件,資源文件拷貝到聯系人對應的 java 文件和資源文件目錄 3. 然後在 linux 下執行以下命令,編譯人聯系人模塊,把資源文件編譯到聯系人目錄中 . build/envsetup.sh mmm packages/apps/Contacts 4. 刷新 android 源碼工程,這個時候你就可以在 Contacts 包目錄下看到你新加的資源文件和源文件了, 並可以在源碼工程下修改代碼並直接調試了 5. ?? 為什麼不在 android 源碼工程下直接添加源文件和 xml 資源文件了???? 答: 因為我們的 android 源碼工程師以 java 工程導入的, 如果添加 android 的 xml 文件的話, java 程序無法識別資源 R 文件,所以我們必須先把需要的 xml 資源文件先在 linux 下編譯 6. 在源碼工程修改後,則可在 linux 下再次執行聯系人編譯命令,並 make snod 載入 system.img 文件, 並啟動模擬器(emulator &),就可以看到你的修改了。 2011-04-19 修改 Android 源碼的 Launcher 的例子 博客分類: ? Android AndroidOSUI 框架 Android 的 Launcher 研究:客制化桌面 UI 前言 能取得 Android OS 原始碼,並修改里頭的內容,有時候也頗有樂趣。最近和幾位朋友聊到 「Android 框架的改造」,以及如何吸引對 Android 框架技術有興趣的同好 一起交流的議 題;我個人認為,一開始如果能丟出一個比較有樂趣的議題,或許可以有拋磚引玉的效果。 上周在北京進行 Android 培訓課程時,與 eoeAndroid 社群也進行了想法的交流,由於大家 都體認到 Android 底層技術的重要性及其價 值, 而且 eoeAndroid 社群里也有許多技術好手, 所以就和 eoeAndroid 的創辦人靳岩兄有了一個共同主持研究 Android 底層技術 「同好小 組」 的想法,希望能透過社群的方式,集合大家的智慧,一起把底層技術研究清楚。 因為要讓大家能有焦點,所以「發題」很重要,這個工作就由落在我身上了。由於第一次希 望題目能簡單,並且有趣一點,至少要能達到發球的效果,吸引大家開始關心 Android 底層 技術,所以原則是:希望能用最簡單的方式、讓大家體驗修改底層的樂趣。 題目說明: Launcher 第一次的題目是「Launcher」的修改。 Launcher 就是 Android 的應用程式啟動器,Launcher 的功能還包含:桌面的切換、應用程 式快捷(shortcut)功能、背景圖(Wallpaper)功能等等。因此,修改 Launcher 可以改變一些 很深層的 UI 功能。 在 Android 的桌面最下方, 有一個圖示, 按下後可以拉出應用程式圖示清單, 這是 Launcher 提供的功能。這一次,因為我們覺得這個 Launcher 的圖示太制式化了,越看越不好看,所 以想要修改一下,換張圖,要怎麼做到呢? 範例展示 例如,圖 1 是原始的圖示;圖 2 是修改後的圖示。 圖 1: 原始圖示 圖 2: 幫 Launcher 妝扮一下 實作說明 1/4: 取得 Android 原始碼與 EeePC 移植 這個功能並不難做,事實上,完全不用寫程式。只要把圖檔重做就可以了。只不過前提是, 要知道: 1. 如何取得 Android OS 原始程式碼 2. 如何編譯 Android OS 最簡單的做法是: 1. 下載 Android 原始碼後、取得 EeePC 的移植(proct) 2. 編譯「TARGET_PRODUCT」為 eee_701 3. 由於 Launcher 都是用 Java 語法寫成的, 所以不會有架構(ARM/x86/...)的問題, 編譯後 可以取得 Launcher.apk;APK 套件是不分處理器平台的 先學會如何由 Android 原始碼編譯出 eee_701 的 image,才有辦法繼續進行 實作說明 2/4: 修改圖檔 在 Android 原始碼的 packages/apps/ 目錄里,存放了 Android 內建的應用程式原始碼, Launcher 是 Android 的一個應用程式,所以從這里找到它的原始碼,並進行修改工程。 切換到以下目錄: <android source>/packages/apps/Launcher/ 接著要修改 src/目錄下的內容,還是 res/目錄下的內容呢?圖檔屬於 Android 的 「resource」,因此當然是到 res/目錄下找到我們要的圖檔。 切換到以下目錄: <android source>/packages/apps/Launcher/res/ 又看到了一大堆目錄,圖檔的部份存放於: ? ? drawable-land/ - landscope 模式的圖檔 drawable-port/ - portrait 模式的圖檔 我們先改一下 portrait 模式的圖檔。 找到 drawable-port/tray_handle_normal.png 檔案如 下: 就是它了,換掉,把圖檔換成這個: 換好後重編 Android 即可。一行程式都不用改。 實作說明 3/4: 安裝 Launcher.apk 重編 Android 原始碼,接著可以在 out/target/proct/<proct name>/system/app/找到 Launcher.apk 套件。把 Launcher.apk 安裝到 AVD(Android 模擬器)里做測試,方法如下: 1. 先啟動一個 AVD 2. 執行 adb 將 Launcher.apk 手動安裝到 AVD 里,指令如下: $ adb install -r <your-path>/Launcher.apk

3. Android源碼編譯是干什麼

編譯Android系統。

4. 自己可以編譯安卓源碼嗎

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

    5. 安卓app源碼我有,怎麼編譯成app,編譯之前我能不能修改呢

    用android studio配置java的ellipse,可以修改

    6. 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文件系統呢?

    7. 如何在Android源碼下編譯自己的項目

    在Android Studio代碼調試一文中,簡單的介紹了代碼調試的一些技巧.現在我們來談談Android源碼編譯的一些事.(俺認為,作為android developer人人都應該有一份自己Android源碼,這樣我們就可以隨時對自己有疑惑的地方通過親手調試來加強理解).
    本文適用於Ubuntu 16.04上編譯Android 6.0.*,其他情況請酌情處理,自行參考官網吧.
    請首先確保自己已經安裝了Git.沒安裝的同學可以通過以下命令進行安裝:
    sudo apt-get install git
    git config –global user.email 「[email protected]
    git config –global user.name 「test」

    8. 用gcc/g++如何編譯android工程中的.c/.cpp程序,如何查看android工程師.c/.cpp文件需要的依賴及如何解決

    目前暫不支持開發工具編譯C、c++代碼生成so文件,應該後續版本會有的。.so 為共享庫,是shared object,用於動態連接的,和dll差不多,可以這樣調用so文件:得到/usr/java/jdk1.5.0_13/jre/lib/i386,將SO文件放在該目錄下運行java程序,輸出了由C語言函數計算出的結果以引擎自帶的HelloCpp為例配置C++的的自動編譯。在eclipse中導入hellocpp工程。操作路徑:eclipse--file--import工程導入後,右擊工程--properties取消CDT builder。然後點擊New新建一個我們自己的builder,選擇program。指定ndk-build.cmd來編譯我們的項目,下面的工作路徑將作為參數傳入給ndk-build.cmd添加NDK_MODULE_PATH變數,注意要寫兩個路徑[cocos2d-x安裝目錄和其目錄下\cocos2dx\platform\third_party\android\prebuilt],用分號分開最後點OK保存。因為不是執行build_native.sh編譯本地代碼,所以別忘了手動拷貝下hellocpp工程下resource中的資源到android工程assets.可以在命令行下編譯多個C/CPP文件,通過cl -c命令來編譯類文件,編譯成obj文件後,你可以使用lib命令將其編譯為lib文件,然後使用link命令連接多個obj文件。默認生成的可執行文件的名稱是命令中第一個obj文件的名稱,具體參考代碼如下:

    9. 如何單獨編譯安卓系統源碼指定模塊

    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源碼根目錄執行. build/envsetup.sh 腳本設置環境

    m:編譯所有的模塊

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

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

    下面舉個例子說明,假設我要編譯android下的\hardware\libhardware_legacy\power模塊,當前目錄為源碼根目錄,方法如下:

    1、. build/envsetup.sh

    2、mmm hardware/libhardware_legacy/power/

    編譯完後 運行 make snod

    會重新將你改過的模塊打入到system.img中

    閱讀全文

    與安卓源碼編譯工程師相關的資料

    熱點內容
    拆二代程序員 瀏覽:396
    河北壓縮空氣冷干機生產廠家 瀏覽:578
    圖論與java 瀏覽:575
    程序員寫代碼告白初音 瀏覽:738
    sshpdf 瀏覽:539
    windows調用linux 瀏覽:594
    如何查找本地伺服器名稱 瀏覽:819
    linux文件只讀屬性 瀏覽:585
    VNAS技術加密 瀏覽:131
    python編程電話費計算話費 瀏覽:463
    c編譯文件怎麼改名 瀏覽:626
    pdf轉格式軟體 瀏覽:875
    單片機原理及應用第二版第八章答案 瀏覽:536
    伺服器一百個節點相當於什麼 瀏覽:344
    綏化電氣編程培訓 瀏覽:374
    輕量應用伺服器怎麼添加軟體上去 瀏覽:813
    資產管理pdf 瀏覽:170
    製冷壓縮機熱負荷過低 瀏覽:364
    伺服器出現兩個IPV4地址 瀏覽:848
    宜興雲存儲伺服器 瀏覽:221