編譯環境如下圖所示
git checkout remotes/origin/android-msm-hemmerhead-3.4 //根據實際的項行進設定
2.設定環境
1 終端進入原android原始碼目錄設定編譯環境:
cd android-src/android4.4
source build/envsetup.sh
lunch 選擇12,編譯hemmerhead
export android_src_path=/home/(你的原始碼的位置)/android4.4
export path=$android_src_path/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin:$path
export arch=arm
export subarch=arm
export cross_compile=arm-eabi-
3 切換到kernel核心原始碼所在目錄,進行編譯:
cd ../kernel-hammerhead/msm
make hammerhead_defconfig
make
編譯完成後bin檔案在 arch/arm/boot/zimage-dtb目錄下
重新生成boot.img
export target_prebuilt_kernel=$your_kernel_path/arch/arm/boot/zimage-dtb
編譯成功後可以看到下面的輸出:
objcopy arch/arm/boot/zimage
kernel: arch/arm/boot/zimage is ready
cat arch/arm/boot/zimage-dtb
kernel: arch/arm/boot/zimage-dtb is ready
編譯完核心後,核心生成的路徑為:kernel/msm/arch/arm/boot目錄下的zimage-dtb檔案(nexus 5是這個檔案,nexus 4是zimage檔案,請注意別弄錯了
),把該檔案複製到原始碼下的device/lge/hammerhead-kernel夾下(注意:nexus 4則為mako-kernel資料夾),覆蓋掉同名檔案。
編譯核心:make bootimage
4.將生成的核心燒寫至手機
adb reboot bootloader
fastboot flash boot boot.img
5.碰到的一些問題
can't use 'defined(@array)' (maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
解決方法:把
kernel/timeconst.pl 檔案中 373行的
if (!defined(@val))
改為if (!@val)
後,編譯成功。
Android 4 4 原始碼編譯記錄
編譯安卓原始碼遇到很多坑,這裡記錄一下,網上大多都是零零散散,大神請繞過此部落格 1.安裝jdk,這邊注意4.4的原始碼只能是jdk 1.6,而且不能是openjdk,怎麼配置網上有,這裡不重複了 2.安裝必須的編譯環境,整理了下,命令為 sudo apt get install flex biso...
android 4 4 讀寫問題
android 4.4 kitkat之後的版本不再支援使用者對外置sdcard secondary storage 的寫入等操作,自4.4開始,google引入saf框架 storage access framework 總的說是對許可權有了更加多的控制 但是可以遵循google要求,調整應用外卡的...
android 4 4刪除簡訊
public void deletesms null,null,null if null c c.movetofirst while c.movetonext catch exception e 但通過列印可以看到上述 的result是等於0的,即沒有刪除掉簡訊。檢查使用者設定許可權的函式是 che...