看板 AndroidDev 關於我們 聯絡資訊
※ 引述《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
Fnd:感謝,當初我們考慮的就是效能,但這篇文章讓我頓開茅塞...^^ 06/30 01:08
Fnd:感謝各位先進的回應,另外,請問我可以引用轉貼這篇文章嘛?(會註 06/30 01:09
Fnd:明作者與來源) 06/30 01:09
qrtt1:可以啊,都寫出來了。沒在怕被轉的QQ 06/30 01:12
Fnd:呵呵,想說詢問是禮貌...還是要再說聲多謝,真的XD 06/30 01:16
ficecmiraror:但是bitmap size的問題真是打痛不少人= ="~ 06/30 14:13
ficecmiraror:每次都因為bitmap size而OOM就覺得很怒Orz 06/30 14:13
ficecmiraror:放也放不掉~GOOGLE也查不出什麼解法.... 06/30 14:14
qrtt1:bitmap得看使用情況個別處理了。像我在寫player為了效能跟 06/30 14:15
qrtt1:減少GC發生的機會,畫面就只有一個bitmap。一直重覆畫上去。 06/30 14:16
qrtt1:如果是多個不同大小的bitmap,要重複使用就得想辦法對canvas 06/30 14:17
qrtt1:下手了。因為bitmap可以重複畫在canvas上。用幾個重複的 06/30 14:17
qrtt1:bitmap去畫所有的圖。那可能是避免bitmap OOM的方法之一。 06/30 14:18
qrtt1:如果,萬不得已就是需要那麼多bitmap。那就實作pool機制 06/30 14:18
qrtt1:不要真的讓bitmap去recycle,自己管理它的生命週期。 06/30 14:19
fasthall:其實是因為bitmap oom的關係的話 可以考慮GLES的封裝 07/02 01:07