一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

Android開發(fā)在路上:少去踩坑,多走捷徑

  最近一朋友提了幾個(gè)Android問題讓我?guī)兔憘€(gè)小分享,我覺得對(duì)新人還是挺有幫助的,所以有了這個(gè)小分享。

  1. 目前, Android APP開發(fā)完成后,通常需要在哪些機(jī)型上進(jìn)行測(cè)試?

  2. 目前, 開發(fā)Android APP時(shí),需要考慮的分辨率有哪些?

  這兩個(gè)問題可以合起來回答的。

  http://developer.Android.com/about/dashboards/index.html

  源自Google Play的數(shù)據(jù),每月都會(huì)進(jìn)行update,可以及時(shí)了解Android版本比例趨勢(shì)。

  屏幕密度數(shù)據(jù)

  OpenGL ES版本

  也可以參考一下國(guó)內(nèi)一個(gè)第三方數(shù)據(jù):http://www.umindex.com/#Android_device

  目前三星和小米市場(chǎng)占有率是遙遙領(lǐng)先的,三星Note2、Note3、S3、S4、S5、小米123、紅米必須測(cè)試,魅族也比較坑爹,加入測(cè)試名單吧。再選中小屏幕各一款(譬如華為C8650、Moto ME511)。

  Android 1.5、1.6、2.0、2.1和小屏幕的屬于古董級(jí)別的機(jī)器,市場(chǎng)存量也很少,新出的機(jī)器都是4.0以上的了,所以必要時(shí)需要舍棄對(duì)古董的支持,因?yàn)檫m配成本很高,對(duì)于新開發(fā)的應(yīng)用,這個(gè)適配不值得投入。

  3. 目前, 開發(fā)Android APP時(shí),適應(yīng)多個(gè)分辨率的技術(shù)方案有哪些?

  http://developer.Android.com/guide/practices/screens_support.html

  Android的屏幕適配,可以在工程res目錄下進(jìn)行處理,無需寫代碼,Android自動(dòng)找最適合的資源進(jìn)行顯示,相信大家都相當(dāng)熟悉的了。

  目前我使用的是ADT22.6,新建一個(gè)Android工程,會(huì)自動(dòng)在res目錄下生成這個(gè)目錄結(jié)構(gòu)。這里有5個(gè)前綴drawable的文件夾,對(duì)應(yīng)不同密度屏幕時(shí)所取的圖片資源或者樣式。

  做一個(gè)功能正常的App,開發(fā)者需要遵循一些開發(fā)守則,與此同時(shí),設(shè)計(jì)師也需要有一套標(biāo)準(zhǔn)來設(shè)計(jì)Android UI,所有的Android UI設(shè)計(jì)指南都在這里了。

  http://developer.Android.com/design/style/devices-displays.html

  9Path這個(gè)簡(jiǎn)單易用的工具,很實(shí)用,必須推薦。

  畫個(gè)圖標(biāo),都要出N種分辨率,每次機(jī)械操作實(shí)在有點(diǎn)弱爆,推薦一個(gè)牛X的工具:

  其中的功能可以自動(dòng)切圖輸出各種屏幕密度的icon,可視化構(gòu)建布局,自動(dòng)生成布局文件。

  http://Android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html

  推薦這個(gè),設(shè)計(jì)師應(yīng)該會(huì)很喜歡,秒切圖。

  http://www.cutandslice.me/

  實(shí)際開發(fā)中,考慮到包體積大小,不會(huì)在所有drawable中都放不同size的圖片資源,而是只使用一套圖片資源,編寫不同的布局。個(gè)別特殊的圖片資源就每個(gè)drawable文件夾中放相應(yīng)的size,譬如程序圖標(biāo),不按文件夾放可能會(huì)導(dǎo)致在Launcher顯示失真。

  雖然不作任何改動(dòng)也可以在Android Pad上跑,但由于Pad屏幕較大,操作體驗(yàn)不一樣,建議重新設(shè)計(jì)。

  4. 開發(fā)Android APP時(shí),配置文件應(yīng)放在哪里(APP本地、遠(yuǎn)程WeB Server中)?應(yīng)該如何考慮?  

  這個(gè)就要看需求了,如果只是本機(jī)使用,譬如保存軟件設(shè)置,不需要聯(lián)網(wǎng)操作的,那首選當(dāng)然是保存在本地。

  如果業(yè)務(wù)需要和服務(wù)器交互,可以做成云配置方式。為了跨平臺(tái)的兼容性,可以考慮使用Google的ProtoBuf,比XML更小更快更簡(jiǎn)單,后臺(tái)和終端定義一套協(xié)議,自動(dòng)生成C++、Java或者Python代碼。

  https://developers.google.com/protocol-buffers/docs/overview?hl=zh-CN  

  5. Android APP測(cè)試方案通常考慮哪些因素?有測(cè)試方案的參考實(shí)例嗎?  

  機(jī)型適配:屏幕大小,這個(gè)只能人工檢驗(yàn)了(程序不知道你的UI長(zhǎng)得好不好看)

  Android版本(某些API在低版本上沒有的,會(huì)Crash,推薦Lint靜態(tài)掃描)

  網(wǎng)絡(luò)質(zhì)量:聯(lián)通、電信、移動(dòng)、WiFi、弱網(wǎng)絡(luò)

  安全性:網(wǎng)絡(luò)數(shù)據(jù)必定經(jīng)過加密處理;本地不保存安全信息(帳號(hào)密碼等),或者加密保存

  代碼中敏感信息盡量使用byte數(shù)組而不是字符串代碼混淆處理(Proguard)

  SD卡剩余空間很少,沒SD卡,雙SD卡,飛行模式,時(shí)間有誤等。

  性能:CPU、內(nèi)存占用(開發(fā)可以使用Linux的top命令或者DDMS里面的工具)

  網(wǎng)絡(luò)流量消耗(有各種第三方流量監(jiān)控軟件)

  6. 開發(fā)Android APP時(shí),為了提高工作效率,提高項(xiàng)目質(zhì)量、通常需要抽象出一些lib出來,請(qǐng)列出經(jīng)常用到的接口的名稱和用途?! ?/strong>

  更多精彩可以上github搜搜,這就不班門弄斧了。

  7. Android APP開發(fā)中其它需要提醒的問題

  Android4.4在UI線程無法進(jìn)行網(wǎng)絡(luò)操作不單只Android API版本不一定導(dǎo)致運(yùn)行異常,有些機(jī)型還使用Java 1.5進(jìn)行編譯,使用某些Java 1.6的函數(shù)會(huì)Crash的。

  注意OOM問題,目前Android手機(jī)已經(jīng)有3G內(nèi)存了,但并非一個(gè)應(yīng)用就能使用全部?jī)?nèi)存。了解一下堆內(nèi)存,一個(gè)軟件至少一個(gè)進(jìn)程,一個(gè)進(jìn)程跑一個(gè)虛擬機(jī),進(jìn)程使用的堆內(nèi)存大小,每部手機(jī)不一定一樣。

  Show Dialog的問題,永遠(yuǎn)要判斷Activity是否還在。

  使用了高版本的API函數(shù),在低版本機(jī)器上掛了。

  非UI線程不能操作UI。可能有各種權(quán)限被禁的問題。

  沒有瀏覽器、沒有軟件安裝器、沒有Email等發(fā)生ActivityNotFoundexception。

  超快速連續(xù)點(diǎn)擊按鈕可能觸發(fā)跑多個(gè)線程的問題。

  Android4.4短信權(quán)限設(shè)置,原生系統(tǒng)帶有新接口,第三方系統(tǒng)可能裁剪掉了。

  8. 什么情況下發(fā)生OOM,如何避免?

  圖片操作(圖片縮放、bitmap生成等)、序列化反序列化數(shù)據(jù)等會(huì)消耗大量?jī)?nèi)存。合理使用數(shù)據(jù)結(jié)構(gòu)(鏈表和數(shù)組),及時(shí)釋放引用,使用弱引用等能降低OOM情況發(fā)生。

  9. 出現(xiàn)ANR怎么辦?

  如果Android程序某個(gè)操作執(zhí)行等待超過5s,會(huì)出現(xiàn)ANR(Application Not Responding)的對(duì)話框,對(duì)于執(zhí)行耗時(shí)的操作,譬如網(wǎng)絡(luò)操作,就不能在主線程上進(jìn)行了(Android 4.4不讓你這樣做了),這些任務(wù)應(yīng)該跑在主線程外,譬如新建一個(gè)線程處理,或者自己寫一個(gè)網(wǎng)絡(luò)引擎對(duì)所有網(wǎng)絡(luò)請(qǐng)求進(jìn)行管理。

  10. 如何跟蹤研發(fā)質(zhì)量?

  Coverity接入:https://scan.coverity.com/

  代碼缺陷掃描,不掃不知道,一掃嚇一跳。滿分推薦!Fro Free!如果你寫的是開源代碼,還能直接接入GitHub,超方便。

  Crash是無法避免的,我們能做的是盡量把Crash的情況減少。發(fā)出去的版本,用戶發(fā)生Crash了,我們需要把Crash數(shù)據(jù)收集起來。所以軟件需要做一個(gè)Crash上報(bào),匯總整理。統(tǒng)計(jì)每個(gè)版本的Crash率,并把Crash按優(yōu)先級(jí)進(jìn)行修復(fù)。

  當(dāng)然,版本檢查更新也少不了。

  11. 如果跟蹤用戶對(duì)產(chǎn)品的反饋?

  不管你寫軟件所用的技術(shù)有多么牛B,用戶是不知道的,也不關(guān)心的。用戶關(guān)心的是你的產(chǎn)品體驗(yàn)到底有多牛B。加上用戶可以輕松反饋的反饋功能,你會(huì)發(fā)現(xiàn)有時(shí)用戶的idea還不錯(cuò)的。

  做出來的產(chǎn)品好還是不好,需要有產(chǎn)品數(shù)據(jù)支撐,所以加插相關(guān)數(shù)據(jù)統(tǒng)計(jì)上報(bào)點(diǎn),哪個(gè)功能熱門,新增用戶多少,活躍用戶多少,一目了然。

  12. 安全檢查

  為避免異常情況的跳轉(zhuǎn)或者惡意攻擊,Android組件在啟動(dòng)時(shí)都需要判斷傳入的參數(shù)是否為空。

  敏感信息需要進(jìn)行權(quán)限限制或者加密處理。

  能不暴露的組件就不暴露,在AndroidManifest中為組件加上Android:exported=”false”屬性。

  需要暴露的組件通過自定義權(quán)限進(jìn)行調(diào)用,添加自定義權(quán)限Android:permission=”yourapp.permission.CALL”檢測(cè)WebView漏洞http://security.tencent.com/index.php/opensource/detail/1

  13. 常用工具有哪些:

  Lint(清理資源、安全檢查、layout優(yōu)化等)

  一般在提測(cè)前清理一下冗余資源,查一下有沒有用了一些高API Level才有的接口,查一下安全問題。

  Findbugs(檢查Java代碼缺陷)

  在開發(fā)工程中就可以對(duì)單個(gè)文件進(jìn)行檢查,有問題可以及時(shí)處理。

  MAT(內(nèi)存泄漏調(diào)試工具)http://www.eclipse.org/mat/

  遇到內(nèi)存或者性能問題時(shí),一般會(huì)結(jié)合幾種工具來查問題,找解決方法。

  Method Profiling(統(tǒng)計(jì)方法耗時(shí))

  Eclipse Class Decompiler(從此Eclipse不怕看不到j(luò)ar包內(nèi)的代碼了)http://feeling.sourceforge.NET/update

  Hierarchy Viewer(查看Activity堆棧、layout加載層次、像素眼)

  只能連接開發(fā)板手機(jī)或者模擬器,如果你的手機(jī)連不上,搜一下“Hierarchy Viewer 真機(jī)”,各種教程教你如何連上。

  Activity太多,有時(shí)出問題了,但又想不起這個(gè)頁(yè)面叫什么名字,插上去,一目了然。

  很清晰看出Layout布局層次, 還能顯示計(jì)算layout耗時(shí),繪圖耗時(shí),UI性能優(yōu)化好幫手。

  TinyPNG(壓縮圖片資源利器,山崩地裂推薦)https://tinypng.com/

  7z(壓縮APK利器,上線前壓一下就可以,簡(jiǎn)單實(shí)用,五星推薦)

  Apktool、Dex2jar 、jd-gui(反編譯套裝,你懂的)

  Mark Man(設(shè)計(jì)師何苦為難工程師)

  Beyond Compare(各種神對(duì)比,我喜歡對(duì)比代碼)

  Tcpdump(Linux dump包工具)

  adb shell tcpdump -p -vv-s 0 -w /sdcard/captureNET.pcap  

  WireShark(查看網(wǎng)絡(luò)dump包)

  遇到棘手問題時(shí),還是需要他們幫忙解決的。

  CMD (很簡(jiǎn)單的腳本卻能大大提高效率,大家多學(xué)多分享)

  一些經(jīng)常操作的動(dòng)作,使用手工操作又耗時(shí)又麻煩還可能出錯(cuò),使用命令行去操作的話會(huì)極大提供效率。

  拖放安裝應(yīng)用,不用再?gòu)棾鰔x助手xx寶來的蝸牛速度安裝了(速度快了,心情好了):

  adb install %1

  pause

  卸載應(yīng)用

  adb uninstall com.tencent.qqpim

  拉去SD卡目錄文件

  adb pull /sdcard/test/log c:testlog

  獲取聯(lián)系人db

  adb pull /data/data/com.Android.providers.contacts/databases/contacts2.db C:contact2.db

  tcpdump包

  adb shell tcpdump -p -vv -s 0 -w /sdcard/captureNET.pcap

  SDK裁剪打包

  裁目錄:rd/s/q S:tencentsrcAGJ

  裁文件:del S:tencentsrccomtencenttestTestApplication.Java

