1. 程式人生 > >android5.0 模組編譯--art的模組編譯小發現

android5.0 模組編譯--art的模組編譯小發現

講道理,編譯好安卓系統以後,進行模組修改,再重新mmm x模組 因該是一件特別快速的事情.

問題:

在編譯android 5.0的art模組時發現存在兩個問題:

1,無法進行單獨的模組編譯,且提示缺少各種各樣的庫.

2,能成功編譯後,編譯速度及其緩慢.

調查:

1,根據錯誤的資訊可以發現都是形如 libgtest_host_intermediates 類似的資料夾中缺少庫檔案,和export_includes等檔案.

2,編譯慢,肯定是編譯的東西多了,既然是編譯上的問題,直接檢視art目錄下的android.mk檔案,有眾多test有關的語句,以及test相關的mk檔案

include $(art_path)/build/Android.common_test.mk
include $(art_path)/build/Android.gtest.mk
include $(art_path)/test/Android.run-test.mk

對比,android5.x和android6.x版本的 art/Android.mk檔案

可以發現
# test rules

# host test rules

# target test rules

等test相關的編譯語句,

在仔細看android6.x中的Android.mk檔案發現多了幾行程式碼

# Don't bother with tests unless there is a test-art*, build-art*, or related target.
art_test_bother := false
ifneq (,$(filter %tests test-art% valgrind-test-art% build-art%,$(MAKECMDGOALS)))
  art_test_bother := true
endif

ifeq ($(art_test_bother),true)

...............

...............

endif  # art_test_bother

因此,我們可以發現,test部分的編譯是可以取消,關閉的

猜測:

1,既然缺少檔案,肯定是相關部分沒有,那麼可能是 第一次make時,沒有去編譯相關的和test有關的模組,這些模組最可能存在的就是external目錄下了

2,編譯慢,就是多編譯了test有關的部分內容

解決:

1,根據提示查詢external目錄 libcore目錄下的相關檔案,然後先編譯 這些test用到的相關模組,當相關模組都編譯好後,就可以編譯art模組了.

2,直接去掉

# test rules

# host test rules

# target test rules

這三塊內容,然後編譯即可.

相關推薦

android5.0 模組編譯art模組編譯發現

講道理,編譯好安卓系統以後,進行模組修改,再重新mmm x模組 因該是一件特別快速的事情. 問題: 在編譯android 5.0的art模組時發現存在兩個問題: 1,無法進行單獨的模組編譯,且提示缺

python模組fileinput

轉自:http://python.01314.cn/201506148.html fileinput資料夾下的文字檔案,將每一行的長度打印出來 import fileinput from glob import glob for line in file

android5.0設定模組音量調節流程

最近剛好修改到相關方面的BUG,在這裡整理總結一下。 設定中音量相關的Fragment調整到了NotificationSettings.java中。 我們可以在R.xml.notification_settings中看到如下 <!

python從零開始學習(三)os模組

學習python的話,os模式必須是第一個學習的模組,我學習python主要是用途是寫一些小的指令碼,所以對語法上面的要求不是很高。有些基礎就好了,注重實用性。基礎庫的學習是實用python的第一個目標。 Python os模組包含普遍的作業系統功能。如果你希望你的程式能夠與平臺無關的話,這個模組是尤為重要的

Android5.0 OTG模組傳輸速度-bulkTransfer

