當前位置:首頁 » 編程軟體 » 安卓阿里代碼約束編譯太慢

安卓阿里代碼約束編譯太慢

發布時間: 2023-01-04 03:54:30

『壹』 Dev-c++編譯慢為什麼

你寫的代碼貼出來號碼?可能是代碼太多了,並且可讀性差,所以執行的慢。

『貳』 用C-free編譯C代碼運行很慢是為什麼

這個應該與您機子本身當時運行的空間有關系,請您嘗試只打開編譯器,而不要讓其他程序後台運行,如果情況依舊,且其他編譯器情況都是這樣,可能是您的內存空間不足,建議加內存條

『叄』 阿里國際站全屏代碼問題

居中:style="margin:0 auto;"

『肆』 怎麼在Ubuntu編譯Android2.3源代碼以及製作自己的SDK

網上下一個軟碟通軟通(UitraISO)工具、然後去官網上下載一個64位ubuntu.*.iso系統文件、然後軟碟通工具自己製作一個USB啟動盤(非常簡單)不會用軟碟通的網路一下一大把!、系統最好是10.40以上的版本

使用的是ubuntu官網下載的ubuntu10.04 LTS 64位版本(ubuntu-10.04.2-desktop-amd64.iso)

配置軟體源:

系統安裝完畢以後應該首先換一個速度快的軟體源

一般用的是ubunt

不然下載各種更新和軟體包的時候非常的慢

安裝JDK:

我要編譯的是2.3姜餅的源代碼 所以需要使用jdk6 (還需要是64位的系統)

如果是32為系統藐視jdk要安裝jdk5.0的吧!藐視說有個doc什麼的不行!所以系統一般裝64的、如果是32的小伙們趕快把jdk看看

安裝方法:

打開終端

輸入

sudo add-apt-repository "deb "

sudo add-apt-repository "deb-src "

sudo apt-get update

sudo apt-get install sun-java6-jdk

就安裝好了 (ubuntu10.04 LTS版會自帶那兩個源)

並且不需要配置環境變數

這一步可以參考

安裝各種軟體包:

終端中輸入

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos texinfo libsdl-dev libwxgtk2.6-dev

最後三個是我補充的 其他都是官方文檔提供的

這一步可以參考

下載源代碼:

打開終端並輸入

mkdir ~/bin

PATH=~/bin:$PATH

這兩句是在你的個人文件夾下創建了一個名字叫bin的文件夾 並且把其加入到了環境變數中

再輸入

curl ; ~/bin/repo

chmod a+x ~/bin/repo

這兩句首先在bin目錄下面下載了一個repo文件 repo簡單來說就說用來版本控制的 我們就是用的它來同步代碼

然後建立一個用來存放源代碼的文件夾 我的這個文件夾的名字是android2.3

輸入

mkdir android2.3

cd android2.3

進入android2.3目錄

輸入

repo init -u git://androi/platform/manifest.git -b gingerbread

在此說明一下:

安卓總稱:「機器人」

1.5系統:「紙杯蛋糕」

Android 1.6 Donut甜甜圈
Android 2.0 Eclair松餅
Android 2.1 Eclair松餅
Android 2.2 Froyo凍酸奶
Android 2.3 Gingerbread姜餅(以上系統都是用於手機的)官方消息說2.4准備出來了!至於3.0目前只用於平板電腦

Android 4.0 Ice Cream Sandwich(簡稱ICS,冰淇淋三明治),

表示你需要的代碼是姜餅的 所以最後是gingerbread 如果是2.2代碼 就把gingerbread改成froyo

然後你需要輸入你的名字跟郵箱地址

如果提示找不到repo命令的話 需要重新設置環境變數 就是之前的PATH=~/bin:$PATH

輸入

repo sync

開始同步代碼 這個過程會根據你的網速來決定快慢

這一步需要下載的數據有3g那麼大

可以續傳 一次沒下完也沒關系

