如何編譯安卓系統
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中
B. windows下如何編譯android源碼
如果沒記錯,windows下是沒法編譯android框架源代碼的
因為android是基於linux平台的,因此底層的很多東西都是基於linux系統的
如果只是單純的android應用程序,則可以在windows下開發編譯
只需要用Eclipse的adt插件加上windows下開發的Android SDK就行了。
C. 如何將apk源碼編譯進android系統
把源碼放到packages/apps目錄下
寫個mk文件,放到你的app的工程根目錄下
在源碼中mmm這個app的路徑
D. 如何生成release版本的Android系統
1.使用platform密鑰對apk進行簽名
1.1.進入<Android_Source_Path>/build/target/proct/security,找到【platform.pk8】和【platform.x509.pem】系統密鑰。
1.2.進入<Android_Source_Path>/build/tools/signapk找到SignApk.java,運行javac編譯成SignApk.class
1.3.執行命令java com.android.signapk.SignApk platform.x509.pem platform.pk8 input.apk output.apk
至此,完成。
2. 對1的補充:
<Android_Source_Path>/build/target/proct/security下有多對密鑰,詳細如下:
The following commands were used to generate the test key pairs:
development/tools/make_key testkey '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/[email protected]'
development/tools/make_key platform '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/[email protected]'
development/tools/make_key shared '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/[email protected]'
development/tools/make_key media '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/[email protected]'
The following standard test keys are currently included:
testkey -- a generic key for packages that do not otherwise specify a key.
platform -- a test key for packages that are part of the core platform.
shared -- a test key for things that are shared in the home/contacts process.
media -- a test key for packages that are part of the media/download system.
These test keys are used strictly in development, and should never be assumed
to convey any sort of validity. When $BUILD_SECURE=true, the code should not
honor these keys in any context.
signing using the openssl commandline (for boot/system images)
--------------------------------------------------------------
1. convert pk8 format key to pem format
% openssl pkcs8 -inform DER -nocrypt -in testkey.pk8 -out testkey.pem
2. create a signature using the pem format key
% openssl dgst -binary -sha1 -sign testkey.pem FILE > FILE.sig
extracting public keys for embedding
------------------------------------
it's a Java tool
but it generates C code
take a look at commands/recovery/Android.mk
you'll see it running $(HOST_OUT_JAVA_LIBRARIES)/mpkey.jar
3.對3的補充:
在運行第三步的命令前,請在當前的工作目錄下新建如下結構的文件夾:com.android.signapk,然後將第二步編譯生成的SignApk放入該目錄下。或者也可以將SignApk.java的package聲明刪除後再運行javac編譯。
命令java com.android.signapk.SignApk platform.x509.pem platform.pk8 input.apk output.apk
不單可以對apk文件進行重簽名,也可以對所有的zip文件進行重簽名,包括ROM文件。
網上Android數字簽名大多是與Android APK相關,而介紹Android系統簽名的方法卻不多。正巧前段時間幫別人做CTS 認證,需要用到給Android系統簽名。
為什麼需要給Android系統簽個名才能進行CTS認證呢?原來通過make -j4編譯出來的system.img使用的是test key,這種類型的key只適用於開發階段,而且這種秘鑰是公開的,誰都可以使用。當發布一款android產品,就需要另外給整個系統簽個名,防止被別人盜用。這種系統就是release版本的Android系統。
下面就詳細介紹下整個過程。
1、生成加密key文件
要對Android系統進行簽名,需要生成四種類型的key文件。
a)releasekey
b)media
c)shared
d)platform
就拿releasekey為例簡單介紹下生成過程。
1)進入/android_src/development/tools目錄。
/development/tools$ ls
apkcheck etc1tool hosttestlib jdwpspy makedict mkstubs
axl finnused idegen line_endings make_key monkeyrunner zoneinfo
2)使用make_key工具生成簽名文件
development/tools$ sh make_key releasekey '/C=CN/ST=JiangSu/L=NanJing/O=Company/OU=Department/CN=YourName/emailAddress=YourE-mailAddress'
Enter password for 'releasekey' (blank for none; password will be visible): mypassword <------- 設置密碼
creating platform.pk8 with password [mypassword]
Generating RSA private key, 2048 bit long molus
...............+++
........................................................+++
e is 3 (0x3)
這里要順便介紹下make_key的參數。第一個參數是要生成key的名字,第二個參數是關於公司的信息。
key的名字很好理解,就是前面提到的4中類型的key,公司信息的參數比較多,它們的含義如下:
C ---> Country Name (2 letter code)
ST ---> State or Province Name (full name)
L ---> Locality Name (eg, city)
O ---> Organization Name (eg, company)
OU ---> Organizational Unit Name (eg, section)
CN ---> Common Name (eg, your name or your server』s hostname)
emailAddress ---> Contact email address
這樣就生成了一組releasekey,另外3種類型的key的生成方法也基本一樣。
生成後的結果如下:
/development/tools$ ls
makedict media.pk8 mkstubs platform.pk8 releasekey.pk8 shared.pk8
make_key media.x509.pem platform.x509.pem releasekey.x509.pem shared.x509.pem
*.pk8是生成的私鑰,而*.x509.pem是公鑰,生成時兩者是成對出現的.
2 、 把pk8和x509.pem文件拷貝到vendor/Mol/security/proct_mol目錄
/android_src/vendor/Mol/security/proct_mol$ cp ../../../../development/tools/*.pk8 ./
/android_src/vendor/Mol/security/proct_mol$ cp ../../../../development/tools/*.pem ./
這一部雖然不是必須的,但最好還是這樣做下,由於牽涉到項目的原因,產品和產品型號就用Mol和proct_mol代替了.
3 、 回到根目錄android_src
/android_src/vendor/Mol/security/proct_mol$ cd ../../../../
大家看後肯定覺得這一步很多餘,根本沒有必要單獨提出來,但後來證明把這步提下還是很有必要的,因為第5步的操作必須要在根目錄下執行,不然會出錯.
4 、編譯系統
/android_src$ make -j4 PRODUCT-proct_mol-user dist
這個怎麼跟平時的編譯不一樣,後面多了兩個參數PRODUCT-proct_mol-user 和 dist. 編譯完成之後回在/android_src/dist/目錄內生成個proct_mol-target_files開頭的zip文件.這就是需要進行簽名的文件系統.
5 、開始簽名
android_src$ ./build/tools/releasetools/sign_target_files_apks -d vendor/Mol/security/proct_mol/ out/dist/proct_mol-target_files.zip out/dist/signed_target_files.zip
ERROR: no key specified for:
CalendarWidget.apk
Contacts_yellowpage.apk
SnsAppMain.apk
fbandroid-1.5.0.apk
AnalogClockWidget.apk
MessageWidget.apk
NewsWidget.apk
上面的意思是使用sign_target_files_apks工具採用vendor/Mol/security/proct_mol/下的key對proct_mol-target_files.zip文件進行簽名,並把簽名結果放在out/dist/signed_target_files.zip里.
從上面的簽名結果看,簽名並沒有成功,原因是由於有些apk程序已經簽過名了或者找不到對應的key. 可以通過設置過濾,不對上面的程序進行簽名.方法如下:
通過參數"-e <apkname>=" 來過濾這些程序.
android_src$ ./build/tools/releasetools/sign_target_files_apks -d vendor/Mol/security/proct_mol/ -e CalendarWidget.apk= -e Contacts_yellowpage.apk= -e SnsAppMain.apk= -e fbandroid-1.5.0.apk= -e AnalogClockWidget.apk= -e MessageWidget.apk= -e NewsWidget.apk= out/dist/proct_mol-target_files.zip out/dist/signed_target_files.zip
Enter password for vendor/Mol/security/proct_mol//media key> <----- imput the password
Enter password for vendor/Mol/security/proct_mol//platform key> <----- imput the password
Enter password for vendor/Mol/security/proct_mol//releasekey key> <----- imput the password
Enter password for vendor/Mol/security/proct_mol//shared key> <----- imput the password
rewriting RECOVERY/RAMDISK/default.prop:
replace: ro.build.tags=test-keys
with: ro.build.tags=release-keys
NOT signing: CalendarWidget.apk
NOT signing: Contacts_yellowpage.apk
signing: Mms.apk
signing: SoundRecorder.apk
signing: AccountAndSyncSettings.apk
signing: Camera.apk
.......................................................................
rewriting SYSTEM/build.prop:
replace: ro.build.tags=test-keys
with: ro.build.tags=release-keys
replace: ro.build.description= test-keys
with: ro.build.description= release-keys
replace: ro.build.fingerprint=...........................
with: ro.build.fingerprint=.............................
signing: framework-res.apk
done.
這樣就完成了android系統的簽名工作.
6 、生成image文件
android_src$ ./build/tools/releasetools/img_from_target_files out/dist/signed-target-files.zip out/dist/signed-img.zip
creating boot.img...
creating recovery.img...
creating system.img...
creating userdata.img...
cleaning up...
done.
使用img_from_target_files工具生成signed-img.zip文件.signed-img.zip文件包含了boot.img,userdate.img,system.img文件等.
7 、通過fastboot下載signed-img.zip文件
fastboot update signed-img.zip
通過fastboot就可以把簽了名的系統文件下載到手機上了。
E. 32位系統如何編譯android4.4
您好,編譯Android源代碼需要有Linux開發環境。關於如何在Linux下編譯安裝android源代碼,可以參考下面的文章,講的很詳細,對可能遇到的問題也有正確的解決法,希望能夠幫到你。文章地址:34537143
F. 有手機的源代碼,如何編譯安卓4.4的系統
代碼編譯…
恐怕這個不是隨隨便便在這里幾句話就能說明白的…
首先要下載安卓4.4的內核,
然後要把廠商的手機源代碼編譯進去,
還要自己寫腳本,
很多都是很技術的活。
lz確定能hold住么?
G. 如何把應用程序app編譯進android系統
把安卓應用軟體安裝到安卓系統文件,即把安卓應用軟體放到系統根目錄system/app下 操作方法 :
准備工作:
一、開啟ROOT許可權。
ROOT方法:下載一鍵ROOT之類的軟體,根據操作步驟進行,就可以獲取ROOT許可權了。
二、安裝RE文件管理器。
清理系統自帶應用
(一)、用RE打開系統根目錄下的system/app,進行精簡系統自帶應用,注意,要對照一些總結可刪減程序的文件,以免刪錯了導致系統故障。
(二)、根目錄:preload目錄下,可能會有系統的預裝應用,不用的也可以全部刪掉。
移動APK到system/app 目錄:
一、移動apk:用RE管理器把要安裝的apk軟體移動到/system/app 目錄下。
在操作前,將/system/app 目錄掛載為可讀寫;
注意軟體名不要有中文 、空格及其他特殊字元等;
如果無法移動,顯示空間不足時,可以先移動到data/app/下,再移動到/system/app;
二、修改apk許可權: 對移動進來的apk軟體更改許可權,即改為:用戶許可權為 讀+寫,分組許可權為 讀,其他許可權為 讀。
三、提取 .so文件:用RE提取apk軟體中/lib/目錄下的所有 .so文件,將其移動到/system/lib中。
點擊apk軟體,用RE查看文件內容,即可找到 ,so文件。
四、修改 .so文件許可權:方法同上。
五、重啟手機。在此過程中,可能載入的時間稍長點,請耐心等待即可。
H. 安卓系統(android)怎樣才能成功編譯安裝『make』命令
tar.gz(bz或bz2等) 一、安裝1、打開一個SHELL,即終端2、用cd 命令進入源代碼壓縮包所在的目錄3、根據壓縮包類型解壓縮文件(*代表壓縮包名稱) tar -zxvf ****.tar.gztar -jxvf ****.tar.bz(或bz2)4、用CD命令進入解壓縮後的目錄5、輸入編譯文件命令:./configure(有的壓縮包已經 編譯過,這一步可以省去) 6、然後是命令:make 7、再是安裝文件命令:make install8、安裝完畢如果安裝了busybox命令就要這樣用: busybox+空格+命令
I. android系統如何在windows下編譯
目前官網不提供在windows下對android的支持,只提供對linux/mac(類UNIX)的支持,可參考 http://source.android.com/source/download.html
android基於linux 內核,對其相關編譯和連接環境有依賴。建議在windows上安裝虛擬機,安裝linux來編譯。
J. 如何自己編譯android系統並製作刷機包
android系統製作刷機包方法:
【一】:下載安裝最新版ROM助手(市場中有很多類似的製作工具,關鍵要求操作簡單,功能強大),安裝程序非常簡單,只需在一隻蘑菇首頁內直接下載,並解壓到自己的電腦安裝即可。
【二】:如果已經下載了與機型匹配的ROM刷機包,那麼現在可以直接打開ROM助手了,接下來繪制專屬個性的完美刷機包就從這里開始吧。
【三】:打開軟體後,它會自動升級到最新版本,另外打開主界面後,會直觀簡明的顯示出它的所有功能,例如:性能優化,系統精簡,預裝APK,簽名打包等等。提醒大家,不要貪心哦,要根據自己的需求點擊需要操作的功能,如系統精簡,然後進入操作界面,所有功能全部修改一遍也無妨,反正都是一鍵操作,省時省力。