2012年3月1日
摘要:
基于官方文檔2013.12.19最后一次改動。
翻譯人:Weir Zhang (zh.weir)
旁白:水平有限,很多地方只是意譯。不準確的地方,大家以原版文檔為準。
原版地址:http://google-styleguide.googlecode.com/svn/trunk/javaguide.html
一、介紹
本文檔為Google Java編程規范的完整定義。依照此規范編寫的Java源碼文件可以被稱為Google Style。
和其他編程規范指南一樣,規范不僅包括了代碼的結構美學,也包括了其他一些業界約定俗成的公約和普遍采用的標準。本文檔中的規范基本都是業界已經達成共識的標準,我們盡量避免去定義那些還存在爭議的地方。
1.1 術語說明
本文檔除非特殊說明,否則:
a、class(類)統指普通的class類型、enum枚舉類型、interfa
閱讀全文
摘要: 背景
事實上,在前些年,隨著wifi的興起,特別是wifi direct的推出,藍牙一度沒落了。然而近一兩年隨著移動智能終端指數級增長,穿戴式設備興起,藍牙4.0推出,特別是低功耗藍牙(BLE)的推出,藍牙又煥發了新的青春氣息。
此次藍牙的復興,可以明顯感覺出人們對藍牙與wifi訴求的差異化。wifi的優勢在于傳輸速度,大文件、塊數據的傳輸,正很快地向wifi direct切換。而藍牙的優勢在于多樣化設備間的無線連接和數據共享。
藍牙之所以有這個優勢,我想主要原因是藍牙歷史悠久,有相當多現成的設備間通信標準和協議。另外藍牙模塊成本低、體積小,非常適合應用于穿戴式設備等小型設備。加之新推出的低功耗藍牙將耗電量降得非常低,穿戴設備用一個紐扣電池就能用好幾個月甚至幾年。
經典藍牙應用場景包括藍牙耳機、藍牙音箱、藍牙鼠標、藍牙鍵盤等。而隨著低功耗藍牙的推出,穿戴式設備開始流行起來,例如手環、手表、防丟掛件等。
穿戴式設備對藍牙來說預示著一種趨勢。那就是在Android與Arduino讓一切物體智能起來的時代,藍牙可以作為一種強大穩定的無線通信技術,讓一切
閱讀全文
摘要: 一、關鍵概念:
Generic Attribute Profile (GATT)
通過BLE連接,讀寫屬性類小數據的Profile通用規范。現在所有的BLE應用Profile都是基于GATT的。
Attribute Protocol (ATT)
GATT是基于ATT Protocol的。ATT針對BLE設備做了專門的優化,具體就是在傳輸過程中使用盡量少的數據。每個屬性都有一個唯一的UUID,屬性將以characteristics and services的形式傳輸。
Characteristic
Characteristic可以理解為一個數據類型,它包括一個value和0至多個對次value的描述(Descriptor)。
Descriptor
對Characteristic的描述,例如范圍、計量單位等。
Service
Characteristic的集合。例如一個service叫做“Heart Rate Monitor”,它可能包含多個Characteris
閱讀全文
摘要: 從最近幾年開始,做平臺的公司都流行起Open API。這是一個非常好的理念,也受到廣大開發者的歡迎。如今,開發一款軟件,你可以很容易地集成微博、微信、人人網等流行社交媒介的分享功能,做一個社交應用變得越來越簡單。
主流社交媒介要集成到第三方應用中,最重要的入口就是安全便捷的授權認證系統。讓用戶在享受一鍵分享和各種社交樂趣的同時,又不用擔心帳號安全和隱私泄露等問題。而對于一些有特殊目的的組織或個人來說,攻占這個授權認證系統意味著自己獲取了信息傳播的入口和渠道,數量龐大地社交入口往往能帶來巨大的社會效應。所以,這個入口就成了軟件安全攻防雙方的必爭之地。
而本文所要講的就是當前最為流行的新浪微博Android客戶端SSO授權認證入口的一個安全缺陷。此缺陷使得第三方APK在一定條件下可以不通過授權,在不需要人為操作的情況下就可以操作Android手機用戶的微博。包括關注、評論、發微博等OpenAPI中提供的功能。
閱讀全文
摘要: 最近微信出了5.0,新增了游戲中心,并內置了一個經典游戲《飛機大戰》。游戲其實很簡單,但由于可以和好友一起競爭排名,一時間受到大家的追捧,小伙伴們進入“全民打飛機”時代。
ios 版出來不久就被破解出了無敵模式。Android版出后好像一直風平浪靜。周末無事,加之看雪zmworm版主邀請,于是花了一天的工夫研究了下。也出了個Android版的無敵模式增強版。具體來說就是無敵、雙排子彈加無限炸彈。當然,這個不是重點,我們的重點當然是技術細節啦!
微信的游戲繼承了Android版手機QQ游戲中心的思想,也采用插件動態加載方式。具體來說,就是插件及游戲以jar包形式存在,jar包中有classes.dex及其他資源文件,在運行時動態加載資源及classes.dex代碼。這樣的好處是靈活管理,易于擴展。以后更多的游戲只要上架到微信的服務器,用戶就能在微信應用內部下載、安裝、運行。具體原理可以參考我2011年的一篇文章《Android類動態加載技術》 。
當然,那篇文章講的只是基本原理,而微信在代碼動態加載方面則走得更遠。針對插件的管理
閱讀全文
摘要: Bluebox Security在7月3號的時候,在官網上發布了一個據稱99% Android機器都有的一個漏洞。國內最早在4號開始有媒體報道,并持續升溫。該漏洞可使攻擊者在不更改Android應用程序的開發者簽名的情況下,對APK代碼進行修改。并且,這個漏洞涉及到從1.6版本至今全部的Android版本,換句話說,這4年中生產的9億設備,即當今市場上99%的Android產品都面臨這一問題。
看到這樣的報道,一開始我和我的小伙伴們都不敢相信。因為簽名機制用了這么多年,多少大腦袋厚眼鏡的天才們想要顛覆都沒搞定,Bluebox Security怎么可能搞定的呢?不過,由于好奇心驅使,我開始查看Bluebox Security官方的說法:《UNCOVERING ANDROID MASTER KEY THAT MAKES 99% OF DEVICES VULNERABLE》,我意識到,這個問題應該不是簽名機制本身的問題,而是Android安裝APK過程中的校驗存在漏洞。
如果是APK安裝校驗簽名的漏洞,而這個Bug又從1.6開始就有,那
閱讀全文
摘要: 昨天想到一個點子,需要訪問股票行情。于是在網上搜了一下免費的股市行情的接口。發現新浪股票的數據接口比較穩定,于是就用它了。
網上對于新浪股票的數據接口介紹比較詳細,并且實現也很簡單,所以花了一下午就基本完成了。想到大家開發Android應用可能也會需要訪問股市行情,特此將資料整理在此,并附上Javadoc文檔和一個小Demo,以便后來人開發更為便捷。
閱讀全文