導航:首頁 > 源碼編譯 > 安卓源碼編譯配置

安卓源碼編譯配置

發布時間:2022-08-29 19:56:15

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

② android 編譯伺服器大概需要什麼配置 5

工欲善其事,必先利其器」,要想提高團隊整體的開發效率,盡可能的提前完成開發任務,必須要配備一套配置給力的開發設備。源碼編譯伺服器硬體配置的高低,直接影響著系統固件升級和ROM版本發布的速度和效率。

由於目前Google發布的最新版本的Android系統源碼體積越來越大,因此,越是定製高版本的系統,對編譯伺服器的硬體配置要求就越高,這里根據調研,給出目前Android
6.0及以下版本源碼定製開發的基本配置,供大家參考。

首先進行一波企業級android源碼編譯伺服器的推薦,這類推薦網上絕無僅有,這還是我進行了很久的調研,詢問很多朋友【其中包括不乏6年以上系統開發的大牛,也有之前公司的主管等】,也查了很多資料才挑選出來,提出需求後讓上級審批,目前上一級已經認可比審批,等待領導簽字。給力。

詳細

③ 想使用docker來進行Android源碼編譯,對電腦配置要求怎麼樣

這個配置足夠了,還需要配置好對應的環境和編譯工具。

④ 如何定製android源碼的編譯選項 amp;後期安裝

文件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: 工程模式,用於平台級的調試,是默認的編譯類型。
待安裝的模塊tag有: eng, debug, user, development.
安裝不帶tag的非APK模塊;
所安裝應用由產品定義文件給出;
默認屬性: ro.secure=0, ro.deuggable=1, ro.kernel.android.checkjni=1
adbd默認開啟,adb以root身份運行。
user: 即最終用戶版;
待安裝的應用tag有: user
安裝不帶tag的非APK模塊;
所安裝應用由產品定義文件給出;
默認屬性有ro.secure=1, ro.debuggable=0;
默認關閉adbd服務(但可通過應用settings來打開,且adb以shell身份運行);
userdebug: 與user類似,除了:
支持有限的調試功能;
待安裝的應用tag有:debug;
默認屬性有ro.secure=1, ro.debuggable=1;
默認打開adbd服務,adb以shell身份運行;

例如,由文件build/core/main.mk可以看出,當使用含有userdebug的combo值時,此文件中的臨時變數enable_target_debugging會保持為true,相應地,編譯過程會執行:
ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1 persist.service.adb.enable=1
這意味著目標系統中根目錄下的文件/default.prop文件(對應變數 INSTALLED_DEFAULT_PROP_TARGET )會含有以下行(參考文件build/core/Makefile):
persist.service.adb.enable=1
由此,目標系統會默認開啟adbd服務,你就可以通過其它PC來連接目標系統了。

所以,如要默認開啟adbd服務,可在設備(如stvm3)定製文件device/amlogic/vendorsetup.sh中增加以下行:
add_lunch_combo stvm3-userdebug
這樣在執行bash的lunch函數時,選擇此combo就可以默認打開adbd服務(adb以shell身份運行)。

但是,即使adbd已經開啟,你仍可能無法通過網路連接到Android進行調試,這涉及到Android的二個屬性:
service.adb.tcp.port (優先順序高)
persist.adb.tcp.port (優先順序低)
註:可查看源碼文件system/core/adb/adb.c。
默認地,這兩個屬性值是5555。有兩種方法來設置此變數:
1)(永久性改變)在Android配置文件/init.rc或/init.$MANUFACTUROR.rc中添加一行:
setprop service.adb.tcp.port 5555
2)(臨時性改變)在命令行上(你可能需要先通過串口開一個終端)執行如下命令:
setprop service.adb.tcp.port 5555

檢查adbd是否支持通過網路鏈接Android:執行命令
netstat -l -n | grep ":5555"
如果有LISTEN狀態的輸出,則表示adbd支持網路模式 :) 。

⑤ 如何將源代碼編譯後的文件編譯到android中

