編譯aosp12
① 如何編譯android x86模擬器
首先你需要設置一下emulator工具的目錄之類的
要在.bashrc中新增環境變數,如下
ANDROID_PRODUCT_OUT=~/android/out/target/proct/generic
ANDROID_PRODUCT_OUT_bin=~/android/out/host/linux-x86/bin
這里是設置你的輸出文件的位置和bin工具目錄
然後在命令行輸入:
export path=${path}:${ANDROID_PRODUCT_OUT_bin}:${ANDROID_PRODUCT_OUT};
上面是導入了相關的配置,然後使之生效。
source ~/.bashrc
接著切換到輸出的system文件夾
cd ~/android/out/target/proct/generic
然後來創建模擬器
emulator -system system.img -data userdata.img -ramdisk ramdisk.img
如果你運氣夠好的話,也許現在已經在運行了,不過我運氣明顯不夠好。
提示一:
emulator: ERROR: You did not specify a virtual device name, and the system
directory could not be found.
If you are an Android sdk user, please use 『@<name>』 or 『-avd <name>』
to start a given virtual device (see -help-avd for details).
Otherwise, follow the instructions in -help-disk-images to start the emulator
既然人家提示了,那就按照步驟走吧,輸入命令:
emulator -help-avd
接著提示如下:
use 『-avd <name>』 to start the emulator program with a given Android
Virtual Device (a.k.a. AVD), where <name> must correspond to the name
of one of the existing AVDs available on your host machine.
See -help-virtual-device to learn how to create/list/manage AVDs.
As a special convenience, using 『@<name>』 is equivalent to using
『-avd <name>』.
跟著提示繼續走,輸入命令:
emulator -help-virtual-device
又是提示了:
An Android Virtual Device (AVD) models a single virtual
device running the Android platform that has, at least, its own
kernel, system image and data partition.
Only one emulator process can run a given AVD at a time, but
you can create several AVDs and run them concurrently.
You can invoke a given AVD at startup using either 『-avd <name>』
or 『@<name>』, both forms being equivalent. For example, to launch
the AVD named 『foo』, type:
emulator @foo
The 『android』 helper tool can be used to manage virtual devices.
For example:
android create avd -n <name> -t 1 # creates a new virtual device.
android list avd # list all virtual devices available.
Try 『android –help』 for more commands.
Each AVD really corresponds to a content directory which stores
persistent and writable disk images as well as configuration files.
Each AVD must be created against an existing sdk platform or add-on.
For more information on this topic, see -help-sdk-images.
延伸1):
Android x86模擬器Intel Atom x86 System Image配置與使用方法
大家現在開發使用的Android 模擬器模擬的是 arm 的體系結構(arm-eabi),因此模擬器並不是運行在x86上而是模擬的arm,所以我們調試程序的時候經常感覺到非常慢,大部分開發者應該都深有體會。
針對這種情況,前段時間intel推出了支持x86的Android模擬器,這將大大提高啟動速度和程序的運行速度,這將允許Android模擬器能夠以原始速度(真機運行速度)運行在使用intel x86處理器的電腦中,各位開發者有福了,下面將為大家展示使用方法。
一、首先下載intel提供的 intel® Hardware Accelerated Execution Manager 1.0.1(R2)
requirement:
1. requires the Android* SDK to be installed (version 17 or higher). SDK17或者以上
2.intel® processor with support for VT-x, EM64T, and Execute Disable (XD) bit functionality intel的cpu:並支持VT-X(虛擬化技術)、可擴展64位、Execute Disable bit。(均需要保證在bios中開啟Enable)
3. At least 1 gb of available ram 1G以上內存,否則安裝不了
滿足硬體和軟體要求之後,就可以開始安裝了,一直下一步至安裝成功。途中有個地方選擇分配給HAXM內存大小,一般默認就好,分太多會拖慢整機速度。
安裝成功後命令行輸入sc query intelhaxm,查看運行狀態: state is: 「4 RUNNING」 ,即代表安裝成功。需要更改分配內存,重新運行一下安裝程序選擇change即可修改。
還可以使用以下指令手動開啟和關閉:
Stop: sc stop intelhaxm
Start:
sc start intelhaxm
滿足軟硬體條件,若提示如下Error:but intel Execute Disable bit (XD) is not turned on......
(需要開啟系統數據執行保護功能dep,下午糾結了好久才查到。官網原文:Windows* hosts may need to enable dep (Data Execution Prevention) in addition to intel XD)
命令行使用指令:bcdedit.exe /set nx optin 打開即可,需要重啟電腦
二、下載Intel Atom x86 System Image
1. 從SDK Manager下載:打開SDK Manager,展開至Android2.3.3(API10)(注意:目前只有2.3.3和4.0.3(Ice Cream Sandwich)有x86的Image),需要和2.3.3的SDK Platform配合使用。
2.使用avd Manager創建一個新的avd: Hardware Property裡面選擇gpu emulation yes 還有 Keyboard support yes
3.開始使用飛速的模擬器吧,各種爽歪歪
好的工具可以更有效率的開發APP,讓我們從此告別那龜速的模擬器吧
② 如何單獨編譯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源碼中的模塊
第一次下載好Android源代碼工程後,我們通常是在Android源代碼工程目錄下執行make命令,經過漫長的等待之後,就可以得到Android系統鏡像system.img了。以後如果我們修改了Android源代碼中的某個模塊或者在Android源代碼工程新增一個自己的模塊,是不是還是執行make命令呢?答案是否定的,Google為我們准備了另外的命令來支持編譯單獨的模塊,以及重新打包system.img的命令。在繼續學習Android源代碼之前,就讓我們先來看看這個命令吧。
一. 首先在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 這樣一切就搞定了。
④ 如何編譯boot和android
1. 執行:apt-get install mingw32安裝了linux-windows交叉編譯環境mingwin 2. 執行:. build/envsetup.sh 3. 執行choosecombo,選擇各個參數 這兩步設置了一些編譯參數和環境變數,按照你正常編譯Android的設置即可。 4. 執行:make USE_MINGW=y adb 5. 執行:make USE_MINGW=y fastboot 最後到out/host/windows-x86/bin目錄下就能找到你剛剛編譯的東西了。
⑤ 如何在 ubuntu 下編譯 aosp生成 mac 和 win 環境可執行的 aapt 工具
如果你用的是 Ubuntu 或其他 Debian 衍生的發行版,可以使用 apt-get命令。比如:$ sudo apt-get install 軟體包名稱
然後輸入密碼,如果軟體包的名稱正確,軟體安裝進程就會被啟動。
apt-get 還可以刪除軟體,只要把上面的 install 換成 remove 就行了。
⑥ 如何成功運行SDL官方提供的Android平台的Demo
操作步驟:
第一步:准備SDL源代碼包;
1. 去官網下載最新版SDL2-2.0.3.tar.gz;
2. 解壓後,可以在根目錄下找到android-project目錄和README-android.txt,前者是一個一個Android工程模板,後者是關於如何使用該工程的文檔說明。
3. 調整目錄,使其成為一個可編譯的工程:
(1) 將android-project目錄剪切到與SDL2-2.0.3同級的目錄;
(2) 然後將SDL2-2.0.3目錄拷貝到android-project\jni目錄下,並重命名為SDL;
第二步:為SDL增加main函數
(1) 下載wiki.libsdl.org/Tutorials#Android.c文件;
(2) 下載之後將其放入android-project\jni\src目錄;
(3) 將main.c加入android-project\jni\src\Android.mk: 在Android.mk中默認有個YourSourceHere.c,將其替換為main.c即可;
第三步:編譯libSDL2.so和libmain.so
註:請確認NDK的bin目錄已經配置到環境變數PATH中去;
打開cmd命令窗口,進入到android-project目錄,然後執行"ndk-build"命令進行編譯。編譯成功後會在android-project根目錄下生成libs目錄,下面有各個平台的需要的這兩個so文件。
第四步:修改build target配置文件
默認的工程是使用的=android-12,必須使這個target與系統配置的一致,否則編譯會失敗. 具體的配置位於android-project/project.properties和android-project/default.properties中。由於adt-bundle-windows-x86_64-20130729.zip包對應的是android-18,因此需要將這兩個文件中的配置全部改為android-18.
第五步:導入Eclipse運行
依次選擇File->New->Android->Android Project from Existing Code,然後選擇android-project目錄將工程文件導入到Eclipse中。
然後選擇按照正常的Android工程運行即可。這個時候程序閃一下什麼都沒有,因為沒有添加資源。可下載一個bmp圖片放到android-project/assets中,這個目錄是由eclipse自動生成的。然後運行就可以看到通過SDL渲染出來的圖片了。
⑦ windows下如何編譯android源碼
如果沒記錯,windows下是沒法編譯android框架源代碼的
因為android是基於linux平台的,因此底層的很多東西都是基於linux系統的
如果只是單純的android應用程序,則可以在windows下開發編譯
只需要用Eclipse的adt插件加上windows下開發的Android SDK就行了。
⑧ Android在Ubuntu下編譯完整aosp需要多少硬碟空間
6.0以後的AOSP我沒編譯過,不太了解需要多大空間。
不過5.1.1我倒是編過,你可以參考一下:mac編譯aosp的配置需求? - 知乎用戶的回答
編譯完了,大概佔用了60G,6.0可能會更大一些。
像你列舉的250G等容量的硬碟,用來編AOSP,容量上是綽綽有餘的。其實如果經濟上允許,推薦你選擇一個SSD,對於編譯速度的提升,效果顯著。
⑨ 如何編譯android 可執行的二進制文件
Android由於其代碼是放在dalvik虛擬機上的託管代碼,所以能夠很容易的將其反編譯為我們可以識別的代碼。 之前我寫過一篇文章反編譯Android的apk包到smali文件 然後再重新編譯簽名後打包實現篡改apk的功能。 最近又有一種新的方法來實現直接從Android apk包里的classes.dex文件,把dex碼反編譯到java的.class二進制碼,然後從.class二進制碼反編譯到java源碼想必就不用我來多說了吧。 首先我們需要的工具是dex2jar和jd-gui 其中第一個工具dex2jar是用來把classex.dex文件也就是dex二進制碼轉化為java的標准.class二進制碼,然後jd-gui是把標準的.class二進制碼再反編譯為java源碼。 首先從apk包裡面提取出classes.dex 放到dex2jar目錄下 然後在命令行下執行 dex2jar.bat classes.dex 這時執行成功後會生成一個classes.dex.dex2jar.jar文件 這個文件再用jd-gui打開,如下圖 幾乎跟我自己寫的這個程序的源碼一樣 提供這個反編譯方法主要用於大家學習與研究,有問題可以與我郵件討論。 希望大家不要用這個方法從事惡意的活動,畢竟,別人辛辛苦苦寫程序也不容易,用這個方法可以大致的學習到別人寫的程序的邏輯,架構,希望對大家有所幫助。 Android 逆向apk程序的心得 本文主要介紹如何逆向一個Android的APK應用程序,本文提供的方法僅供研究學習之用。 本文需要用到的工具有 jdk 這個用於搭建java運行環境 AXMLPrinter2.jar 這個用於逆向.xml文件 baksmali.jar 這個用於逆向classex.dex文件 由於Android的.apk文件實際上就是一個zip文件 可以直接用winrar打開
⑩ 如何編譯android sdk
如果沒有真正開發板,又想深入到android framework里,或kernel里的話,就只能用android 的emulator了。 但是我們下載的android SDK沒有源代碼,我們沒辦法跟蹤修改framework和kernel里的東西。
所以有了想嘗試自己從頭生成SDK的想法。
1. 首先下載編譯android所有source code.
具體步驟這里不再贅述,參考ht tp:/ /source.and roid.c om/download
cd mydroid
repo init -u git://android.git.kernel.org/platform/manifest.git
repo sync
一點小提示: 有時候google的android伺服器老是斷,總不能讓我們守在電腦旁邊一直手工重新repo sync吧,這可是需要N個小時才能下載完的啊。
我們就寫個小腳本讓電腦自動repo sync,直到下載成功為止:
#!/bin/sh
count=0
ret=1
while [ $ret -ne 0 ]
do
repo sync
ret=$?
count=$(( $count + 1))
echo "try $count, ret: $ret"
done
echo "try $count, ret: $ret"
把上面的內容復制到一個文件里tryrepo.sh
然後修改tryrepo.sh的屬性,開始自動工作吧。第二點早上應該就大功告成了
chmod a+x tryrepo.sh
./tryrepo.sh
2. 編譯android, 生成SDK
make sdk
漫長的等待之後,SDK生成了,在目錄:mydroid\out\host\linux-x86\sdk\android-sdk_eng.yanbin_linux-x86\platforms\
在linux下面可以直接運行mydroid\out\host\linux-x86\sdk\android-sdk_eng.yanbin_linux-x86\tools\android 就可以看到熟悉的android emulator啟動界面。
如果想在windows XP下使用這個SDK和emulator, 最簡單的方法是:
(1)自己下載一個最新的windows版本的android 2.0 SDK。
(2)把mydroid\out\host\linux-x86\sdk\android-sdk_eng.yanbin_linux-x86\platforms\下的東西復制到windows版SDK的platforms下。
(3) 然後把platforms下android-2.0下tools目錄下的幾個.exe文件復制到自己編譯的SDK目錄下的tools目錄下。