如果之前就已經下過一次的話 只需要把源代碼目錄(我的是android2.3)下有一個叫.repo的隱藏文件夾里的projects文件夾備份出來就可以了

以後還需要同步的時候再把projects文件夾拷貝回去

ctrl+h查看隱藏文件

這一步可以參考

編譯整個源代碼:

cd android2.3

進入你的代碼目錄

輸入

. build/envsetup.sh

注意.和build中間有個空格

輸入

lunch full-eng

make -j2

輸入make就是開始編譯代碼了 加一個-j2參數就是開兩個線程去編譯 速度會快些 我花了兩個小時的時間

編譯完畢以後馬上輸入

emulator

就可以運行模擬器了 系統能跑起來就說明編譯成功了

如果提示找不到emulator命令的話

需要添加環境變數

在android2.3目錄下的out/target/proct/generic文件夾下會看到system.img

能看到的話應該算是成功了

這一步可以參考

編譯SDK:

這一步在官方網站上沒有說明

但是在源代碼文件夾裡面有文檔提到了

就是在android2.3/sdk/docs目錄下有一個叫howto_build_SDK.txt的文件介紹了如何編譯SDK

原文

Then once you have all the source, simply build the SDK using: $ cd ~/my-android-git $ . build/envsetup.sh $ lunch sdk-eng $ make sdk

看來不需要先編譯整個系統再編譯SDK 可以直接上來就編譯SDK

按提示輸入

make到時候也可以加上-j參數 比如 make -j2 sdk

但是不推薦 因為容易編譯失敗 而且編譯SDK只需要二十多分鍾到時間 不算很長

當出現

Package SDK: out/host/darwin-x86/sdk/android-sdk_eng.<build-id>_mac-x86.zip

的時候 就表示編譯成功了 其中<build-id>默認是系統的用戶名

howto_build_SDK.txt中還提到了編譯ADT插件

我發現自己編譯到ADT插件竟然認不到platform 自己編譯出來到SDK也一樣

原因不明

只要使用官方的SDK和ADT就沒有問題了

具體就是把自己編譯出來platform拷貝到官方SDK里到platforms文件夾下 搞過Android開發都懂的

最後:

非常簡單的一步

就是直接修改源代碼然後編譯SDK就可以得到自己的SDK了

我就示範一個簡單的例子 拋磚引玉

首先我找到TextView的代碼

在frameworks/base/core/java/android/widget 如圖

我在updateTextColors方法的開頭添加了一句System.out.println

列印了一句話"Source Code Changed"

updateTextColors方法會在TextView的setTextColor方法中被調用

好 保存

編譯

然後使用這個platform

新建一個項目

調用一下TextView的setTextColor方法看看有什麼效果

一個很簡單的例子

看看

Source Code Changed被打出來了

SDK修改成功

『伍』 為什麼阿里工程師代碼寫的好看看他的代碼規范就知道了


曾經與一位從阿里出來的Java工程師一起工作過一段時間,他的技術說不上非常厲害, 但是,他的代碼寫的的非常好,凡是他做的功能很少出現Bug 。我就很好奇,於是經常向他請教一些代碼設計的原則,然後他告訴了我阿里Java手冊。並且,他將這個手冊進行了修改,也成為了我司Java程序員的開發手冊。 這篇文章就讓我們看一看這個手冊中比較重要的原則。




【強制】 代碼中的命名均不能以下劃線或美元符號開始,也不能以下劃線或美元符號結束。

反例:_name / __name / $name / name_ / name$ / name__


【強制】 類型與中括弧緊挨相連來表示數組。

正例:定義整形數組 int[] arrayDemo; 反例:在 main 參數中,使用 String args[]來定義。


【強制】 POJO 類中布爾類型變數都不要加 is 前綴,否則部分框架解析會引起序列化錯誤。

說明:表達是與否的值採用 is_xxx 的命名方式,所以,需要在 設置從 is_xxx 到 xxx 的映射關系。