1.將應用程序源碼復制進Android源碼目錄中(提前編譯好源碼)
2.使用build/envsteup.sh 配置shell -
mm TARGET_PRODUCT=proct_name
或直接./build_android.sh 也能完成編譯。
3.在源碼目錄:out/target/proct/proctname/obj/APPS/test_cert_intermediates 下有三個文件:package.apk package.apk.unsigned package.apk.unaligned
將package.apk.unsigned復制出來,單獨進行sign.
4.在Windows下進行sign: jarsigner -verbose -keystore youkey.keystore d:\package.apk.unsigned youkey
5.zipalign -v 4 d:\package.apk.unsigned d:\package.signed.apk

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

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中

⑦ 如何編譯android手機源碼

編譯android系統源碼准備工作:
下載android源碼
在windows上用gitbash ,git clone 下載代碼
linux上這樣下載
創建~/bin目錄,用來存放repo程序,如下:

$ cd ~
$ mkdir bin
初始化repo
repo是android對git的一個封裝,簡化了一些git的操作。
創建工程目錄:
$ mkdir android
$ cd android
下載repo腳本並使其可執行:
$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo
repo初始化:
$ repo init -u git://android.git.kernel.org/platform/manifest.git
在此過程中需要輸入名字和email地址。初始化成功後,會顯示:
repo initialized in /android
在~/android下會有一個.repo的隱藏目錄。
5)同步源代碼
$ repo sync
這一步要很久很久。
安裝linux系統,推薦ubuntu,圖形界面
安裝編譯需要的支持包
$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
安裝java6.0
$ sudo apt-get install sun-java6-jdk
配置java環境
sudo gedit ~/.bashrc

末尾加上

JAVA_HOME=/usr/lib/jvm/java-6-sun
JRE_HOME=${JAVA_HOME}/jre
export ANDROID_JAVA_HOME=$JAVA_HOME
export CLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export JAVA_HOME;
export JRE_HOME;
export CLASSPATH;
HOME_BIN=~/bin/
export PATH=${PATH}:${JAVA_PATH}:${HOME_BIN};
sudo source ~/.bashrc
是環境變數生效

編譯android源碼,並得到~/android/out目錄

$ cd ~/andoird
$ make
這一過程很久。
這就編譯結束了

⑧ 如何定製android源碼的編譯選項 後期安裝

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: 工程模式,用於平台級的調試,是默認的編譯類型。 待安裝的模塊tag有: eng, debug, user, development. 安裝不帶tag的非APK模塊; 所安裝應用由產品定義文件給出; 默認屬性: ro.secure=0, ro.deuggable=1, ro.kernel.android.checkjni=1 adbd默認開啟,adb以root身份運行。 user: 即最終用戶版; 待安裝的應用tag有: user 安裝不帶tag的非APK模塊; 所安裝應用由產品定義文件給出; 默認屬性有ro.secure=1, ro.debuggable=0; 默認關閉adbd服務(但可通過應用settings來打開,且adb以shell身份運行); userdebug: 與user類似,除了: 支持有限的調試功能; 待安裝的應用tag有:debug;

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

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

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

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

    閱讀全文

    與安卓源碼編譯配置相關的資料

    熱點內容
    宜春團購app開發哪裡好 瀏覽:619
    域伺服器如何設置多個dhcp 瀏覽:925
    通達信分時圖分時均價線源碼 瀏覽:857
    在單片機中有哪些顯示器 瀏覽:789
    我的世界如何在伺服器里設置貨幣 瀏覽:591
    酷貓系統如何安裝app 瀏覽:636
    郵寄伺服器是干什麼用 瀏覽:159
    解除電腦加密文件夾 瀏覽:358
    androidcheckbox組 瀏覽:546
    linux在線安裝軟體 瀏覽:823
    如何設置手機安卓版 瀏覽:285
    簡歷pdfword 瀏覽:123
    鋒雲視頻伺服器網關設置 瀏覽:162
    linux伺服器如何查看網卡型號 瀏覽:142
    加密相冊誤刪了怎麼恢復 瀏覽:380
    安卓代練通怎麼下載 瀏覽:518
    知道域名如何查詢伺服器 瀏覽:907
    方舟手游怎麼才能進伺服器 瀏覽:289
    抖音演算法自動爆音 瀏覽:24
    linux修改網卡配置 瀏覽:913