it知識(shí)庫(kù)Android開發(fā)在路上:少去踩坑,多走捷徑,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 1区2区3区4区 | 久久久国产精品网站 | 91中文字幕在线观看 | 日本一区二区三区欧美在线观看 | 色婷婷网 | 中文字幕123| 日韩视频一区二区 | 久久夜色精品国产亚洲 | 国产自制一区 | 一区二区三区高清 | 欧美色综合图区 | 久久91精品综合国产首页 | 国产精品手机在线亚洲 | 免费人成在线视频播放2022 | 欧美激情片在线观看 | 精品福利在线视频 | 国产一区二区三区波多野吉衣 | 91福利在线观看视频 | 国产一区在线看 | 交资源网在线观看 | 国产福利免费视频 | 激性欧美在线播激性欧美 | 久久久久久久91精品免费观看 | 亚州一级毛片 | 欧美黑人巨大xxxxxxxx | 99久久99 | 三级三级三级全黄 | 影院成人区精品一区二区婷婷丽春院影视 | 手机亚洲第1页 | 欧美精品激情 | 国产福利在线观看精品 | 丁香激情六月天 | 激情文学88| 91久久亚洲国产成人精品性色 | 9久re在线观看视频精品 | 色噜噜狠狠狠综合曰曰曰88av | 国产精品久久久久久福利 | 91免费资源网站入口 | 国产成人综合亚洲 | 美女黄色免费 | 伊人久久大香线焦在观看 |