『壹』 如何定製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支持網路模式 :) 。
『貳』 為什麼安卓系統不統一而出各種定製安卓
你好,首先呢,
安卓系統
是谷歌的一個開源產品,各個手機廠商可以自主定製安卓系統的源碼,展現各家手機廠商的特色,比如小米的miui還有華為的emui,還有一個原因就是每家手機廠商因為手機的硬體構造不一樣,所以驅動程序會不盡相同,所以這個也是需要定製的。
『叄』 Android ROM包定製(解包,增刪模塊,打包)
以前剛用手機的時候,經常可以在玩機論壇上看到很多發ROM包的帖子,譬如什麼大深度定製ROM,什麼大深度深度精簡純凈版ROM...相信很多喜歡搞機的都有見過這類帖子。後來自己不滿每次刷機後都要手動設置一大堆東西,遂按照論壇上的教程改了Defy+的cm11的ROM,集成了綠色守護,默認允許安裝未知來源的應用,默認電池百分號顯示等等。時隔4年,又玩起了ROM包定製,感慨頗多
假設有一個名為update.zip的ROM包,我們要在Ubuntu下對它進行定製。首先把 system.transfer.list 和 system.new.dat.br (有些舊版的系統的鏡像可能是system.new.dat)從update.zip解壓出來,轉成system.img(原始鏡像格式),修改完後又按步驟打包回原來的格式。本文只寫了system分區的定製方法,但是對於其他分區也是類似的,都要轉成原始鏡像格式後才能對它修改。如果使用 file system.img 命令來查看system.img文件信息,會得到類似下面的信息:
brotli -d system.new.dat.br
掛載後可以通過 df -h 來查看掛載點 /mnt/system 剩餘空間有多少,如果沒有剩餘,就要對它進行擴容,下面的例子是給它增加128M的空間,擴容之前要先取消掛載
現在,可以在/mnt/system目錄下根據自己的需求增刪文件了
增刪文件需要注意:
打包其實就是解包的逆過程
成功後會在當前目錄下生成system_new.img。如果發生錯誤,根據錯誤進行調整參數,直到沒有錯誤提示為止。
轉換之前可以對之前解壓出來的文件進行備份:
開始轉換
成功後會在當前目錄下生成system.transfer.list和system.new.dat
在有些刷機包里,它裡麵包含的system.img鏡像是 sparse image 格式的,如果用file命令查看它的信息,顯示如下:
對於這種格式的鏡像,如果想把它掛載和修改,就要轉成我們上面提到的raw image(原始鏡像)格式,命令如下:
修改完成後,取消掛載,再使用下面的命令將 raw image 轉成 sparse image :
相對於修改Android源碼的方式,直接修改鏡像的方法對PC配置要求低很多。如果我們只想增加一些現有的模塊和刪除不必要的模塊,這是很好的方式。而且對於一些手機廠商,他們沒有提供Android源碼,我們就只能用直接修改鏡像的方式來定製我們的ROM。修改ROM的方法是靈活的,總結下來就是,看見一個鏡像,可以根據後綴名和file命令確認它的格式,看情況將它轉成原始鏡像格式並掛載,就可以修改了,修改後又轉回它原來的格式,最後替換刷機包中原有的鏡像
『肆』 怎麼單獨編譯安卓系統源碼指定模塊
一. 首先在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源碼為基礎,以產品特性為目的而進行深度改造的系統。市面上最常見的深度定製系統是中國移動OPhone所採用的OMS系統。深度定製不只是對UI進行的重新設計,還會圍繞硬體的特性對系統API進行改動,造成使用標准API介面的應用程序在深度定製的系統上無法兼容。
安卓是一個開源的系統
,在一定的基礎上可以對原系統進行修改,這樣既保留了安卓原有的特性,又添加了一些新的功能和特點。在軟體兼容上,深度定製的安卓系統是可以兼容原生的軟體的,但是
因為深度定製的安卓系統添加了新的特點,所以,有一些軟體是專門針對深度定製的安卓系統而開發的,所以原生的系統可能是不兼容的。總體來說
,深度定製的安卓系統和原來的系統在操作上相似度還是很高的。現在用完全原生的安卓系統的手機是不多的,大部分都是經過修改美化的安卓。
深度定製的手機一般都是無法升級成原生Android系統的,只能使用廠商發布的定製系統升級包。有些高手玩家可能會移植一些基於某型號手機的原生Android系統,但是因為技術原因,這些系統的穩定性很差,為了兼容應用軟體而刷這些系統是得不償失的。
當前各大手機製造商為了標榜自己的本土化,針對性設計,都在Android系統上加入很多的自主東西,現在市場上的魅族M9、移動OMS、點心OS都是非原生Android
系統,還有樂Phone的樂OS也基本上看不到原生Android的影子,這些都是深度定製的安卓系統,只是在原生安卓上面做了一定的UI修改或者是加入了自己的一些應用軟體。nbsp;
『陸』 在網上看到,在ubuntu上編譯android源碼的目的是什麼
定製嘛,就是按你自己的要求設定方案,因為android是開源的,而且google提供了很完備的開發框架,有java基礎的人可以很快上手。
源碼定製估計是現在的android的市場一個發展方向,因為以前都是山寨機,軟體硬體一個樣,而現在智能機在硬體方面基本是差不多的,而android軟體框架也是一樣,但是開發比較簡單,門檻很低,所以一些公司提供了定製服務,改動下源碼提供個性化服務。個人理解,你可以繼續網路了解下。
至於你想學開發android,先看下java,應用層是用java開發的,而且你以後也可以自己開發些小應用鬧著玩。參考書方面很多,什麼android應用開發揭秘啊,adk開發範例大全啊,精通android啊什麼的,可以在網上找電子檔或者別人的教學視頻,很多的。
『柒』 修改安卓游戲的源碼
您好,
如果源碼沒有加密的話,
您可以使用反編譯軟體將您的游戲進行反編譯
在騰訊電腦管家——軟體倉庫中有多款反編譯軟體
您可以選擇合適的反編譯軟體,修改源碼後重新簽名打包
推薦使用【改之理】傻瓜式操作
希望可以幫到您,望採納
騰訊電腦管家企業平台:http://..com/c/guanjia/