反例:定義為基本數據類型 Boolean isDeleted 的屬性,它的方法也是 isDeleted(), RPC 框架在反向解 析的時候,「誤以為」對應的屬性名稱是 deleted,導致屬性獲取不到,進而拋出異常。


【推薦】 在常量與變數的命名時,表示類型的名詞放在詞尾,以提升辨識度。



【推薦】 介面類中的方法和屬性不要加任何修飾符號(public 也不要加),保持代碼的簡潔 性,並加上有效的 Javadoc 注釋。盡量不要在介面里定義變數,如果一定要定義變數,肯定 是與介面方法相關,並且是整個應用的基礎常量。

正例:介面方法簽名 void commit();

介面基礎常量 String COMPANY = "alibaba";

反例:介面方法定義 public abstract void f();

說明:JDK8 中介面允許有默認實現,那麼這個 default 方法,是對所有實現類都有價值的默認實現。


【參考】 枚舉類名帶上 Enum 後綴,枚舉成員名稱需要全大寫,單詞間用下劃線隔開。

說明:枚舉其實就是特殊的類,域成員均為常量,且構造方法被默認強制是私有。

正例:枚舉名字為 ProcessStatusEnum 的成員名稱:SUCCESS / UNKNOWN_REASON。


【參考】 各層命名規約:

1) 獲取單個對象的方法用 get 做前綴。

2) 獲取多個對象的方法用 list 做前綴,復數形式結尾如:listObjects。 3) 獲取統計值的方法用 count 做前綴。

4) 插入的方法用 save/insert 做前綴。

5) 刪除的方法用 remove/delete 做前綴。

6) 修改的方法用 update 做前綴。

1) 數據對象:xxxDO,xxx 即為數據表名。

2) 數據傳輸對象:xxxDTO,xxx 為業務領域相關的名稱。

3) 展示對象:xxxVO,xxx 一般為網頁名稱。

4) POJO 是 DO/DTO/BO/VO 的統稱,禁止命名成 xxxPOJO。



【強制】 不允許任何魔法值(即未經預先定義的常量)直接出現在代碼中。

【強制】 避免通過一個類的對象引用訪問此類的靜態變數或靜態方法,無謂增加編譯器解析 成本,直接用類名來訪問即可。


【強制】 相同參數類型,相同業務含義,才可以使用Java的可變參數,避免使用Object。

說明:可變參數必須放置在參數列表的最後。(提倡同學們盡量不用可變參數編程)


【強制】 所有整型包裝類對象之間值的比較,全部使用equals方法比較。

說明:對於 Integer var = ? 在-128 至 127 范圍內的賦值,Integer 對象是在 IntegerCache.cache 產 生,會復用已有對象,這個區間內的 Integer 值可以直接使用==進行判斷,但是這個區間之外的所有數 據,都會在堆上產生,並不會復用已有對象,這是一個大坑,推薦使用 equals 方法進行判斷。


關於基本數據類型與包裝數據類型的使用標准如下:

說明: POJO 類屬性沒有初值是提醒使用者在需要使用時,必須自己顯式地進行賦值 ,任何 NPE 問題,或 者入庫檢查,都由使用者來保證。

正例:資料庫的查詢結果可能是 null,因為自動拆箱,用基本數據類型接收有 NPE 風險。

反例: 比如顯示成交總額漲跌情況,即正負 x%,x 為基本數據類型,調用的 RPC 服務,調用不成功時, 返回的是默認值,頁面顯示為 0%,這是不合理的,應該顯示成中劃線 。所以包裝數據類型的 null 值,能 夠表示額外的信息,如:遠程調用失敗,異常退出。



【強制】 POJO 類必須寫 toString 方法。

使用 IDE 中的工具:source> generate toString 時,如果繼承了另一個 POJO 類,注意在前面加一下 super.toString。

說明: 在方法執行拋出異常時,可以直接調用 POJO 的 toString()方法列印其屬性值,便於排查問題。


【強制】 關於hashCode和equals的處理,遵循如下規則:

