作者qrtt1 (null)
看板AndroidDev
標題Re: [問題] 初學者適用書籍?(非java)
時間Thu Jun 30 00:24:17 2011
※ 引述《Fnd (紅塵自有千千愁)》之銘言:
: 抱歉想請問一下初學者想以c/c++來開發android app的話,
: 有那些書籍是比較適合閱讀與購買的?
: 目前我找到的都是以java來寫...>"<
: 還請各位不吝賜教,感謝
大致還是以 Java 為主體來開發比較好。
即使較新的版本有 Native Activity 的支援,
能我們有機會使用 C/C++ 開發 Android APP。
但是這麼做有什麼好處呢?
『效能』?如果你現在才入門,
CPU 大多進入 1GHz 以上的時代了。
你是要寫 Media Player 還是 fps game (or 3D game)!?
多數的情況下,效能的調較都會被 Network IO 抵消
若者你不需要 Networking !?
採用 C/C++ 就意味著記憶體得自己管理。
在純 Native code 的情況,在未謹慎開發的情況下
memory leak 反而會成為痛腳的問題。
用 Java 寫,雖然 GC 會停住你的程式,
但它時間還沒長到能讓使用者感到不悅。
也有方便的 debugger 能用。
使用 gdb 得在 Android 2.x? 之後,
最好有 root 的情況下比較方便追蹤問題。
如果不幸拿到 stripped library 反組譯回去看,
若是 C 還稍為看得懂,
CPP 連 template 都展開了,實在是一頭霧水。
純 C/C++ 寫並不代表著正真的效能,
效能是依附著 profiling tool 數據來看的。
重點在那些可被明顯指出的瓶頸改善了多少。
用 C/C++ 寫可能少了些 function call,
但這通常進步空間有限,
對 Native code 產生的效能要求應該是獲得特殊指令集的加持。
也許,您得說說您那麼執著於採用 C/C++ 開發的理由。
這樣大家才有辦法進一步提出對策。
不然再問下去也只是 Android App 是以 Java 開發為主的。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.161.122.51
1F:推 Fnd:感謝,當初我們考慮的就是效能,但這篇文章讓我頓開茅塞...^^ 06/30 01:08
2F:→ Fnd:感謝各位先進的回應,另外,請問我可以引用轉貼這篇文章嘛?(會註 06/30 01:09
3F:→ Fnd:明作者與來源) 06/30 01:09
4F:→ qrtt1:可以啊,都寫出來了。沒在怕被轉的QQ 06/30 01:12
5F:推 Fnd:呵呵,想說詢問是禮貌...還是要再說聲多謝,真的XD 06/30 01:16
6F:推 ficecmiraror:但是bitmap size的問題真是打痛不少人= ="~ 06/30 14:13
7F:→ ficecmiraror:每次都因為bitmap size而OOM就覺得很怒Orz 06/30 14:13
8F:→ ficecmiraror:放也放不掉~GOOGLE也查不出什麼解法.... 06/30 14:14
9F:→ qrtt1:bitmap得看使用情況個別處理了。像我在寫player為了效能跟 06/30 14:15
10F:→ qrtt1:減少GC發生的機會,畫面就只有一個bitmap。一直重覆畫上去。 06/30 14:16
11F:→ qrtt1:如果是多個不同大小的bitmap,要重複使用就得想辦法對canvas 06/30 14:17
12F:→ qrtt1:下手了。因為bitmap可以重複畫在canvas上。用幾個重複的 06/30 14:17
13F:→ qrtt1:bitmap去畫所有的圖。那可能是避免bitmap OOM的方法之一。 06/30 14:18
14F:→ qrtt1:如果,萬不得已就是需要那麼多bitmap。那就實作pool機制 06/30 14:18
15F:→ qrtt1:不要真的讓bitmap去recycle,自己管理它的生命週期。 06/30 14:19
16F:推 fasthall:其實是因為bitmap oom的關係的話 可以考慮GLES的封裝 07/02 01:07