Android 開發時你遇到過什麼相見恨晚的工具或網站?
對於很多Android/ios/wp個人移動開發者來說,開發一個具有網路功能的應用不是一件容易的事,不僅需要購買/租賃伺服器,還必須掌握一門諸如Java/.net/php這類的伺服器開發語言,每開發一款移動應用程序,就必須開發維護對應的伺服器程序。這一切對於移動開發者來說,都是一個冗長的噩夢。今天發現現在有這樣的雲平台可以讓開發者只需註冊一個帳號,成功後申請創建任意多個資料庫,獲得對應的Key,下載對應版本的SDK並將其嵌入到移動應用中,便可以調用存取API,進行數據的任意操作。這樣就無需關注後台,專註於客戶端開發就行了。不知道大家有沒有遇到過類似的相見恨晚的網站或工具?
在接手一個項目的時候每次都會看到一大堆工具類,其實在字元串處理方面,android.text.TextUtils這個類就能勝任絕任多數的工作,比如:
- public static boolean isEmpty(@Nullable CharSequence str) 這個方法判斷字元串非null且非空,在對字元串進行判斷時可以不必if(str !=null str.length() &> 0)這樣判斷。
- public static CharSequence concat(CharSequence... text) 字元串連接。有很多字元串,你還在用+拼接或自己new 一個StringBufferStringBuilder么?其實這個方法已經幫我們做好了,用StringBuilder實現,進行字元串拼接時可以考慮使用這個方法。而且支持SpannableString。
- public static boolean isDigitsOnly(CharSequence str)
- public static boolean equals(CharSequence a, CharSequence b) 判斷兩個字元串對象的內容是否相等,內部進行了非null判斷
- public static String htmlEncode(String s) 將html代碼中的特殊字元進行轉碼處理
當判斷一些常用的URI的時候,可以用android.webkit.URLUtil這個工具類
android.text.format.DateUtils 這個類是Android提供的格式化日期的工具類。相對於我們經常使用的SimpleDateFormat類來說,DateUtils已經處理好國際化相關的問題,而且還封裝了一些很簡便的方法。
- public static String formatDateTime(Context context, long millis, int flags); 這個方法可以格式化日期和時間,接收三個參數,其中第三個參數flags決定輸出後的格式,如果只輸出日期的話:
DateUtils.formatDateTime(context,millis,DateUtils.FORMAT_SHOW_DATE)
如果想輸出年或月等等格式的話,就在DateUtils找對應的flags就可以。但是如果想輸出年、月、日、星期、日期等多重的結果的組合,可以通過|操作符來運算。
DateUtils.formatDateTime(context, millis,
DateUtils.FORMAT_SHOW_YEAR |
DateUtils.FORMAT_SHOW_DATE |
DateUtils.FORMAT_SHOW_WEEKDAY |
DateUtils.FORMAT_SHOW_TIME);
輸出的結果:2016年1月16日星期五 12:40
- public static boolean isToday(long when) 判斷日期是否是今天
- public static CharSequence getRelativeTimeSpanString(long startTime) 返回與當前的相對時間的字元串。這樣說有些抽象,比如微信的聊天列表上顯示的上一條信息的時間,如果是今天就顯示今天的時間,是昨天的就顯示昨天,再久遠一點的就顯示日期(但是這個方法的最大只能精確到天,不能像微信那樣顯示到幾秒前,幾分鐘前)。
- 還有tools schemas在新建Activity時IDE都會在xml的根節點默認加上tools的命名空間。
&
&
&
- 不會偷懶的程序員不是好程序員~,Studio1.5以上的版本滑鼠放在http://R.layout.xxx右鍵-Generator可以看到View Variables和View Fields,可以幫你初始化資源文件中有id的view,可以再也不用findViewById了(沒有的話請安裝JetBrains Plugin Repository :: Android Studio Prettify,2.0以上默認沒有,謝Alex Wang提醒)。
- 在處理異常方面,UncaughtExceptionHandler可以對全局的異常進行捕獲。測試崩潰可以使用Testin apm或bugly一些平台。
- 在Android中引用四大組件和Fragment這些重量級對象的時候要用WeakReference,常用的場景是static Handler持有Activity。
- 能用簡單的布局就用簡單的,特別是FrameLayout,它的layout_gravity屬性非常好用。
- BuildConfig.Debug可以判斷是不是debug版本,可以通過它來控制一些調試代碼,比如debug版本下打日誌和測試伺服器,release下不打日誌,用正式伺服器。
- View可以getContext(),所以在設計方法的時候,參數中如果有View了就別搞Context這個參數了。View還可以post(),有view的時候就別new Handler().post()了。
- 在給Handler發送消息的時候沒必要每次都new Message(),而是使用handler.obtainMessage(),它會先看看消息隊列裡面有沒有沒用的消息,如果有可以復用消息對象。
- 如果是在應用範圍內的廣播可以使用LocalBroadcastManager這個API(低版本用v4下的),更加安全高效,不必擔心別的app偽造廣播或收聽你的廣播做一些不好的事情。
- 可以找一找你常用的app裡面的開源許可,裡面可以看到使用了哪些具體的開源項目。android開發一般都使用什麼框架? - gzw1993 的回答
- 最後,善用Google和StackOverFlow,比百度和CSDN靠譜多了,比如想查下如何從代碼中設置TextView的drawLeft屬性,google搜索「android textview drawableLeft programmatically」即可,這是搜索到的第一條裡面的內容:
只能說這樣的搜索結果太贊了!
還用很多,推薦這個GitHub - jiang111/awesome-android-tips: Android tips 裡面非常多,看了才知道相見恨晚~
- google/material-design-icons ,material官方圖標,不會做圖標又想寫APP練手的同學的福音;
- ImageView的濾鏡效果,詳解Paint的setColorFilter(ColorFilter filter),一張純白純白圖標蛻變為彩色和漸變色圖標都不是事;
- 事件流編程,https://github.com/greenrobot/EventBus,一方面解耦各大組件之間的數據交互,再也不需要用AsyncTask這種上古時期的繁瑣怪物了。而且在一些類型的應用中,事件流編程有著獨一無二的優勢,比如,我在做一個IM應用時,需要先打開Socket-&>發送登陸信令-&>服務端返回應用層ACK後開始啟動心跳線程-&>發起交換私鑰命令-&>交換成功後打開IM通道,如果用傳統的回調函數來實現,很容易陷入多層花括弧嵌套的困境,但使用事件流編程的思維後,我們只需要emit一個個的事件,在on中執行具體的業務,一個業務的結尾處emit下一個事件,你甚至可以直接再包裝一層,組成下面這樣子:EventModle.getInstance()-&>flow("event1","event2","event3","event4");
邏輯是不是瞬間清晰了~;
- GitHub - wasabeef/awesome-android-ui: A curated list of awesome Android UI/UX libraries,再也不用擔心自己寫界面沒靈感了~
- http://pan.baidu.com/s/1qXdYqDY,我在Android Studio出來了一年後才從Eclipse中跳出來,Android Studio真是大大提高效率,誰用誰知道,真恨自己沒早點擺脫懶惰用~;
- SurfaceView,http://developer.android.com/reference/android/view/SurfaceView.html,Android的動畫機制進行偽3D變換時,卡頓的不行,但是在需要動畫的地方,簡單的覆蓋一個透明的SurfaceView來做,極大的提升流暢性;
- arraycopy(src, srcPos, dest, destPos, length)方法,瞬間擺脫Low到家的for循環來拷貝數組
- 在Binder間傳送序列化對象時,Bundle中不要用Parceble,要用Json序列化後的String!不然會有莫名其妙的bug
- 進行類的單例化時,用這個就OK:
public class myclass{
//some property..
// some mothod
public static class HOLDER {
public myclass instance = myclass();
} public static myclass getInstance(){
return HOLDER.instance;}
}
不用再考慮其他什麼線程安全是一次同步還是兩次同步。
- 但凡和線程池/線程/同步/鎖等有關的實踐問題,盡量不要用Android的解決方案,如AsyncTask,而要用Java中已經歷經考驗的實踐方案 如FutureTask+ThreadPoolExecuters。
- 數組複製,請使用System.arrayCopy或Arrays.copyOf 實現,且在JAVA中後者基於前者實現。
- Android DataBinding,現在還沒有完全的雙向綁定,而且很多我們常用的屬性的getter和setter也沒有,需要我們手動wrapper,但我相信這些在未來都會有更便捷的方案的。
在實際Android開發過程確實會有很多相見恨晚的工具或網站出現,下面是我自己的一些分享。
源碼網站
https://github.com/googlesamples
Android系統每次推出一些新特性,Google都會寫一些Demo放在Github上,對於想要了解新特性怎麼玩的同學,肯定不能錯過它。
https://www.codota.com/
如果你不知道一個Android的類怎麼用,可以在Codota上面快速的找到很多不錯的示例代碼。
https://android-arsenal.com/
你是否還在為找不到合適的開源庫而苦惱,Android Arsenal這個網站已經幫你做了一定的分類,可以幫你提高不少效率。
https://android.googlesource.com/
Android所有的源代碼都在這裡,只需找到對應想要的模塊,用Git克隆下來即可。比如,我想要的framework代碼。
http://androidxref.com/
克隆Android一個模塊的代碼量是很多的,有時候我只想要幾個類的代碼怎麼辦?AndroidXRef這個網站可以讓你單獨搜索某個類,要哪幾個下載哪幾個即可。
http://grepcode.com/
除了AndroidXRef可以查看某個類的源代碼外,GrepCode同樣也能做到。而且GrepCode不限於Android的源碼,這裡也推薦一下。
源碼分析
源碼分析的網站很多,這裡舉幾個比較經典的網站。
http://a.codekk.com/
國內Android源碼分析的先驅,由滴滴的技術專家Trinea發起,坦白的講,這個項目對我的影響很大,我也從這裡開始體會源碼解讀的魅力的。
http://0xcc0xcd.com/p/index.php
老羅,羅昇陽的個人博客站點,很多人看過他博客裡面是如何分析Android和Chrome的源代碼的。非常好的一個網站,以前功力不夠沒能看懂文章,經過一段時間後再回去翻看一些文章,不得不贊。
http://gityuan.com/
GitYuan,MIUI系統工程師,他的博客經常分享Android系統源碼解讀的文章,質量很高。而且,更新頻率也很高!
https://github.com/LittleFriendsGroup/AndroidSdkSourceAnalysis
CJJ,豬場(網易)的開發者,由他帶領發起的Android SDK源碼解析,同樣推薦。
酷炫動畫
https://github.com/airbnb/lottie-android
Airbnb開源的動畫庫,為什麼推薦它,是因為它讓複雜酷炫的動畫效果輕鬆實現了,不僅提高工程師的效率而且性能非常客觀。我在YY工作,內部已經有一套和它實現原理一樣的框架,所以看到Lottie的時候,一點不覺得奇怪,考慮可能還有不少童鞋應該還不知道它,這裡再推薦一下。(PS:Lottie還有iOS、React Native、Web端的實現哦)
Crash搜集
https://bugly.qq.com/
Bugly,騰訊出品的SDK,對Crash搜集的體驗非常贊,能搜集到JNI層的奔潰以及監控線上的ANR問題。
https://try.crashlytics.com/
Crashlytics,國外的一個SDK,我自己沒用過,但是用過的朋友對它的評價頗高。
https://github.com/ACRA/acra
ARCA,一個開源的崩潰日誌搜集器,輕鬆讓你實現客戶端的崩潰日誌上傳到後台,如果你不喜歡接入別人家的SDK,可以使用它。有一個不足之處,就是它搜集不到JNI層的奔潰。
逆向分析
逆向分析工具太多,舉幾個經典的做例子。
https://github.com/skylot/jadx/
Jdax,輕輕一下,立馬讓apk寬衣解帶,下面是我拿知乎開刀的例子。
https://github.com/google/android-classyshark
Classyshark,輕鬆查看apk內部每個包的方法數,用了哪些開源庫,同樣拿知乎開刀做例子。
https://github.com/JesusFreke/smali/wiki/smalidea
smali代碼調試插件,你以為沒有拿到安卓Java源碼就不能調試了嗎?圖樣圖森破了吧。
https://www.hex-rays.com/products/ida/
IDA Pro,逆向大利器,不管你是smali還是so文件,照樣動態調試你。
注意,這些用來漲知識就好,別幹壞事!
AS插件
Android Studio插件很多,只推薦兩個我常用的。
https://github.com/mcharmas/android-parcelable-intellij-plugin
幫助繼承Parcelable的類自動生成相應代碼,在沒遇見它之前,手動寫過大量的Parcelable實現代碼,真的好痛苦。
https://github.com/zzz40500/GsonFormat
根據JSON數據快速生成Java實體類,又一波解放生產力。
調試利器
http://facebook.github.io/stetho/
Stetho,來自Facebook,它能做什麼?無需root,藉助Chrome可以查看SharePreferences和資料庫中的數據,此外還有網路抓包以及查看View樹等。
性能優化
http://hukai.me/
胡凱,騰訊開發者,翻譯了一系列的Google Android性能優化典範的文章。
https://hujiaweibujidao.github.io/
Hujiawei,魅族開發者,博客最近經常更新Android性能數據搜集統計的相關的文章,本人受益匪淺。
最後
零零散散大致就分享一下這些,順手也整理到我的技術視界 - 知乎專欄了。
歡迎關注微信公眾號:技術視界。
- fastlane/screengrab · GitHub 腳本化自動截圖(可以配置截哪些語言版本)
- http://www.methodscount.com/ 如果你被 64K Method 困擾,你可能需要它
- Vysor Chrome App,如果你 Demo App 時需要投影,它能省你不少事
ps: 和 screengrab 同一個作者的 fastlane/supply · GitHub 也值得推薦,實現 Google Play 上 App 發布的腳本化。fastlane/fastlane 里這樣的小工具不少,可以去翻翻看
pps: 最近的答案收藏總比點贊多,收藏後順手點個讚唄我來好好談談我的看法和感悟。仔細看了樓主的問題(特別是詳細描述),感覺題主的關心點是想知道什麼現成的工具和平台可以簡化Android App的開發,讓其更輕更有效率迭代更快。我就從這個出發點上來回答:
首先是在後端上,推薦用企業服務,而不是自己搭後端。比如,使用 Parse,或者是國內的 LeanCloud 。LeanCloud我好像聽人吐槽bug多,但是如果自己團隊來開發後台的話,照樣bug也會一堆,而且還把別人踩過的坑又重新來踩一遍。我自己做過demo,發現使用Parse(Facebook自己也在用)或者LeanCloud,的確讓 Android App 開發一下子快了一個級別。整個創業團隊只需要把精力讓在 App的交互和體驗上即可,而且項目轉型也可以很輕很快。如果實在LeanCloud無法滿足,那麼在創業初期,最好也租用雲服務,比如阿里雲,青雲之類的,而不是買伺服器自己從頭開始搭起。
其次在App端的話,則大規模使用開源庫(請站在巨人的肩膀上)。首先技術負責人把所有常用的Android開源庫都理清一遍,然後選項目需要的庫。另外在文檔方面,推薦兩個我自己篩選過的很好的文檔給創業團隊。(只推薦2個,因為Android文檔現在是太多而不是太少。在這個信息爆炸的時代,我們需要的是優質的技術文檔,同理還有能夠專註的技術人員):
1. Android best practice:futurice/android-best-practices · GitHub
中文版:android-best-practices/README.cn.md at master · futurice/android-best-practices · GitHub2. 對GitHub上的各大開源庫的收錄和分析:Trinea/android-open-project · GitHub另外再推薦一個人: JakeWharton (Jake Wharton) · GitHub (Jake Wharton:此人在Square,而Square也位列我之前所說的灣區四小龍之中)
最後一點,也是最重要的一點:能不做App就不做App。
我這一年來看了大量早期的創業項目,特別是技術不是很強的團隊。他們普遍都急著想做一個app出來,感覺好像沒有app就不能叫做創業公司,就沒法出去和人打招呼一樣。其實很多創業項目,微信公眾號的功能就能滿足。除非公眾號提供不了你的主打功能,不一定非要急著上app。開發app一來成本很大,二來容易把整個團隊精力消耗殆盡。所以還不如先用微信公眾號試試水,吸引一批種子用戶,看看用戶反饋,然後快速改進;這樣的模式更輕更快。---- 題外話 ----
有時遙想當年,在Facebook做Android和iOS開發,由於畢竟是大公司,裡面的自有工具,內部庫還有技術大牛都很豐富,所以基本上除了使用少數幾個經典開源庫之外,其他大部分都是自己寫,比如 Buck,FBNetworking,FBCache,FBImageLoader等等。這對於創業公司來說是完全不試用。一來沒人手,二來很容易碰到一個技術難點就把整個公司給陷進去了。現在想想,當年在大公司真是身在福中不知福啊。。。
--- END ---- Do have the faith in what you love這幾年一直專註在Android開發,主攻海外市場,國內也有做過,瀏覽器,新聞,電商還有其他一些領域都或多或少有些了解,別的不敢說,國內外各種工具與服務還了解得比較全,沒辦法,人不夠,工具服務來湊,這些工具服務幫了我們很大的忙,因此這題我還是可以答一答的。其實在另外一題里,我已經大致介紹了我用過的國外主流第三方服務:Android 開發:開始一個項目前,做好哪些準備可以事半功倍? - 湯濤的回答這裡我專門就工具服務展開說明下,同時補充介紹我推薦的國內第三方服務,每個類別盡量只推薦一個,太多選擇其實就是沒有選擇。
國內: LeanCloud,這個沒實際用過,身邊朋友反饋很好。
國外: Parse, 正如覃超所說,FB也在用,30qps免費限制,一般中小應用夠用。分享國內: ShareSDK,專業做社交分享。國外: 各社交平台自家SDK, 注意不同國家主流社交平台不同。評論國內:暢言, 基本抄的Disqus, 免費,算是良心產品了。國外:Disqus, 基本不用考慮其他家的,雖然確實有競品。廣告變現國內:百度 or 廣點通,兩個效果差不多。國外:FB or Google,做native廣告,效果最佳。支付國內: 支付寶, 微信國外: payssion, 專業做海外跨境收款的,能省很多事。簡訊驗證國內:沒用過,Google找一家最便宜的就行。國外:Fabric Digits, twitter出品,居然不要錢。灰度測試國內:AppAdhoc,移動AB測試國內最專業的一家。國外:optimizely, 支持Android, iOS, 直接在線改UI做AB測試, 三觀都要顛覆了。雲測國內:百度雲測試。國外:test in, 其實百度的也跑,國內的Android設備都賣到國外去了。客服國內:微客服, 有免費額度,中小應用夠用。國外:helpshift,國外最專業的客服平台。推廣國內:這個真不了解。國外:Appsflyer, 海外推廣為數不多的選擇之一。可視化分析國內:growingio, 還在內測中,linkedin數據分析大牛回國創業,據說黑科技,可以直接在app上實時查看各種轉化率數據。國外:appsee, 絕對黑科技,PM最愛,轉化率什麼的再也不怕上不去了,用過後我們團隊成員一致好評,在我的微信公眾號里有專門文章介紹使用體驗。----2015.11.27更新----網路優化國外:TwinPrime, 頗具特色的網路優化服務,目前正在嘗試中,可移步我另外一篇回答查看Android開發如何進行網路優化? - 湯濤的回答國內:暫時還沒發現同類產品,不過TwinPrime理論上是支持全球的。最後,給大家介紹傳說中的Android軍火庫,我很多東西都是在這裡面找的。國內: DevStore_移動互聯網企業運營解決方案整合平台國外:http://www.android-arsenal.com----2015.11.28更新----安利一下我的另外一篇回答,用心寫的都木有人看,好桑心呀。面試時,問哪些問題能試出一個 Android 應用開發者真正的水平? - 湯濤的回答最近剛開始運營一個微信公眾號AndroidTrending,裡面主要是Android開發最佳實踐,最好用的工具與服務的總結,如果大家感興趣,可以關注一下。做技術有捷徑,少走彎路即是。http://weixin.qq.com/r/6kxxaWbEHztgrSIK9xn4 (二維碼自動識別)
stetho ,一個可以不root情況下,輕鬆查閱持久化、本地資料庫等數據(其它功能有替代品,這個才是最爽的),從此Android debug數據時輕鬆多了。https://github.com/389273716/android-skill-summary/blob/master/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/%E8%BE%85%E5%8A%A9%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7.md各種插件工具推薦,該頁面下其它分類還有Android studio等各種插件、高級配置介紹
genymotion,這款虛擬機,完爆android的dalvik
一名自學成才的Android開發者怒答!
1. Google
做開發前完全是小白,真心不知道有Google這東西,只曉得百度,遇到問題直接百度,不是黑百度,百度在娛樂八卦方面確實靠譜,但是技術方面查出來的東西基本千篇一律,有些答案甚至還會起到誤導作用,直到有一天我的老大告訴我用Google,我才知道這個世界上原來還有另外一個搜索引擎,那個時候Google還沒有被牆,從此算是邁過了一道坎。。。自此便成為腦殘G粉。2. stackoverflow
用Google之後搜索出來的東西還是習慣性的點擊中文結果,直到有一天我發現基本每次搜索排名第一的都是這個網站,於是嘗試著點進去用我蹩腳的英語閱讀,之後真是相見恨晚的感覺啊,上面幾乎能搜到你遇到的絕大部分問題,某種程度上來說推薦用Google搜索的原因之一是因為排名靠前的答案基本都在stackoverflow上。3. GitHub
Google+stackoverflow基本上能解決開發中遇到的大部分「奇葩」問題了,但是開發到一定程度你需要進一步提升自己的技能,這個時候GitHub簡直就是快速提升必備,在上面可以找到很多第三方組件,不用重複發明輪子,也可以直接閱讀牛人們的代碼,吸取他們的精華,代碼讀的多了不知不覺有一種質的飛越,直到最後你會開源自己的項目,大力擁抱開源社區,這是接觸了另一個世界。4. Terminal
命令行對於一般的開發基本接觸不到,大部分開發都是GUI,最開始接觸終端確實很抵觸,但是一旦上手之後簡直愛不釋手,git, adb, sqlite, gradle, home brew, ruby, vim等直接一個終端搞定,命令行操作不但讓你了解其原理,在別人眼裡你就是個牛人!(mac上公認最好用的終端是iTerm)5. Sublime
接觸終端之後接觸了vim這種輕量級編輯器,以前只知道IDE的概念,卻原來不知道還有這麼一群輕量級編輯器的存在,開始學習了一段vim,但是感覺上手有點難,也需要不少學習成本,之後同事推薦了sublime text,試用後便欲罷不能了,受夠了IDE啟動、編譯的緩慢過程,現在查看並編譯源碼從來都是sublime + iTerm + gradle, 簡單快速,至於你們提到的導入eclipse或者studio之類的簡直太low了6. Android學習之路
我當時學習Android的時候資料哪像現在這麼多,開源社區也沒有現在這麼流行,所以學習起來很痛苦,很理解一些新手們無從下手的心情,為此寫了一篇博客,誇張點說這篇博客已經公認為Android新手們的學習指南,甚至改變了一些人的命運。如果你現在才剛知道,也許相見恨晚。7. 最後推薦下國內與國外Android開發一些不錯的博客
當然我自認為我的博客還是非常有質量的 stormzhang博客精華國內博客列表:android-cn/android-dev-cn · GitHub
國外博客列表:android-cn/android-dev-com · GitHub8. Android Studio + Gradle我學習的時候可沒有這兩個這麼棒的工具,但是身為Android開發現在你還不知道這兩個工具就out了,簡直是Android開發的未來,提升你開發效率的同時還能提升你的逼格。怎麼學習?跟著我的博客帶你飛:Android Studio系列教程一--下載與安裝Android Studio系列教程二--基本設置與運行Android Studio系列教程三--快捷鍵Android Studio系列教程四--Gradle基礎Android Studio系列教程五--Gradle命令詳解與導入第三方包Android Studio系列教程六--Gradle多渠道打包題主說的是簡化後端開發的。 @覃超已經說的很好了。
我那再說點其他的。崩潰統計- 友盟
- BugHD — 實時監控APP的崩潰分析工具
- TalkingData
用戶統計/分享/自動更新/應用內測
- 友盟
- ShareSDK
- http://Fir.im
消息推送
- 個推
- 騰訊信鴿
- 小米推送
- 極光推送
自動化測試
- Testin
- 等等
程序加固
- 梆梆加固
- 愛加密
- 360加固
- Dexguard
以下是Android開發的
在線查看Android源代碼,尤其適合沒下載源碼以及需要查看特定版本實現- GrepCode.com(所有版本的Android源碼以及其他的著名項目代碼,比如Eclipse,JDK)
- AndroidXRef (同上)
- android Git repositories(Google 官方源)
示例代碼搜索,API不會用怎麼辦,搜索個示例唄,從百萬個來源中尋找示例代碼。
- Great Code Examples Snippets
- https://searchcode.com/
Android趨勢,了解最近大家在用什麼,哪個項目火了
- Android Weekly
- Trending Java repositories on GitHub today · GitHub
- http://www.androidweekly.cn/ 國內版Android Weekly
Android知識點
- Home | CodePath Android Cliffnotes 針對各種知識點提供入門教程
其他
- Google,嘗試一下用Google English版本,使用英文關鍵詞,可能會比中文找到更好的解決方案
- 翻牆(sorry,此部分。被人舉報。 @王堅 ,抄襲我答案不提來源不說,順道把我舉報了)
GitHub · Build software better, together.Stack Overflow脈脈不得語的技術博客AndroidDevToolsAndroid開發者網址導航六大BaaS產品推薦:移動開發必備的後端雲服務-CSDN.NET
說一下工具:開發工具:Android Studio內存調試工具:MAT函數流程調試工具:Systrace和Method Trace代碼託管:Github團隊協作:Tower
專註客戶端開發,不想自己還寫後端,那就用Bmob之類的雲平台咯。
補充幾個利器
- Gradle
Android Studio默認的自動化構建工具,可以單獨用命令行運行。相比Maven、Ant,Gradle更易於自定義配置。如果有自定義構建的需求,Gradle可以節省巨大精力。如製作一個應用的多個變種版本時特別有用;例如友盟渠道打包,針對各個渠道做不同的渠道標記,一次性生成所有渠道包;在各個變種版本的包名、部分資源(圖片、字元串、顏色等)、部分代碼邏輯、AndroidManifest組件聲明、簽名、混淆都有所不同時,Gradle都能輕鬆搞定,如不同渠道需要定製不同的內容。構建腳本寫好後,每次更新完共同部分代碼後,就能很輕鬆的一次性生成所有變種。
- Gist
如果需要和別人分享某小段代碼,或者是自己要保存短代碼片段在雲端,gist是個很好的選擇,因為gist會自動用git對每次保存的代碼文本進行維護,我們就可以隨時查看歷史數據,大膽進行新的更改。
推薦使用GistBox,對Gist做了一層漂亮的封裝,它的口號是The Beautiful Way to Organize Code Snippets。- Cmd Markdown 編輯閱讀器
如果需要寫Markdown文檔,有個好用的Markdown在線編輯器可以少操不少心,此非作業部落出品的Cmd Markdown 編輯閱讀器莫屬。支持實時同步預覽,實時保存數據在雲端無需手動保存。
為知筆記現在也在全平台支持Markdown編輯和預覽,但不能實時同步預覽,有跨平台編輯的需要也可使用。Android Asset Studio拿來簡單處理圖片和找一些圖標太方便了。再也不用去platforms目錄翻圖標了。Stack Overflow雖然我是英語渣,但是這網站救過我好多回,幾次遇到非常麻煩的問題都在上面找到了答案。Material Design這個翻譯好的Material Design設計語言規範,幫到我這個英語渣,我看了好幾遍。還有優秀的博客Trinea,以及他整理的GitHub開源項目列表。
我來寫點自己的開發經驗吧,供大家參考。1. as熟悉快捷鍵 double shift 和 ctrl +s 我就不說了 我覺得比較重要的是 移動游標和切換tab 快捷鍵的話 ,因為我是自定義沿用的 Emacs的,所以就不列舉,這個快捷鍵的重要性在於你可以脫離滑鼠編程,作為一個程序員還用啥滑鼠,不用滑鼠看起來很炫酷好么!!,而且效率不是高了一點。2.bmob 適合初學者和獨立開發者 不用自己去寫後台,滿足基本要求。3.百度地圖 定位和poi檢索都很好用,導航也實現的很簡單。 ps:做地理位置識別時,建議使用poi檢索,用定位返回的數據很奇怪,什麼多少路多少號,看起來很奇怪。4.github 程序員必備,找輪子用輪子上傳輪子交友都很好喲。也可以作為學習別人編碼風格和設計模式的好去處。5.bugly bug檢測平台 針對安卓機型有時候會出現迷之bug的問題,可以得到解決。6.typetest TypingTrainer.com一個打字很慢或者一指禪的程序員都是low比程序員,讓自己的手指飛起來吧。話說我指法也不對,所以最近也在慢慢練。大家可以在評論里貼出自己的測試成績,來虐我T。T 7.csdn csdn的話,成塊的文章比較多,適合閑暇無聊的時候看看。8.butterknife 一個大牛的開源庫(有as插件),通過注入來省略掉findviewbyId和點擊事件的書寫,比較好用。9.databinding 這個我不是很好評價,我個人還沒發現它的特別好用的地方,可能是境界問題=。=,畢竟還距離大牛很遠。10.伯樂在線 安卓 - 伯樂在線個人覺得還不錯,乾貨比較多,我覺得和csdn差不多,編程無聊了可以看看學習一下,還有相親模塊好像。。(是不是應該收點廣告費)。11.翻牆出去的話 就有很多啦,不過我英文不是特別好,看英文也不是特別習慣,所以一般博客很少去看外國的,這是一個需要改正的。恩,等找到好的再跟大家推薦。。。。。。。。。。。。。。。。。。。。。。手動分割線12.國外的話,推薦實驗屋的gradle教程,乾貨滿滿,還有就是我們的老本家,Android developer,還是應該多去逛逛的。13.安卓近年形式不是特別好,但是大家努力加油,肯定會有比較好的結果的。加油!最後的最後,求贊。。。
破解的smalidea
保持水平不落伍每周要看
每周一期 Android Weekly國內有 App開發 | 帖子版塊分類解決問題
Stack Overflow找輪子
https://android-arsenal.com/最大的同性交流社區
GitHub · Build software better, together.系統
Mac OS X 或者 Linux 系統 能無痛NDK開發模擬器
盡量用真機,實在沒有的情況下使用 Genymotion設計
如果沒有UI設計師,自己想做漂亮但是懶得思考,那麼就抄。Inspired UI - Mobile Apps Design Patterns [Android]Dribbble - Show and tell for designers2016-09-02 更新GitHub - wequick/Small: A small framework to split app into small parts強烈推薦,最好的插件化,分包化開發方案Android Developers
推薦一個:Android-Dev-Favorites(Android開發者的收藏夾)Github地址: https://github.com/ruijun/Android-Dev-Favorites
推薦閱讀:
※請問Android有什麼快速開發的類庫,插件,工具嗎?
※安卓手機不用360手機衛士會怎麼樣?
※「超級手機病毒 XXshenqi.apk / XX 神器」是怎麼回事?
※如何評價蜻蜓 FM 偽造用戶活躍度等數據?
※有哪些好用的騎行應用推薦?推薦理由是什麼?