說明:String 已覆寫 hashCode 和 equals 方法,所以我們可以愉快地使用 String 對象作為 key 來使用。


【強制】 線程資源必須通過線程池提供,不允許在應用中自行顯式創建線程。

說明:線程池的好處是減少在創建和銷毀線程上所消耗的時間以及系統資源的開銷,解決資源不足的問 題。 如果不使用線程池,有可能造成系統創建大量同類線程而導致消耗完內存或者「過度切換」的問題。


【強制】 線程池不允許使用Executors去創建,而是通過ThreadPoolExecutor的方式,這樣的處理方式讓寫的同學更加明確線程池的運行規則,規避資源耗盡的風險。



以上規范在設計代碼中,是比較重要的原則。如果編寫代碼的過程中,可以依照以上原則,那代碼的可讀性和可維護性將大大提升

『陸』 java編譯為什麼那麼慢

ecplipse編譯慢,並不是說編譯的工具慢,是由於工程代碼很多,導致內存短時間產生不夠的現象,表現出來的就是很慢。
很多程序在進行大數據的計算或者資料庫的操作,都需要很多的內存來計算或者保存數據,編譯環境這時候就會很卡。

『柒』 如何看待阿里開源的dexposed框架

從AOP的角度來看,這是效率的大幅度提升。首先它不需要任何編譯器的插樁或者代碼改寫,對正常運行不引入任何性能開銷。這是AspectJ之類的框架沒法比擬的優勢。其次,對所改寫方法的性能開銷也極低(微秒級),基本可以忽略不計。這就決定了它是一個不可多得的AOP解決方案,雖然僅限Android下,而且有些限制和兼容性制約。

從工程的角度來看,熱補丁僅僅是牛刀小試,它真正的威力在於『線上調試』。做App開發的同學一般會羨慕服務端開發的同學,遇到問題之後有充足的日誌和各種監控數據方便排查問題,最不濟也可以臨時加調試代碼;而App出點啥問題只要沒有『先見之明』的埋點,基本上就是兩眼一抹黑。這邊PM和老大在背後咆哮,你坐在電腦前面都不知道從哪下手。但是基於Dexposed實現的線上調試可以實現真正意義上的遠程調試,點對面甚至是點對點的。根本不用擔心沒有事先埋點,需要加調試、加日誌什麼的,隨時部署,分分鍾後就可以看到需要的調試信息,無論是方法參數值、返回值,拋出的異常,還是調用路徑,十萬八千里外的兇案現場全部了如指掌,直如身臨其境。找到問題之後,馬上打個補丁,再遠程調試看一下是不是圓滿解決。這個用途在工程上的意義是真正跨越性的。

從技術的角度來看,基於Xposed原理實現的AOP不僅可以hook自己的代碼,還可以hook同進程的Android SDK代碼,這也就可以讓我們有能力在App中填上Google自己挖的坑,避免用一些非常痛苦的workaround,對於一些復雜的安全漏洞尤其有效。

最後,從開源的角度來看,Dexposed本身從名字而言就是對Xposed的致敬,我們也通過開源Dexposed反哺社區,與整個社區共同分享和推進我們的成果。(即便Apache協議本身並沒有連帶開源的約束)

BTW,搞不懂Dexposed與Xposed關鍵性差別,也不懂開源社區文化和游戲規則就說抄襲的同學,可以去洗洗睡了,我都懶得反駁了。

『捌』 ubuntu12.04編譯android源碼要多久

這個關鍵是要看你的電腦配置情況,以及代碼的附加情況,有的平台軟體會附加很多東西上去,編譯就比較慢了。
我們這邊使用的是四核八線程的電腦,32GB內存,
原生代碼 4.4 八線程編譯40分鍾左右,5.1,一個半小時左右,6.0的大約一個小時,以上是原生代碼編譯模擬器的時間。

高通代碼6.0編譯一般需要兩個小時左右,mtk的也是兩個小時左右,

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