單機搭建Android開發環境(四)

来源:http://www.cnblogs.com/we-hjb/archive/2016/03/15/5281500.html
-Advertisement-
Play Games

單機搭建Android開發環境四,介紹了基於64位Ubuntu 12.04 Server版安裝git、repo、編譯環境,從內部伺服器下載Android5.1代碼並編譯測試。


單機搭建安卓開發環境,前三篇主要是磨刀霍霍,這一篇將重點介紹JDK、REPO、GIT及編譯工具的安裝,下載項目代碼並編譯。特別說明,以下操作基於64位12.04 Server版Ubuntu。若採用其他版本系統,請參考Google官方操作步驟。訪問不了的同學,請找大師(藍燈),他能助你一臂之力。

1)安裝OpenJDK 7

  sudo apt-get install openjdk-7-jdk --force-yes –y

查看java的版本

  java –version

  java version "1.7.0_95"

  OpenJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-0ubuntu0.12.04.1)

  OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)

設置環境變數

  vim ~/.profile

在末尾添加如下配置,保存並退出

  export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

  export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

  export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

終端輸入如下命令使配置生效

  source ~/.profile

2)安裝google推薦的編譯工具

  sudo apt-get install gnupg flex bison gperf build-essential --force-yes -y

  sudo apt-get install zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev --force-yes -y

  sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 --force-yes -y

  sudo apt-get install libgl1-mesa-dev g++-multilib mingw32 tofrodos --force-yes -y

  sudo apt-get install python-markdown libxml2-utils xsltproc zlib1g-dev:i386 --force-yes -y

  sudo apt-get install libgl1-mesa-dri:i386 dpkg-dev --force-yes –y

3)安裝repo

下載repo V1.22國內定製版,已處理原版在國內使用時出現如下錯誤提示:

  fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle

  fatal: error [Errno 101] Network is unreachable

將repo拷貝到/bin目錄下,並修改其屬性

  sudo cp /home/repo /bin/

  sudo chmod a+x /bin/repo

4)安裝git

  sudo apt-get install git --force-yes –y

配置用戶郵箱及用戶名

  git config --global user.email "[email protected]"

  git config --global user.name "hjb"

5)創建密鑰,並添加到伺服器端

  ssh-keygen -t rsa -C [email protected]

拷貝id_rsa.pub並重命名,然後複製到伺服器

  cp /home/hjb/.ssh/id_rsa.pub /home/hjb/id_rsa.pub.hjb113

在git伺服器端登錄bnv用戶,並執行如下命令,

  cat /home/hjbang/id_rsa.pub.hjb113 >> /home/bnv/.ssh/authorized_keys

6)本地創建project目錄mt8735,準備下載代碼

  cd ~

  mkdir mt8735

  cd mt8735

7)同步代碼

  repo init -u [email protected]:/home/git/MTK/lp5.1-mt8735m-mirror/bonovo/platform/manifests.git -b default

  repo sync

  repo forall -c git checkout lp5.1-mt6735m

  repo forall -c git checkout mt8735-avn401

  repo forall -c git pull

8)安裝ccache,並配置ccache

  sudo apt-get install -y ccache

配置.bashrc

  sudo vim ~/.bashrc

末尾添加

  export USE_CCACHE=1

使配置及時生效

  source ~/.bashrc

查看設置狀態:

  echo $USE_CCACHE

9)編譯project

  cd ~/mt8735

  prebuilts/misc/linux-x86/ccache/ccache -M 50G

  . build/envsetup.sh

  launch 25

  make update-api

  make update-api,大概需要花18分鐘,詳細信息如下,

  Docs droiddoc: out/target/common/docs/doc-comment-check

  DroidDoc took 513 sec. to write docs to out/target/common/docs/doc-comment-check

  Copying current.txt

  Copying removed.txt

  Docs droiddoc: out/target/common/docs/system-api-stubs

  DroidDoc took 13 sec. to write docs to out/target/common/docs/system-api-stubs

  Copying system-current.txt

  Copying system-removed.txt

 #### make completed successfully (17:54 (mm:ss)) ####
View Code

編譯Android5.1系統

  make –j24

編譯過程非常漫長,可以通過如下命令查看cahe使用情況,

  watch -n1 -d prebuilts/misc/linux-x86/ccache/ccache -s

  cache directory /home/hjb/.ccache

  cache hit (direct) 0

  cache hit (preprocessed) 0

  cache miss 43927

  called for link 1209

  preprocessor error 732

  unsupported source language 968

  unsupported compiler option 2

  files in cache 138583

  cache size 18.0 Gbytes

  max cache size 50.0 Gbytes

