當前位置:首頁 » 編程軟體 » 編譯安卓內核工具

編譯安卓內核工具

發布時間: 2023-01-22 13:06:00

⑴ 在Windows下CodeBlocks能編譯Android下的.so和.a嗎

可以使用的。解析:首先Android就是linux內核。android應用程序開發環境:包括eclipse、java、androidsdk、adt等。安裝android-ndk開發包,這個開發包可以在googleandroid官網下載:通過這個開發包的工具才能將androidjni的C/C++的代碼編譯成庫android的NDK開發需要在linux下進行:因為需要把C/C++編寫的代碼生成能在arm上運行的.so文件,這就需要用到交叉編譯環境,而交叉編譯需要在linux系統下才能完成。備註:NDK編譯步驟:1.選擇ndk自帶的例子hello-jni,位於E:\android-ndk-r5\samples\hello-jni(根據具體的安裝位置而定)。2.運行cygwin,輸入命令cd/cygdrive/e/android-ndk-r5/samples/hello-jni,進入到E:\android-ndk-r5\samples\hello-jni目錄。3.輸入$NDK/ndk-build,執行成功後,它會自動生成一個libs目錄,把編譯生成的.so文件放在裡面。($NDK是調用我們之前配置好的環境變數,ndk-build是調用ndk的編譯程序)4.此時去hello-jni的libs目錄下看有沒有生成的.so文件,如果有,ndk就運行正常了。

⑵ 如何編譯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分鍾不等。

⑶ 如何自己編譯android系統並製作刷機包

android系統製作刷機包方法:

【一】:下載安裝最新版ROM助手(市場中有很多類似的製作工具,關鍵要求操作簡單,功能強大),安裝程序非常簡單,只需在一隻蘑菇首頁內直接下載,並解壓到自己的電腦安裝即可。

【二】:如果已經下載了與機型匹配的ROM刷機包,那麼現在可以直接打開ROM助手了,接下來繪制專屬個性的完美刷機包就從這里開始吧。

【三】:打開軟體後,它會自動升級到最新版本,另外打開主界面後,會直觀簡明的顯示出它的所有功能,例如:性能優化,系統精簡,預裝APK,簽名打包等等。提醒大家,不要貪心哦,要根據自己的需求點擊需要操作的功能,如系統精簡,然後進入操作界面,所有功能全部修改一遍也無妨,反正都是一鍵操作,省時省力。

⑷ 怎麼修改Android 的Linux內核

Android 產品中,內核格式是Linux標準的zImage,根文件系統採用ramdisk格式。這兩者在Android下是直接合並在一起取名為boot.img,會放在一個獨立分區當中。這個分區格式是Android自行制定的格式。

Android開發時,最標準的做法是重新編譯於內核和根文件系統,然後調用Android給的命令行文件mkbootimg(out/host/linux-x86/bin/)來打包。

在製作手機ROM時,有時會單獨編譯內核或抽出根文件進行修改內容,比如我只編譯內核,其餘的地方不變。這樣重新安裝巨大的Android開發環境實在不劃算。因此很多boot.img解包工具被人開發出來,這一些工具都是把內核和根文件系統從一個現成的boot.img抽取出來,修發後再次打包還原。

一.常見的解包工具

因為boot.img的格式比較簡單,它主要分為三大塊(有的可能有四塊)

因此很多人開發分析工具,有是linux shell腳本,比如repack-zImage,也有人採用perl,還有C語言編寫的 unbootimg,

我使用的是在源碼位置system/core/mkbootimg/ 下的 mkbootimg。為了簡化,藍點工坊把與mkbootimg中打包工具和解包工具以及所包含的libmincrpty庫抽出來,並且重寫一個Makefile,作為開源項目。
使用者只需要在linux(需安裝gcc,make,一般是標配)或windows(需要安裝mingw)的命令行執行make,即可產生可執行文件mkbootimg ,unpackbootimg。

二.解/打包工具使用

解包工具:unpackbootimg

常見格式
unpackbootimg -i .\tmp\boot.img -o .\out

