android高通編譯
1. 在網上看到,在ubuntu上編譯android源碼的目的是什麼
定製嘛,就是按你自己的要求設定方案,因為android是開源的,而且google提供了很完備的開發框架,有java基礎的人可以很快上手。
源碼定製估計是現在的android的市場一個發展方向,因為以前都是山寨機,軟體硬體一個樣,而現在智能機在硬體方面基本是差不多的,而android軟體框架也是一樣,但是開發比較簡單,門檻很低,所以一些公司提供了定製服務,改動下源碼提供個性化服務。個人理解,你可以繼續網路了解下。
至於你想學開發android,先看下java,應用層是用java開發的,而且你以後也可以自己開發些小應用鬧著玩。參考書方面很多,什麼android應用開發揭秘啊,adk開發範例大全啊,精通android啊什麼的,可以在網上找電子檔或者別人的教學視頻,很多的。
2. android如何把apk的工程代碼放到源碼目錄下編譯
啥平台的,是原生的還是高通的還是mtk的?反正都類似,你需要一個Android.mk然後源碼需要整體new過。然後編譯的時候編譯到Android.mk所在目錄就可以了。反正我現在接觸mtk平台的,new代碼方法如下:1、首先到XXXXXX/L23_XXXXXXX_AN5.1_MT6735_65C_L1.MP3.V1.8.9_150503/android_mtk_6753_mp目錄下,使用如下命令./TmakeGionee
BFL7506A
-p
packages/apps/XXXXX(XXXXXX就是你apk代碼所存放的並且與Android.mk同級的目錄)。
3. 如何編譯android kernel
1.准備工作: (ubuntu1110 32位)
ubuntu等linuxOS,下載好eclipse,安裝好JDK, 安裝好android的SDK, 在eclipse中成功打開android 手機模擬器即OK。
2.初始化編譯環境 :
關注該網頁上的「installing required packages」,其中有的軟體包因為版本問題而安裝不上,不用管它,之後遇到錯誤再單獨解決。
3.下載內核源碼:
android 2.3 內核 下載需要等待一段時間。
4.下載交叉編譯器:
該步驟有可能耗費大量時間,依據網速不同,幾個小時到幾天不等,或許可以嘗試git clone 後面的地址只下載prebuilt/linux-x86/toolchain
5.設置參數以及編譯:
$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-
$ cd goldfish // 進入下載的源代碼目錄
$ git checkout <commit_from_first_step> //這個步驟我沒有做,不知道幹嘛用的
$ make goldfish_defconfig
$ make
6.報錯信息:
若有報錯說找不到 (arm-eabi-gcc command not found)等等,嘗試使用http://blog.csdn.net/davidbeckham2901/article/details/7397447 中說到的解決方案即可(即採用另外一個交叉編譯器)。
7.測試:
最後,測試一下剛才編譯的內核:emulator -avd myavd -kernel ~/goldfish/arch/arm/boot/zImageemulator若系統找不到,可以去android SDK中某文件夾找到,加入系統PATH即可。 -avd後面的參數 myavd即為模擬器的名字,這個我是在eclipse中的模擬器管理中新建的一個模擬器,用那個模擬器的名字即可。 -kernel後面的參數就找到剛才編譯出的內核的路徑。
若啟動模擬器失敗,可嘗試關閉後再啟動。第一次啟動模擬器時可能需要等待比較長的時間,3分鍾到15分鍾不等。
4. 如何將高通的代碼生成sdk android
在Eclipse選擇File-New-Android Project,然後在創建新實例的畫面單擊Create project form existing source,並選擇放置Android SDK目錄,例如C:\Android\android-sdk-windows-1.5_r2\platforms\android-1.5\samples\ApiDemos,導入ApiDemos源代碼即可。
5. android 怎樣編譯kernel 命令 make
方法如下:
在Linux的環境下:
建立目錄:
mkdir ~/android-kernel cd android-kernel
下載源代碼, 大概有280MB, 慢慢等哈~~~ (當然你要先安裝git) git clone git://git.linuxtogo.org/home/groups/mobile-linux/kernel.git
類似的屏幕信息:
Initialized empty Git repository in /home/user/android-kernel/kernel/.git/ remote: Counting objects: 908251, done.
remote: Compressing objects: 100% (153970/153970), done.
remote: Total 908251 (delta 755115), reused 906063 (delta 753016) Receiving objects: 100% (908251/908251), 281.86 MiB | 292 KiB/s, done. Resolving deltas: 100% (755115/755115), done. Checking out files: 100% (22584/22584), done.
然後去到htc-msm branch: cd kernel
git checkout -b htc-msm origin/htc-msm
屏幕信息:
Branch htc-msm set up to track remote branch refs/remotes/origin/htc-msm. Switched to a new branch "htc-msm"
下載ARM的toolchain, 大概64MB左右, 下到~/android-kernel: 下
載
:
http://www.codesourcery.com/gnu_toolchains/arm/portal/package2549/public/arm-none-linux-gnueabi/arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
cd ~/android-kernel
tar xjf arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
編譯kernel
准備預設的Kaiser 配置文件.config
cd ~/android-kernel/kernel
make htckaiser_defconfig ARCH=arm
然後編譯zImage:
export PATH=~/android-kernel/arm-2008q1/bin:$PATH
make zImage ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
編譯好的在: ~/android-kernel/kernel/arch/arm/boot/zImage
如果你的機器是多核的, 可以編譯的時候用-j <cores/cpus_number>來加速:
比如, 雙核的可以:
make -j 2 zImage ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi
滿意請採納謝謝
6. android 源碼 怎麼只編譯 systemui
Google提供的Android包含了原始Android的目標機代碼,主機編譯工具、模擬環境,下載的代碼包經過解壓後(這里是Android2.2的源碼包),源代碼的第一層目錄結構如下: -- Makefile -- bionic (bionic C庫) -- bootable (啟動引導相關代碼) -- build (存放系統編譯規則及generic等基礎開發包配置) -- cts (Android兼容性測試套件標准) -- dalvik (dalvik JAVA虛擬機) -- development (應用程序開發相關) -- external (android使用的一些開源的模組) -- frameworks (核心框架——java及C++語言) -- hardware (主要保護硬解適配層HAL代碼) -- libcore -- ndk -- device -- out (編譯完成後的代碼輸出與此目錄) -- packages (應用程序包) -- prebuilt (x86和arm架構下預編譯的一些資源) -- sdk (sdk及模擬器) -- system (文件系統庫、應用及組件——c語言) `-- vendor (廠商定製代碼) bionic 目錄 -- libc (C庫) -- arch-arm (ARM架構,包含系統調用匯編實現) -- arch-x86 (x86架構,包含系統調用匯編實現) -- bionic (由C實現的功能,架構無關) -- docs (文檔) -- include (頭文件) -- inet -- kernel (Linux內核中的一些頭文件) -- netbsd (?netbsd系統相關,具體作用不明) -- private (?一些私有的頭文件) -- stdio (stdio實現) -- stdlib (stdlib實現) -- string (string函數實現) -- tools (幾個工具) -- tzcode (時區相關代碼) -- unistd (unistd實現) `-- zoneinfo (時區信息) -- libdl (libdl實現,dl是動態鏈接,提供訪問動態鏈接庫的功能) -- libm (libm數學庫的實現,) -- alpha (apaha架構) -- amd64 (amd64架構) -- arm (arm架構) -- bsdsrc (?bsd的源碼) -- i386 (i386架構) -- i387 (i387架構?) -- ia64 (ia64架構) -- include (頭文件) -- man (數學函數,後綴名為.3,一些為freeBSD的庫文件) -- powerpc (powerpc架構) -- sparc64 (sparc64架構) `-- src (源代碼) -- libstdc++ (libstdc++ C++實現庫) -- include (頭文件) `-- src (源碼) -- libthread_db (多線程程序的調試器庫) `-- include (頭文件) `-- linker (動態鏈接器) `-- arch (支持arm和x86兩種架構) bootable 目錄 -- bootloader (適合各種bootloader的通用代碼) `-- legacy (估計不能直接使用,可以參考) -- arch_armv6 (V6架構,幾個簡單的匯編文件) -- arch_msm7k (高通7k處理器架構的幾個基本驅動) -- include (通用頭文件和高通7k架構頭文件) -- libboot (啟動庫,都寫得很簡單) -- libc (一些常用的c函數) -- nandwrite (nandwirte函數實現) `-- usbloader (usbloader實現) -- diskinstaller (android鏡像打包器,x86可生產iso) `-- recovery (系統恢復相關) -- edify (升級腳本使用的edify腳本語言) -- etc (init.rc恢復腳本) -- minui (一個簡單的UI) -- minzip (一個簡單的壓縮工具) -- mttils (mtd工具) -- res (資源) `-- images (一些圖片) -- tools (工具) `-- ota (OTA Over The Air Updates升級工具) `-- updater (升級器) build目錄 -- core (核心編譯規則) -- history (歷史記錄) -- libs `-- host (主機端庫,有android 「cp」功能替換) -- target (目標機編譯對象) -- board (開發平台) -- emulator (模擬器) -- generic (通用) -- idea6410 (自己添加的) `-- sim (最簡單) `-- proct (開發平台對應的編譯規則) `-- security (密鑰相關) `-- tools (編譯中主機使用的工具及腳本) -- acp (Android "acp" Command) -- apicheck (api檢查工具) -- applypatch (補丁工具) -- apriori (預鏈接工具) -- atree (tree工具) -- bin2asm (bin轉換為asm工具) -- check_prereq (檢查編譯時間戳工具) -- dexpreopt (模擬器相關工具,具體功能不明) -- droiddoc (?作用不明,java語言,網上有人說和JDK5有關) -- fs_config (This program takes a list of files and directories) -- fs_get_stats (獲取文件系統狀態) -- iself (判斷是否ELF格式) -- isprelinked (判斷是否prelinked) -- kcm (按鍵相關) -- lsd (List symbol dependencies) -- releasetools (生成鏡像的工具及腳本) -- rgb2565 (rgb轉換為565) -- signapk (apk簽名工具) -- soslim (strip工具) `-- zipalign (zip archive alignment tool) dalvik目錄 dalvik虛擬機 . -- dalvikvm (main.c的目錄) -- dexmp (dex反匯編) -- dexlist (List all methods in all concrete classes in a DEX file.) -- dexopt (預驗證與優化) -- docs (文檔) -- dvz (和zygote相關的一個命令) -- dx (dx工具,將多個java轉換為dex) -- hit (?java語言寫成) -- libcore (核心庫) -- libcore-disabled (?禁用的庫) -- libdex (dex的庫) -- libnativehelper (Support functions for Android's class libraries) -- tests (測試代碼) -- tools (工具) `-- vm (虛擬機實現) development 目錄 (開發者需要的一些常式及工具) -- apps (一些核心應用程序) -- BluetoothDebug (藍牙調試程序) -- CustomLocale (自定義區域設置) -- Development (開發) -- Fallback (和語言相關的一個程序) -- FontLab (字型檔) -- GestureBuilder (手勢動作) -- NinePatchLab (?) -- OBJViewer (OBJ查看器) -- SdkSetup (SDK安裝器) -- SpareParts (高級設置) -- Term (遠程登錄) `-- launchperf (?) -- build (編譯腳本模板) -- cmds (有個monkey工具) -- data (配置數據) -- docs (文檔) -- host (主機端USB驅動等) -- ide (集成開發環境) -- ndk (本地開發套件——c語言開發套件) -- pdk (Plug Development Kit) -- samples (演示程序) -- AliasActivity () -- ApiDemos (API演示程序) -- BluetoothChat (藍牙聊天) -- BrowserPlugin (瀏覽器插件) -- BusinessCard (商業卡) -- Compass (指南針) -- ContactManager (聯系人管理器) -- CubeLiveWall** (動態壁紙的一個簡單常式) -- FixedGridLayout (像是布局) -- GlobalTime (全球時間) -- HelloActivity (Hello) -- Home (Home) -- JetBoy (jetBoy游戲) -- LunarLander (貌似又是一個游戲) -- MailSync (郵件同步) -- MultiResolution (多解析度) -- MySampleRss (RSS) -- NotePad (記事本) -- RSSReader (RSS閱讀器) -- SearchableDictionary (目錄搜索) -- **JNI (JNI常式) -- SkeletonApp (空殼APP) -- Snake (snake程序) -- SoftKeyboard (軟鍵盤) -- Wiktionary (?維基) `-- Wiktionary**(?維基常式) -- scripts (腳本) -- sdk (sdk配置) -- simulator (?模擬器) -- testrunner (?測試用) `-- tools (一些工具)
7. 高通android指紋模塊怎麼編譯
fp_shutdown_active {
qcom,pins = <&gp 23>;
qcom,pin-func = <0>;
qcom,num-grp-pins = <1>;
label = "shutdown_gpio_active";
fp_shutdown_active: fp_shutdown_active {
drive-strength = <6>;
<span style="color:#ff0000;">output-high;</span>
bias-disable= <0>;
};
};
fp_shutdown_suspend {
qcom,pins = <&gp 23>;
qcom,pin-func = <0>;
qcom,num-grp-pins = <1>;
label = "shutdown_gpio_suspend";
fp_shutdown_suspend: fp_shutdown_suspend {
drive-strength = <2>;
<span style="color:#ff0000;">out
8. 高通平台android開發小結怎麼解決
1、高通平台android開發總結
1.1 搭建高通平台環境開發環境
在高通開發板上燒錄文件系統
建立高通平台開發環境
高通平台,android和 modem 編譯流程分析
高通平台 7620 啟動流程分析
qcril 流程分析,設置sim卡鎖
python scons 語法學習
Python 語言之 scons 工具流程分析:
1.2 搭建高通平台環境開發環境
高通android智能平台概述
選擇合適的源代碼以及工具
建立 Android 開發環境(部分略)
建立 modem 開發環境
1.2.1 高通android智能平台概述
高通 7230 android 智能手機解決方案的軟體包括兩個部分
1. 以linux 操作系統為基礎的 android 系統
2. 以 L4,REX為基礎的 Modem 部分
在高通7系列的架構中,一個IC內部集成有兩個ARM處理器,一個ARM9(或者arm11),專門負責處理通信協議,射頻以及GPIO等,軟體架構採用 AMSS, 另外一個是ARM11,用來處理多媒體,上層應用,以及其他的一些任務,運行的系統是 android 系統,這兩個處理器之間通過共享內存的硬體方式來進行通信。
1.2.1.1什麼是L4,REX,BREW,AMSS以及相互之間的關系
L4是一組計算機程序,是最初由Jochen Liedtke設計的微內核構架的操作系統內核,現在已經形成一個微內核家族。L4這個微內核系統由於其出色的性能和很小的體積而開始被計算機工業所認知,被移植到了許多不同的硬體構架上。高通的 L4 提供了操作系統最基本的操作,是買別人的。
早期的操作系統絕大多數是 Monolithic Kernel, 意思是整個操作系統 - 包括Scheling (調度), File system (文件系統), Networking (網路), Device driver (設備驅動程序), Memory management (存儲管理), Paging(存儲頁面管理) - 都在內核中完成.一直到現在廣泛應用的操作系統,如UNIX,Linux,和Windows還大都是monolithic kernel操作系統.但隨著操作系統變得越來越復雜(現代操作系統的內核有一兩百萬行C程序是很常見的事情),把所有這些功能都放在內核中使設計難度迅速增加.
微內核是一個與Monolithic Kernel相反的設計理念.它的目的是使內核縮到最小,把所有可能的功能模塊移出內核.理想情況下,內核中僅留下Address Space Support(地址空間支持),IPC (Inter-Process Communication,進程間通訊),和Scheling(調度),其他功能模塊做為用戶進程運行。
REX 是在 L4 之上封裝的服務,是一個搶占式,多任務的RTOS,所有的任務都以task的形式存在,REX提供包括任務創建,同步,互斥,計時器,中斷控制等功能的API,這里的task實際上就是我們的線程,每個 task對應著一個線程。REX維護一個task list(雙向鏈表),始終運行高優先順序的task。procts裡面所有的服務包括3g協議棧等都是以task的形式跑在rex之上的。
而Brew的話是運行的環境,跟Java 有點兒類似,相當於是一個虛擬機。
AMSS――高級的移動用戶軟體(Advanced Mobile Subscriber Software)技術,是一種新的軟體架構,是對原來軟體架構 DMSS 的升級。 AMSS源代碼實際上是QC BREW(Binary Runtime Environment For Wireless)平台的的底層部分,去掉了為應用程序提供介面的AEE(application execution environment)部分,高通在Dual Proc晶元上的其他平台基本上都是採用的這樣的架構。
9. 如何編譯一個精簡的Android系統
本次試驗使用的android源碼是4.2,編譯的架構是mini-mips。
一、所做的工作
1、修改build/target/proct/mini.mk,去掉一些不必要的模塊(例如Phone、DownloadManager等)
2、修改SystemServer.java,屏蔽一些service,讓系統能夠啟動起來(例如,Location Manager、Telephony Registry)
3、修改dalvik/vm/native/dalvik_system_Zygote.cpp,注釋掉因為檢查不到外部存儲而導致dalvik abort的地方 (這是googel的一個bug,在2013年1月份已解決,如果用這以後的代碼不用修改此處)
4、修改WindowManagerService.java,把發送BOOT_TIMEOUT消息的時間改為0(之前為30秒)
二、系統優化後的效果(驗證工作均在mips模擬器上進行)
1、節省運行內存,下面是全編譯與mini編譯的內存使用狀態的對比
1)full build
MemTotal: 499360 kB
MemFree: 242064 kB
2)mini build
MemTotal: 499360 kB
MemFree: 395192 kB
2、縮短開機啟動時間
在虛擬機上的啟動時間
1)full build-29秒
2)mini build-14秒
3、只啟動home程序,其餘的應用程序均被移除
三、保留android的開發環境
1、adb,ddms,apkinstall等,都能正常工作
2、在eclipse中編寫的android應用程序能夠運行在該mini-android之上
四、開機自動啟動指定應用程序
本次測試使用Gallery.apk應用程序,修改其源碼後可以實現隨系統的啟動而自動啟動的功能。
10. ubuntu12.04編譯android源碼要多久
這個關鍵是要看你的電腦配置情況,以及代碼的附加情況,有的平台軟體會附加很多東西上去,編譯就比較慢了。
我們這邊使用的是四核八線程的電腦,32GB內存,
原生代碼 4.4 八線程編譯40分鍾左右,5.1,一個半小時左右,6.0的大約一個小時,以上是原生代碼編譯模擬器的時間。
高通代碼6.0編譯一般需要兩個小時左右,mtk的也是兩個小時左右,