這個函式還是比較簡單的,沒有太多層級: 1.UsbDeviceConnection.java (\frameworks\base\core\java\android\hardware\usb)  /** * Performs a bulk tran

從零寫分散式RPC框架 系列 1.0 (2)RPC-Common模組設計實現

RPC-Common模組提供RPC-Server和RPC-Client的通用物件,封裝統一規則,使RPC Server和RPC Client 可以基於同一協議通訊。主要包含底層通訊的Netty所需的編碼解碼器(RpcEncoder,RpcDecoder),實現自定義協議的傳輸物件(Rpc

從零寫分散式RPC框架 系列 1.0 (4)RPC-Client模組設計實現

RPC-Client模組負責建立 動態代理物件 供 服務消費者 使用,而動態代理物件的方法執行則是通過RPC呼叫RPC-Server的服務實現。即RPC-Client遮蔽了底層的通訊過程,使得服務消費者可以基於介面透明使用服務提供者的服務。 系列文章: 從零寫分散式RPC框架 系

從零寫分散式RPC框架 系列 1.0 (3)RPC-Server模組設計實現

RPC-Server模組負責(1)將@RpcService註解標記的服務和自身資訊註冊到ZK叢集,(2)對外提供RPC服務實現,處理來自RPC-Client的請求。該模組整體的核心類為 RpcServer ,而真正處理請求的核心類是 RpcServerHandler 。另外還有一個 ZK

Android5.0編譯問題:No rule to make target 'external/chromium_org/third_party/angle/.git/index',

出現下面的錯誤: No rule to make target 'external/chromium_org/third_party/angle/.git/index', need by ..... 進入相應的目錄,發現在angle目錄下根本沒有.git的目錄,這個也可以理解,因為不是自己通過r

ESP8266模組使用,環境搭建,編譯和燒錄

經過一陣子的搗漿糊,無數次的迷茫,困惑,終於慢慢看到點希望的曙光。網上的資料很多,但都不繫統,講地也不詳細,一半靠努力學,一半靠悟。阻擋了很多菜鳥的進步,我現在把我的經驗分享出來,希望少點痛苦多點成就感。      學習這個主要分兩大塊

ASP.NET強大技術支撐,LeaRun V7.0敏捷開發框架——敏捷開發模組

LeaRun是一款基於.net的敏捷開發框架,框架內建角色、表單、工作流、嚮導式智慧開發元件、即時通訊元件、APP開發元件、微信元件、通用許可權等一系列元件,軟體開發人員可以通過一系列簡單配置快速開發出OA、ERP、CRM、HRM、SAAS、MIS、移動APP、微信等眾多高質量資訊系統。 官網:www.

webpack4.0配置及快速進行react模組化開發

webpack 4 入口出口的零配置 新建一目錄webpack-4 執行npm init -y 執行命令npm i webpack wepback-cli -D 修改package.json檔案,加入 "scripts":{ "build":"webpack"

如何在核心中重新編譯某一個ko模組

例如:SDIO 模組 1、用 lsmod 檢視sdhci 相關的模組。 2、rmmod sdhci-pci 和 sdhci 3、make modules SUBDIRS=drivers/mmc 4、find. -name *.ko 查詢生成的.ko檔案 5、insmod sdhci-pci.

舊手機android的linux核心編譯Wifi驅動加入。

經過一些時間的分析與除錯,還是把wifi的驅動調通了。 首先要分析舊手機的wifi。 1,要分析舊手機的wifi,在recovery下配通wifi 是一個不錯的選擇。在recovery已經配通了adb 介面,其實它除去沒有應用軟體外,與硬體系統相關的內容都是完整的。經過我多次償試,對我的MS

Nodemailer 5.0.0 釋出,Node 郵件傳送模組

   Nodemailer 5.0.0 釋出了,Nodemailer 是一個簡單易用的 Node 郵件傳送模組(通過 SMTP、sendmail 或者 Amazon SES),支援 unicode,可以使用任何字符集。 此版本更新內容如下: 開始使用 dns.resolve

webpack 5.0.0 alpha 2 釋出,JS 模組打包器

   webpack 5.0.0 alpha 2 釋出了,webpack 是一個模組打包器,主要目的是在瀏覽器上打包 JavaScript 檔案。 此版本主要修復了一些 bug: 具有 null 原型的物件現在可以序列化。 toJson 現在對所有選項 all:false

Rust 1.7.0的macro巨集語法分析和使用舉例

macro 巨集的概念在很多語言中都有。 通常情況下,巨集的機制是在預編譯階段對已經定義的巨集進行替換或者 expanded 展開 ,即:把巨集按照名稱替換成巨集的內容。 Rust 中的巨集,與眾不同! Rust中的巨集,也是在預編譯階段進行處理。巨集不僅

webpack 5.0.0 alpha 4 釋出,JS 模組打包器

   webpack 5.0.0 alpha 3 釋出了,webpack 是一個模組打包器,主要目的是在瀏覽器上打包 JavaScript 檔案。 更新內容包括: 重構 刪除module.buildMeta.providedExports。 移到 ModuleGra

Ubuntu15.10 編譯 Android5.0 原始碼

最近無事,編譯了一下android 5.0的原始碼。 首先,感謝前人的栽樹,主要是參考了http://blog.csdn.net/chouretang/article/details/43769839這篇文章,在此謝過。本文使用的是Ubuntu15.10 。 不過中間還

從零寫分散式RPC框架 系列 2.0 (2)RPC-Common模組設計實現

RPC-Common模組相對於1.0版本複雜了很多,最主要的變化在於將 Rpc的Netty處理器從RPC-Server和RPC-Client收回。1.0 版本的設計思路是儘可能減少冗餘依賴,所以RPC-Common一般只放通用的功能。現在則是儘可能都放在RPC-Common模組,以方便工