可以看到cache大概有18GB,故使用ccache,第一次編譯的時間會比不用cache更長,但之後編譯速度將會有很大提升。

經過4個半小時,第一次編譯終於成功了,詳細信息如下,

Creating filesystem with parameters:

Size: 1610612736

Block size: 4096

Blocks per group: 32768

Inodes per group: 8192

Inode size: 256

Journal blocks: 6144

Label:

Blocks: 393216

Block groups: 12

Reserved block group size: 95

Created filesystem with 2436/98304 inodes and 221139/393216 blocks

Install system fs image: out/target/product/mt8735_tb_l1/system.img

out/target/product/mt8735_tb_l1/system.img+out/target/product/mt8735_tb_l1/obj/PACKAGING/recovery_patch_intermediates/recovery-from-boot.p maxsize=1644331392 blocksize=4224 total=881392372 reserve=16612992

 

#### make completed successfully (04:25:03 (hh:mm:ss)) ####
View Code

修改內核模塊代碼,重新編譯系統鏡像大概需要13分鐘,詳細信息如下,

Creating filesystem with parameters:

Size: 1610612736

Block size: 4096

Blocks per group: 32768

Inodes per group: 8192

Inode size: 256

Journal blocks: 6144

Label:

Blocks: 393216

Block groups: 12

Reserved block group size: 95

Created filesystem with 2436/98304 inodes and 221139/393216 blocks

Install system fs image: out/target/product/mt8735_tb_l1/system.img

out/target/product/mt8735_tb_l1/system.img+out/target/product/mt8735_tb_l1/obj/PACKAGING/recovery_patch_intermediates/recovery-from-boot.p maxsize=1644331392 blocksize=4224 total=881392372 reserve=16612992

 

#### make completed successfully (13:04 (mm:ss)) ####
View Code

雖然在SSD上編譯,這個時間會縮短到5分鐘左右,但還是比較長。所以在調試內核驅動模塊時,最好使用動態載入模塊的方式,以提高工作效率。

至此,Android系統編譯的環境基本搭建完成,後一篇將介紹如何搭建Android應用開發的環境。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 也可以基於這一思路測試某個值是不是原生函數或正則表達式: 方法2、在聲明函數時指定適當的函數,這樣第一次調用函數不損失性能,在代碼首次載入時會損失性能 按下按鈕實際顯示的是undefined,並不會顯示Event handled。問題在於沒有保存handler.handleClick的環境,所以th
  • CSS: HTML: JS:
  • 點擊按鈕,自動生成100個li,紅、黃、藍、綠四種顏色的順序顯示出現在頁面中 CSS: HTML: JS:
  • 一,效果圖。 二,工程圖。 三,代碼。 RootViewController.h RootViewController.m
  • 當內容及分類較多時,往往採用頂部標簽式導航欄,例如網易新聞客戶端的頂部分類導航,最近剛好有這樣的應用場景,參考網路上一些demo,實現了這種導航效果,記錄一些要點。 效果圖(由於視頻轉GIF掉幀,滑動和下拉動畫顯得比較生硬,剛發現quickTime可以直接錄製手機視頻,推薦一下,很方便) 其實就是在
  • Android應用檢查版本更新後,在通知欄下載,更新下載進度,下載完成自動安裝,效果圖如下: AndroidManifest文件中的versionCode用來標識版本,在伺服器放一個新版本的apk,versioncode大於當前版本,下麵代碼用來獲取versioncode的值 用當前versionc
  • 有時候我們在頁面跳轉的時候回傳遞相應的參數,如,你想把在第一個頁面的文本框里的內容顯示在第二個文本框中,或者你又想把第二個文本框中的內容改變之後到第一個頁面的文本框中,所有,這個時候我們就要用到頁面跳轉傳值 屬性傳值是正向傳值,只可以從前面一個頁面傳遞到第二個頁面,不可以從第二個頁面傳遞到第一個頁面
  • 在一些場景中,需要限制用戶的輸入字數,例如在textField里進行控制(textView也類似,崩潰原因也相同),如圖所示 系統會監聽文本輸入,需要註意的第一點是輸入法處於聯想輸入還未確定提交的時候,對於第三方輸入法例如搜狗,聯想狀態下的輸入,是監聽不到,除非點擊確定輸入到textField,才會
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...