這一句命令行表示把boot.img解包,所有文件輸出到out目錄下

它會解壓出如下文件:
boot.img-zImage (內核文件)
boot.img-ramdisk.gz (根文件系統打包文件)
boot.img-cmdline (mkbootimg cmdline參數)
boot.img-pagesize (mkbootimg pagesize參數)

boot.img-base (mkbootimg base參數)

打包工具:mkbootimg (Android自帶)

常見的命令格式:
./mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel zImage --ramdisk boot/boot.img-ramdisk.gz -o boot.img --base 02e00000
這句含義是把內核文件zImage和boot目錄下的根文件壓縮包 boot.img-ramdisk.gz打包成boot.img.
其中cmdline和base的值均來源於unpackbootimg的結果

⑸ 如何預編譯 Android 模擬器專用內核

Android源碼編譯之後生成的是ramdisk.img、system.img和userdata.img。而內核源碼編譯完成之後生成的是ZImage。在一般情況下Android源碼是不帶有內核源碼的,但是帶有一個鏡像,這樣在編譯完Android源碼之後就可以模擬器啟動了,如果要更換系統的內核,此時將高版本的內核源碼進行編譯生成ZImage然後替換Android系統的的鏡像。這樣使用模擬器啟動之後就可以查看內核是否已經被刷新。

⑹ 如何在32位ubuntu11.10 下編譯android 4.0.1源碼和goldfish內核

一準備工作

1安裝javasdk6
(1)從jdk官方網站http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.html下載jdk-6u29-linux-i586.bin文件。
(2)執行jdk安裝文件

[html] view plain
$chmod a+x jdk-6u29-linux-i586.bin
$jdk-6u29-linux-i586.bin

(3)配置jdk環境變數

[html] view plain
$sudo vim /etc/profile
[html] view plain
#JAVAEVIRENMENT
exportJAVA_HOME=/usr/lib/java/jdk1.6.0_29
exportJRE_HOME=$JAVA_HOME/jre
exportCLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
exportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

保存後退出編輯,並重啟系統。
2安裝依賴包

[html] view plain
$sudo apt-get install git-core gnupg flex bison gperf build-essential\
zipcurlzlib1g-devlibc6-devlib32ncurses5-devia32-libs\
x11proto-core-devlibx11-devlib32readline5-devlib32z-dev\
libgl1-mesa-devg++-multilibmingw32tofrodospython-markdown\
libxml2-utils

3用repo工具下載源碼
(1)初始化repo

[html] view plain
$cd ~
$mkdir bin
$curlhttps://dl-ssl.google.com/dl/googlesource/git-repo/repo>~/bin/repo
$chmod a+x ~/bin/repo
$exportPATH=$PATH:~/bin(導出環境變數)

(2)下載android最新源碼

[html] view plain
$mkdir android
$cd android
$ repo init -u https://android.googlesource.com/platform/manifest -bandroid-4.0.1_r1
...(輸入用戶名和郵箱名)
$repo sync -j5
...(此處用5個線程開始下載源碼,下載過程及其漫長,需要耐心等待)

二 編譯源碼
1開始編譯

[html] view plain
$source build/envsetup.sh
includingdevice/samsung/maguro/vendorsetup.sh

includingdevice/samsung/tuna/vendorsetup.sh

includingdevice/ti/panda/vendorsetup.sh

includingsdk/bash_completion/adb.bash

$make-j4(此處用4個線程編譯)

編譯完成後,會看到類似的輸出:

[html] view plain
Targetramdisk:out/target/proct/generic/ramdisk.img
Targetuserdatafsimage:out/target/proct/generic/userdata.img
Installedfilelist:out/target/proct/generic/installed-files.txt

2編譯遇到的問題
編譯錯誤:

[html] view plain
<命令行>:0:0:錯誤:「_FORTIFY_SOURCE」重定義[-Werror]

<built-in>:0:0:附註: 這是先前定義的位置

cc1plus:所有的警告都被當作是錯誤

make:*** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o]錯誤 1

