Android 應用開發的難點是什麼?
在於:你的產品對你說:
- 這個界面怎麼沒有返回鍵,用戶要怎麼返回;
- 點擊鍵盤之外的區域不會自動關閉鍵盤,用戶要怎麼關閉鍵盤(拿著腎六給你演示);
- 什麼是Material Design,別說這些,我們沒必要替Google培養用戶的習慣;
- Lollipop的適配先別管了,這台9100老是出現兼容問題你先看看;
你的設計對你說:
- (拿出腎六劃幾下)這裡跟這個效果一樣就好;
- 素材我就給你一套你縮放就好;
- 什麼點九圖,這些技術活當然你來做;
- 這裡怎麼比我的設計圖多了一個Pixel(縮放時無法出現小數點的像素),安卓端的體驗就是這樣變壞的;
你的測試對你說:
- 在這台機子上有BUG(指著一部帶有滾動球的手機);
- 在這台機子上太卡了(拿著一部通知欄有幾百條推送的手機);
你的安卓研發同事:
- (下班了把安卓測試機放進抽屜,拿出腎六打電話);
- 你的工資應該不低吧,怎麼還用安卓機;
然而,只有你是想做自己的安卓 APP才來到這裡的。
2015年8月12日 08:27:27 追加一下吐槽
1、首先Android開發要把APP風格弄得和IOS一樣,而這本來是設計的工作,結果Android開發要做很多額外的工作,而強行適配IOS風格,會有許多兼容性問題,也影響了APP的性能,這些額外工作都要Android開發來承擔,就連點9圖都要Android開發來搞,結果Android就在業務工作之外做了40%(保守估計)的工作。2、產品要兼容非常低版本的Android系統,例如第一家公司的遊戲SDK要求兼容API4,試問這個版本的Android手機能跑幾個Android遊戲。Android 4.0以前的兼容性問題簡直是要命的,而產品就是不願放棄。
3、同一個產品,IOS的版本要發布APPLE STORE審核的,很多時候會審核不過,所以產品的版本一直是Android優先的,所以Android在開發新版本的時候會,會先於伺服器聯調,聯調過程踩的坑簡直是不要不要再多了,而但輪到IOS的版本的時候,這些介面基本是打通的,所以IOS的壓力會少許多。
4、IOS的同事都是公司發的MAC,Android就只能用PC,現在項目是在太大了,編譯一次項目要10分鐘,不能忍啊,但是要MAC只能自己買……
5、過於國內產品的尿性,就是不用Android常規開發,許多動態載入啊,SDK項目啊,導致了Android開發繁瑣了許多,許多時候產品只管能或者不能,不管代價。而IOS有的技術就算能做,也由於會被APPLE SOTRE封殺所以不搞。所以現在Android比IOS多出一堆業務,導致我們開發同事流失嚴重,但是公司招人要壓Android壓得很厲害,我在面試過程中發現的一些不錯的同事都被搞走……
6、老闆只關心APP上面看到的東西,比如登錄支付失敗,哪管是哪個環節出問題,對Android開發開口就是罵……技術是沒有止境的,所以肯定會不斷有演進和難點。
一. 總體上
總體上我是贊成 @曹先進 的說法,Android 開發跟所有應用開發同理,底層和框架如何更好設計及優化以適應業務的高速增長。說起來很簡單,低耦合高擴展,做起來是需要長期經驗積累。二. 我拋幾個細節難點
1. 插件化如何使插件的 Manifest 生效2. H5 容器如何更好地優化和兼容3. App 端優化,這是個沒止境的話題,網路、圖片、動畫、內存、電量等等
隨著優化的加深,你會發現不能局限在客戶端,服務端也需要深入。SPDY 的優點併入 HTTP 2.0 你們有在測試或用嗎?
Fresco 出來前你是不是覺得圖片緩存已經到頭了?Android App 為什麼整體流暢性總是被詬病?……三. 題外話
如果你覺得沒有難點或者難點在兼容、UI 之類問題上,那麼可能兩個原因:1. 公司業務發展過慢,對技術的需求不夠迫切2. 個人長時間在業務開發上,這個對於走技術路線的人來說挺麻煩的,不主動去接觸學習的話,n 年以後也還是這個樣子為了更好的個人成長,這兩點都是需要注意和解決的問題。
最難的地方就是:官方網站被牆了……
產品經理沒有Android手機,算不
我總結android開發的難點無非就是2個字:折騰。
1.搭建開發環境折騰
下載JDK、下載Android開發IDE、下載各種版本的android SDK、配置各種環境變數。模擬器太慢?嗯,下載一個Genymotion。除了JDK其它都下載不了?嗯,去買一個VPN,找一個代理。VPN買好了,SDK和IDE下載好了,想編譯一下源碼玩玩,嗯?需要linux?握草,下個虛擬機,下個Ubuntu,重新配置一個環境~_~。半個月過去,代碼還沒寫一行~某一天,剛想進行gradle同步,出現SLL peer shut down incorrectly。一檢查你買的VPN被封了(例如xx出牆)。然後你上知乎、貼吧各種平台上面問:求推薦付費的穩定高速VPN? - 互聯網。嗯,假如問題不會被關閉的話,你才可能獲取到一個滿意的回答。
2.UI適配、版本適配折騰
各種android版本的系統導致了UI適配的難點,各個公司系統開發者的水平參差不齊,缺乏對應用開發者的尊重,只管實現不管開發者的調用。miui的喚醒對齊,魅族的SB,華為的隱藏式返回按鈕,oppo莫名其妙的內存回收,還有各種連軟加速都不支持的。另外,大部分設計師加重了適配的難度,連dip、sp都不知道的設計師有大把的在。各種仿ios設計,各種產品經理、設計師甚至老闆認為ios天生驕傲,自然美幾分。他們對android的認知還停留在android2.3的地步。話說某一次我建議設計師使用MD方式來開發android app,被設計師回復:MD設計沒性格。然後給出各種著名的App來證明很多大公司都沒採用MD設計。我回復:apple music for android使用的是MD。然後就不說話了,頗有種「人可以被毀滅 但不可以被打敗」的壯烈。版本適配主要是指API介面的適配,android版本的快速迭代,出現了各種兼容包v4、v7、v13。我印象最深刻的是一個關於webview的http和https的混合請求的,在API&>=21的版本上面默認是關閉的,在21以下就是默認開啟的,直接導致了在高版本上面http請求不能正確跳轉。if (Build.VERSION.SDK_INT &>= 21) {
webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW );
}
類似問題的還有很多。
3.各種市場,版本回收慢android若干個市場,每次發布版本光打包都要半個小時,還要對某些市場做一些特殊的處理,什麼360市場要求首頁不能一進入就彈窗、什麼網易市場上傳成功沒有及時更新的問題等等。還有android版本回收超級慢,一個bug修復後,過幾個月你還能在後台檢測到該bug的錯誤信息。產品的意見不統一,一個向東一個向西,把程序員在中間當猴耍。
難的不在技術,而在於你對整個團隊(包括開發,設計,產品)認可么?只有認可了你的產品,認可你的團隊,你總會想盡辦法,投入激情去把她做的更好!
人家問的是應用開發,結果下面的回答的是適配,適配只是其中之一,其實個人覺得並是不最難的。應用開發最難的其實跟一般軟體開發沒有區別,如何保持程序的擴展性和架構的彈性,如何適應需求的變化,這個才是難點。
連SDK都牆了,你說難不難。
感覺難點在與熟悉SDK各版本關鍵API的歷史和特點並能熟練應用熟悉關鍵類如looper,handler,surfaceview等關鍵類底層的運作與實現其他就和一般工程一樣了,做好什麼架構,模式,內存管理之類的
兼容,聯網,性能優化
從我自己短暫的開發經驗來說,技術上android並不很難,買一兩本書,裝個eclipse,做幾個常式就可以了。但與技術相關的其他方面是比較難的,比如:1.界面設計:手機或平板的程序,界面是一個關鍵。如何設計好看的界面,如何讓界面適應不同的機型都很重要的。2.維護:android系統的更新總是很快,而且不總是向後兼容的,所以設計一個程序並不難,如何讓它適應不同版本的os是有難度的。3.高效率:android的程序如果只是寫出來可以運行,是很容易的,但如果讓其高效、魯棒,還是需要下很大功夫的。4.莫名其妙的問題:開發過程中還偶爾出現某個解決方案對某個版本的os可行,對某個版本的os不可行這種莫名其妙的問題……
最難的就是android設備種類繁多,各種適配與兼容問題。完了流暢性還沒有iOS好,各種費力不討好。
最難的是如何用一周時間做出別人兩個月才能做出的東西
做了這麼多年android開發,我覺得android是越學越難,東西根本學不完,最噁心的就是屏幕的適配,和項目大了各種內存問題,屏幕適配,優化內容,各種效果。
做開發自然離不開官方文檔,官方文檔是獲取知識的第一手資料,但是做安卓開發的必須要通過「某種手段」才能看到,這就讓很多人無法獲取到最新最準確的知識。開發者博客往往有demo,開發者論壇可以提問題找答案,這些都是幫助開發者快速實現某些功能點最好的工具,但是很多同樣地被屏蔽掉。至於無法更新sdk,無法更新Android Studio就不用說了,每天都可能遇到,遇到了就心塞。
讓人不爽的還有模擬器,啟動速度那叫一個慢。即便有個很好的替代版genymotion,也需要代理才能下載虛擬系統。還有安卓Sdk中的相冊介面,和ios系統比起來差多了,開發者不得不使用第三方的庫才能實現相冊展示,選擇本地相冊等功能。雖然自Kitkat起引入了SAF框架,但是兼容性是個問題,那些適配4.0以前系統的開發者傷不起。還有就是屏幕尺寸碎片化太嚴重,需要花更長時間來做適配,重複低級的工作會讓人變傻。還有動畫,設計師出效果圖基本都TM依蘋果為依據,你們不知道安卓系統不支持gif動畫嗎,不知道很多ios上的動畫在安卓上做起來很累嗎?不知道鍵盤啥時候出現啥時候隱藏沒有統一的監聽介面嗎?
但是安卓開源,開源,開源。
愛之深,責之切。實現功能一般情況下並不難,難的是你代碼的質量過硬,能適應以後需求的變動!
安卓好多都是模仿IOS 不得不說開發的時候 IOS慢一些(審核慢) 安卓以IOS為主 盡量和他一樣 在就是後期集成上線調BUG的時候費勁點
難在沒有充足的時間和金錢給你實現他的需求。
心態好才是難點!
推薦閱讀:
※三星 Note 7 的自燃事件會對三星造成怎樣的影響?
※有哪些 Android 上比 iOS 上更優秀的應用?
※三星S6edge、iPhone6plus、華為mate7和一些其他品牌的旗艦機哪個更值得入手?
※iOS的消息推送機制到底是怎樣的?
※droidBooster 為什麼能夠十倍加速 Android 設備的性能?