1. 程式人生 > >Android原始碼編譯——RK3128開發板基於Android5.1原始碼編譯小記

Android原始碼編譯——RK3128開發板基於Android5.1原始碼編譯小記

前言:
本次小記主要分為三段。前兩段相當於對原始碼編譯的一個回顧。本次小記主要第三段,記下了編譯中出現的幾個問題,以便日後需要。
1、編譯時編譯執行緒過多。導致編譯失敗。
2、編譯image沒問題打包OTA時出現錯誤。

一、編譯環境
1、硬體環境:(以下為官方建議)

編譯 Android 對機器的配置要求較高:
64 位 CPU
16GB 實體記憶體+交換記憶體

(我是用的是2.0GHz四核處理器J1900。配置相對低很多,所以編譯花了20幾個小時。 )
2、軟體環境:官方需要OpenJDK 7和推薦 Ubuntu 14.04
(Android5.1需要使用OpenJDK 7的版本。而我還是使用的jdk1.7也編譯成功了。至於官方為啥不用jdk而選用OpenJDK 7好像是Sun和Google的那場Android官司導致。)
二、系統編譯
編譯方法和編譯Android4.4沒啥區別。具體可以參見我的另一篇博文:

Android4.4編譯環境的搭建和編譯
本次編譯和之前唯一不同的是在編譯完後打包了可以在硬體上刷機或升級的update.zip包。
1、編譯OAT升級包
編譯方法:
在原始碼編譯完後(也就是執行make等待數小時後)在執行

make otapackage

即可在out/target/product/你使用lunch選擇的產品/目錄下生成zip包。

三:問題整理
1、編譯時在make 後邊加了-j4。雖然主頻低一點,但起碼也是也是個四核。本以為開四個執行緒編譯應該沒問題。沒想到早上起來檢視掛機結果時沒編譯通過。於是還是老老實實的選擇了一個執行緒編譯。有錢了直接整個志強的U來編譯算了。
2、原始碼編譯完成了,也生成了img映象檔案。可就是在打包OTA時發生錯誤。
這裡寫圖片描述


每次都是在快輸出zip時出錯了。而且每次都是同一處。在網上查資料幾乎所有的回答都出自同一處。也不知誰是原創。都說是RK的原始碼中有一處try縮排有問題。跟著資料上對著看也沒發現問題。
後來嘗試資料中的一個方法發現確實有一個檔案沒有編譯到環境中。

“發現是drmsigntool沒有編譯進去,於是cd build/tools/drmsigntool/,然後mm -B,再回到原始碼根目錄下make otapackage,然後看到如下錯誤:”

確實是drmsigntool這個DRM簽名工具沒有初始化到環境裡邊。
按資料上說的進入目錄編譯後在執行

make otapackage


就生成了響應的OTA包。
都說RK的原始碼有很多問題。由於技術有限。也不知道是不是RK的問題。本次編譯完了改天找個開發板升級進去看看能否正常執行。有能力的話再加以學習學習RK3128這個解決方案。

至此本次學習筆記已經整理完畢。希望在與大家分享的同時讓自己也可以加深記憶。和大家一起學習一起進步。

掃描下方二維碼即可關注我的公眾號,想要實時接收博文推送,拿出手機掃碼關注公眾號吧~

公眾號二維碼

會不定期的更新相關內容喲 ^_^