原因:
因機器上的gcc版本過高,需替換成4.4.6重新進行編譯。
解決方法:
1)安裝4.4版本的gcc和g++

[html] view plain
$ sudo apt-get install gcc-4.4
$ sudo apt-get install g++-4.4

2)設置gcc版本,使gcc鏈接到gcc-4.4

[html] view plain
$ ls -l /usr/bin/gcc*

lrwxrwxrwx 1 root root 7 2011-11-01 23:56 /usr/bin/gcc -> gcc-4.6

-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 /usr/bin/gcc-4.4

-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 /usr/bin/gcc-4.6

$ cd /usr/bin
$ sudo mv gcc gcc.bak
$ sudo ln -s gcc-4.4 gcc

3)設置g++版本,使g++鏈接到g++-4.4

[html] view plain
$ sudo mv g++ g++.bak
$ sudo ln -s g++-4.4 g++

4)設置完畢後,重新進行編譯即可

3從模擬器啟動編譯後的鏡像文件
1)設置環境變數:

[html] view plain
export PATH=~/android/out/host/linux-x86/bin:$PATH

export ANDROID_PRODUCT_OUT=~/android/out/target/proct/generic

其中linux-x86/bin存放模擬器emulator工具,proct/generic存在編譯後的鏡像文件。

2)啟動模擬器

[html] view plain
$emulator

emulator:WARNING: system partition size adjusted to match image file (162 MB >66 MB)

啟動後的截圖:

三 編譯androidgoldfish內核
1)進入android4.0.1源碼目錄,下載goldfish內核源碼

[html] view plain
$ mkdir kernel
$ cd kernel
$ git clone http://android.googlesource.com/kernel/goldfish.git
$ cd goldfish
$ git branch -a
* (no branch)

master

remotes/origin/HEAD -> origin/master

remotes/origin/android-goldfish-2.6.29

remotes/origin/master

$ git checkout remotes/origin/android-goldfish-2.6.29

2)修改Makefile

[html] view plain
goldfish$ gedit Makefile

修改

[html] view plain
ARCH ?=$(SUBARCH)
CROSS_COMPILE ?=



[html] view plain
ARCH ?=arm
CROSS_COMPILE ?=arm-eabi-

3)導出交叉編譯器目錄為環境變數
$ export PATH=$PATH:~/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin

4)編譯內核

[html] view plain
goldfish$ make goldfish_armv7_defconfig

goldfish$ make

編譯完成後,可看到類似如下的輸出:

[html] view plain
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready

5)從模擬器中啟動內核鏡像

[html] view plain
$emulator -kernel ~/android/kernel/goldfish/arch/arm/boot/zImage &

啟動模擬器後,可從Settings->System->AboutPhone中查看內核版本信息。

⑺ 基於Android 12 的 LineageOS 19 發布了

自定義 ROM 是一個垂死的品種,但不可否認 LineageOS 的受歡迎程度——它仍然是您可以在設備上試用的最好的第三方 ROM 之一。在2 月淘汰基於 Android 10 的 LineageOS 17.1版本並於 4 月向近 60 台設備發布LineageOS 18.1 穩定版之後,該團隊正式宣布了基於Android 12的 LineageOS 19。

感謝基於 Android 11 的 LineageOS 18.1 的所有辛勤工作,開發人員能夠更有效地將其功能移植到 Android 12。ROM 的一些受歡迎的附加功能,例如內置防火牆、受限網路模式和應用程序隔離,已經是最初的 Android 12 構建的一部分。

該團隊還將命名方案更改為「LineageOS 19」而不是 19.0 或 19.1,這是為了匹配 AOSP 約定並且由於 Android 轉向季度維護發布模型而進行的切換。

LineageOS 19 中新功能的更新日誌如下:

2021 年 3 月至 2022 年 4 月的安全補丁已合並到 LineageOS 16.0 至 19。

目前有 19 個構建基於 android-12.1.0_r4 標簽,即 Pixel 6 系列標簽。WebView 已更新為 Chromium 100.0.4896.58。

