在build android的source code,如果電腦硬體不夠好時,往往會build很久,google非常的貼心,針對此情況提供了ccache的機制可以減少編譯的時間,通常第一次clean build會花比較久時間,往後就會節省大約20%的時間,提升開發的效率。

  • 添加環境變數
export USE_CCACHE=1

cloudfly 發表在 痞客邦 留言(0) 人氣()

@ What is Widget
AppWidget framework通過broadcast intents和你的widget溝通,例如當需要更新Widget的時候。透過使用RemoteViews構建和發送。RemoteViews將Widget的layout和特定内容包裝後,藉由IPC傳送到Launcher,最後顯示到桌面上。

@ What is RemoteViews

RemoteViews並不是一個真正的View,而只是一個用於整合Widget裡layout呈現與view元件行為的一個Wrapper class(也就是appWidget所要長得樣子),透過RemoteView把建立該Widget需要的resource ID和各個元件的事件封裝起來。 RemoteViews會通過進程間通信機制傳遞給AppWidgetHost。

@為什麼要有RomoteView

cloudfly 發表在 痞客邦 留言(0) 人氣()

工作上有時需要假日連回公司,sync最新的code base或是build code的動作,可以節省隔天上班時等build code的時間,一開始都是直接用pietty或是ssh連回去,缺點就是當在build code時,家裡電腦上的console視窗不能關閉,這樣就中斷build code的工作了,所以就找尋看看有沒有可以關閉後還能夠繼續工作的tool。

後來發現了Screen跟Tmux,比較之下是覺得Tmux使用起來比較簡單,於是就安裝了tmux來試看看。

# 安裝Tmux
sudo apt-get install tmux
# 進入TMUX

cloudfly 發表在 痞客邦 留言(0) 人氣()

在寫C++過程中,指標的使用與操作是最頻繁被使用的,有些難解的bug,通常point佔絕大多數,這裡複習一個很基本的概念。

如下面的例子,個別使用兩個a指標,也各自呼叫他們的member function test(),發覺都可以印出test的字串,但為什麼第一個指標明明是指向undefine的空間,為什麼不會出現問題呢,不是應該要出現Segmentation Fault嗎?

這裡隱藏一個很重要,也很容易被誤解的觀念,通常使用null point或不知指向何處的point時,操作member function是不會發生Segmentation Fault的,會產生Segmentation Fault是在操作它的member時,如果下面的程式碼多加上一段a->value的話,當程式運行到這一行就會發生crash了。

cloudfly 發表在 痞客邦 留言(0) 人氣()


Android 原始碼下載及版本控制 - 使用git與repo


要取得Android的原始碼,會需要用到GitRepo還有Gerrit。 以下解釋一些工具,太冗長,可直接拉到最下方看如何取得Android原始碼。

什麼是Git?


Git is an open-source version-control system designed to handle very large projects that are distributed over multiple repositories.

cloudfly 發表在 痞客邦 留言(0) 人氣()

public class Hello {
public static int gvar;
public static void say(String s) {
int x = 10;
System.out.print(s+x);

cloudfly 發表在 痞客邦 留言(0) 人氣()

@Source Insight常用的快捷鍵:

  • Ctrl+= :Jump to definition

  • Alt+/ :Look up reference

cloudfly 發表在 痞客邦 留言(0) 人氣()

@VIM外掛安裝方式

透過github
(1)使用git submodule add  "要安裝plugin的路徑"   bundle/plugin-name
frank@frank:~/.vim$ git submodule add https://github.com/vim-scripts/taglist.vim.git bundle/Taglist  ./bundle/Taglist
(2)輸入指令初始化外掛

cloudfly 發表在 痞客邦 留言(0) 人氣()

函數的回傳值使用上要非常的小心,雖然程式寫久了,這算是比較基礎的概念,但有時一疏忽,往往就會造成系統Crash,簡單來說,函式產生新物件的路徑有二,在Stack空間或是在Heap空間裡,以底下例子來說。

const Rational& operator* (const Rational& lhs,
const Rational& lhs)

cloudfly 發表在 痞客邦 留言(0) 人氣()

在C++裡函式參數使用pass-by-value的話,會造成參數的傳遞成本增加,所以在C++應用程式或是component開發上比較少使用pass-by-value。

Google C++ Style Guide裡有提到Google內部使用C++ coding的規則,從裡面也可以看到Google的rule為所有函式的參數必須是pass-by-reference,並且加上cosnt,表示傳入的參數是不可以變動的,這時你可能會有個疑問,如果函式的實作需要修改到傳入的參數怎麼辦,當然這應該是很常見的case,所以他們對於需要更改操作的arguments,可以使用pass-by-point的方式。
link
All parameters passed by reference must be labeled const.

cloudfly 發表在 痞客邦 留言(0) 人氣()

身處在開發Android的公司,adb指令可以說是跟mobile device有非常密切的關係,舉凡push, pull data到devices上,甚至debug除錯等,都會需要使用到adb工具,所以了解並熟悉adb的一些指令對於開發上具有非常大之幫助。 ◎這裡列出官網上提到,以及比較常使用到的指令 1. adb devices (顯示目前有多少個模擬器正在執行)  2.

cloudfly 發表在 痞客邦 留言(0) 人氣()

GSR是我們Project裡用來 反覆執行相同動作的tool ,主要可以用在系統開發階段後期,對於開發好的AP或是component進行壓力測試,順便也可以偵測記憶體使用情況,例如Lauhch與Exit某支AP,當這個動作運行5000次後,計算Memory的使用情況,藉此某個AP或是component 是否有Memory Leakage。
先進adb shell後
1.使用top觀察目前process的memory使用狀況

cloudfly 發表在 痞客邦 留言(0) 人氣()

1 2
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。