我們完全重做了 Android 12 中引入的音量面板,而是將其改為側邊彈出式擴展面板。

我們的 AOSP Gallery 應用程序分支已經看到了大量的修復和改進。

我們的更新程序應用程序已經看到了大量的錯誤修復和改進。

我們的網路瀏覽器 Jelly 已經看到了許多錯誤修復和改進!

我們已經為我們不久前集成的 FOSS Etar日歷應用程序 的上游貢獻了許多更改和改進!

我們為Seedvault備份應用程序 的上游貢獻了許多更改和改進。

我們的 Recorder 應用程序已經看到了許多錯誤修復、改進和添加的功能。

Android TV 版本現在附帶一個無廣告的 Android TV 啟動器,這與谷歌的廣告啟動器不同。

Android TV 版本現在附帶一個鍵處理程序,使我們能夠支持各種藍牙和 IR 遙控器上的自定義鍵。

我們的adb_root服務不再與構建類型屬性綁定。

我們的提取實用程序現在支持從大多數類型的工廠圖像/打包的 OTA 圖像中提取,大大簡化了設備啟動和 blob 提取。

我們的 SDK 添加了對高觸摸輪詢率的支持,允許在支持的設備上啟用它。

AOSP Clang 工具鏈現在是我們用來編譯內核的默認工具鏈。

高通的 Snapdragon 相機已被放棄,之前使用它的設備現在將使用 Camera2。

現在默認啟用暗模式。

我們有一個全新的設置向導,帶有全新的 Android 12 樣式圖標、動畫和大量新的可配置頁面!

我們為幾乎所有應用程序(甚至系統應用程序)提供了一套全新的圖標!

(18.1也是)我們有一個全新的默認壁紙,還有一整套壁紙可供選擇,看看吧!這些壁紙在設計時考慮了 Android 12 的 Monet 主題功能,所以快去試試吧,看看你最喜歡哪種強調色!

(18.1 也是)Wi-Fi 顯示適用於所有選擇加入的設備,通過 Qualcomm 專有介面或新恢復的舊版 Miracast 介面!

(18.1 也是)我們現在支持針對不同類型的充電(有線或無線)自定義充電聲音。

這里的壞消息是,由於 AOSP 中網路工作方式的變化,LineageOS 19 放棄了對一些舊設備的支持。AOSP 沒有使用 Linux 的 iptables,而是切換到了eBPF,這應該更高效,但只支持使用 Linux 內核 4.9 或更高版本的設備。雖然可以將 BPF 向後移植到較舊的 Linux 內核版本,但所有當前的實現都是 hacky 並且不符合 LineageOS 團隊所遵循的標准。對於許多舊手機來說,這可能是路的盡頭,至少在官方支持方面是這樣。

LineageOS 19 的初始版本可用於 Google Pixel 系列、華碩 ZenFone 5z 和 8、Moto G7 系列和 Moto One Power/Action/Vision、OnePlus 6 /6T,以及來自三星、聯想和索尼。在接下來的幾天和幾周內,受支持設備的名單將繼續增長。從此處獲取適用於您設備的 LineageOS 19 版本。

如果您已經在運行 LineagOS 19 的非官方版本,則需要在升級到官方版本時擦除您的設備。如果您已經在運行官方但較舊版本的 ROM,則不需要徹底擦除,除非您設備的 Wiki 中明確說明。

⑻ 求安卓內核編譯詳細教程。附帶開發工具。

自己上Google Android頁面看

⑼ 請問如何編譯Android 內核

攜紙滴墨,情濃如醇酒,韻味在文筆中流淌,雖清淺,但真誠,情懷溫婉,寫就一生孜孜不倦的愛戀,一切,源於文字。我手寫我心,願有人懂。做一個墨香女子,因文字而清新,因世事而掛心,緩行紅塵陌土,為自己斟一闕淡然的詞韻,繚繞晴空,悠揚至久遠。

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:710
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:972
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:681
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:833
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:741
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1081
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:312
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:192
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:879
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:837