是咁的,話說有朋友有部國內版Samsung Galaxy S6 (SM-G9209),問我點解無Google Play Store,裝Apps好麻煩,可唔可以裝返Google Play Store。
事前準備:
1. 要root/裝 Google Play Service,當然係先裝個 custom recovery。用開TWRP,當然係上TWRP網站下載對應型號的recovery
2. 喺Samsung機上改recovery,當然係要用Odin,所以亦上Odin網站下載了
3. Google Play Service安裝檔,當然係上OpenGApps下載。S6 CPU係ARM64,Android Version係6,唔想裝咁多嘢,所以揀nano variant
4. Root的部份,以往會用SuperSU,但今時今日識用梗係用Magisk,Open source得嚟仲可以自由隱藏root,唔洗root完連開個Pokemon Go都唔得
5. 要用Odin成功連接PC與S6,下載Samsung Android USB driver
萬事俱備(我以為係),開工。
過程:
1. 安裝 Samsung Android USB driver,關S6,按vol down+home+power進入download mode,連接PC,運行Odin,成功!
2.嘗試用Odin寫入TWRP recovery,出現"CROM locked"而失敗;上網搵到原來要上Samsung Apps下載一個叫CROM Service的App去unlock bootloader先;
3. Unlock了bootloader同入download mode,用Odin寫入TWRP recovery,成功!但reboot後發現recovery就置換回原本的;
4. 試了幾次都如是,所以先嘗試root了機先,由於無TWRP,所以Magisk亦裝不了,唯有用ChainFire的CF-Auto-Root,下載了相應型號的CF-Auto-Root,再用Odin寫入,成功了!
5. 因為始終想用Magisk,所以root了後,dump了boot partition出來,用Magisk Manager的Patch功能來改Boot partition,然後用SuperSU的unroot清除CF-Auto-Root,最後再用Odin寫入已Patch的Magisk Boot Partition,成功用Magisk root!
6. 在已root的情況下寫入TWRP不同version,但皆無法進入custom recovery,反反覆覆嘗試都失敗,唯有回復至原廠recovery;
7. 在沒有custom recovery的情況下,下載ChainFire的FlashFire app,嘗試安裝Google Play Service,但出現error說system partition不夠空間;
8. 下載所需空間更小的pico variant,再次嘗試,但都係出現system partition空間不足情況。翻查記錄檔,原來只差1xx KB左右的空間。上網找資料,原來可以用gapps-config檔可微調安裝的元件。
9. 以gapps-config排除了Google TTS元件,終於成功安裝Google Play Service。Reboot 後終於見到Google登入和Google Play Store!
10. 但會每隔一段時間出現"Google Play服務已終止",查logcat說取不到location權限。最後進入應用程式,查看每一個與Google有關的應用,檢查權限,發現Google Play Service一個權限也沒被授予,設定完權限後,已再沒有"Google Play服務已終止",所有功能亦正常使用,成功了!
結案!
2017年10月25日星期三
一次為國內版Samsung Galaxy S6 (SM-G9209) root機及安裝 Google Service過程
2017年2月6日星期一
Privacy Policy of "WifiDuck"
This Privacy Policy is meant to help you understand what data this
app collects, why this app collects it and what this app does with it.
Information this app collects
"WifDuck" does NOT process or store any data on our servers.
Privacy Policy of "ContactSyncDuck for Facebook"
This Privacy Policy is meant to help you understand what data this app collects, why this app collects it and what this app does with it.
Information this app collects
"ContactSyncDuck for Facebook" DO NOT store any data on our servers. NO data is processed and stored on our servers. NO device-specific information is collected and we DO NOT associate your device identifiers with the facebook id.
Why it is collected and how we use it
The facebook id is stored only on your device. This app use the facebook id to download the profile picture when this app runs on your device.
How the data is transmitted
The facebook id is transmitted to Facebook servers (not our servers) using encrypted https traffic.
How to request data deletion
Since we do not store any data on our servers. You need not request data deletion. You can delete the facebook id you entered in the note filed on your contacts whenever you want.
2017年1月9日星期一
Java Program存取使用 Let's encrypt證書的 SSL網站
為推動全網使用https,一群大機構贊助成立了 Let's encrypt為網站發出免費SSL證書。因為免費、安全、申請及更新全自動化等因素,可以預期越來越多網站會使用 Let's encrypt證書。
現時 Let's encrypt所發出的證書由 IdenTrust的DST Root CA X3作為根憑證,一般的較近代的系統及瀏覽器都已預設信任,認受性已很高。
不過,如果所使用的JDK版本較舊(Java 7 < 7u111, Java 8 < 8u101),而又有種種原因未能即時升級的話,在其運行的程式遇上 Let's encrypt的證書時便會發生錯誤:javax.net.ssl.SSLHandshakeException。
要解決的話,只需於 IdenTrust網站上下載 DST Root CA X3證書,匯入至有關 JDK的 cacerts檔案內便可:
1. 下載DST Root CA X3證書,儲存為檔案 DSTRootCAX3.pem,內容像這樣:
-----BEGIN CERTIFICATE-----
上述連結的下載內若
-----END CERTIFICATE-----
2. 以JDK內的 keytool程式匯入該證書至 cacerts內,例如:
/jrockit64_160_28/jre/bin/keytool -trustcacerts -keystore /jrockit64_160_28/jre/lib/security/cacerts -storepass changeit -noprompt -importcert -alias dstrootcax3 -file DSTRootCAX3.pem
當中:cacerts的檔案位置一般在以下地方,密碼為: changeit
{jdkroot}/jre/lib/security/cacerts
完成後,便不會發生 javax.net.ssl.SSLHandshakeException 錯誤了。
2015年6月17日星期三
同步Facebook頭像相片至電話聯絡人
電話嘅聯絡人可以存相片這個功能歷史攸久 ,即使以往嘅feature phone都已經有呢個功能。但相信一般人唔會逐個逐個為朋友影相再放入聯絡人,所以直至智能電話+Facebook的有機結合,電話聯絡人才會有較多機會有相片出現。
最初用HTC Sense嘅電話,入面我認為做得最好嘅就係聯絡人同Facebook嘅連結,因為一般聯絡人嘅名稱同Facebook friend嘅名稱唔相同,HTC Sense俾人可以手動連結,不單止咁,HTC Sense係會將有關的連結記錄(主要係facebook id)存儲喺相關聯絡人入面嘅備註欄位內。咁樣做嘅優點,就係即使你有日清除資料(如回復出廠設定)或換機(但只限同樣係HTC機),只要再同步,所有連結返晒嚟,唔洗再設定過!
後來轉了用非HTC Sense嘅電話,無咗呢個功能,但好在找到UberSync,識得認HTC Sense的記錄,非常好,一直用到今日。
但由於Facebook於1/5/2015開始強制使用新Graph API,而新的API限制程式取得Friend List,因此令市面上大部份使用Graph API同步Facebook頭像相片至電話聯絡人的Apps(如一直用開很好用的 UberSync)基本上變成無用,整個phonebook變回無相狀態。
後來發現,原來用facebook id下載用戶Facebook頭像相片係唔洗任何權限的,所以花咗啲時間,寫了ContactSyncDuck for Facebook 呢個App會讀取聯絡人內備註欄有facebook id的資料,再下載Facebook頭像相片至聯絡人。呢個App除了識讀HTC Sense所記下的連結記錄外,你亦可手動新增,格式為:<Facebook>id:facebookid</Facebook>
呢個App還有個好處,即使該人不是你的Facebook Friend,你照樣可以在備註欄新增該facebook id,一樣可以下載頭像相片。
至於點樣可以知道某Facebook朋友的facebook id呢?你可以開啟該人的Facebook page,然後用browser的檢視原始碼功能,搜尋profile id就可以搵到。但係簡單啲,可以用呢個網頁嘅功能去搵。
另外,如果該人更新了頭像相片,呢個App都會識得在下次同步時下載最新相片。
用咗之後,我個電話聯絡人終於回復番有相片嘅狀態啦!
2014年8月28日星期四
一個在Windows下處理非Unicode程式文字亂碼的茶包
最近遇到一部英文Windows 7要使用老舊Visual Foxpro程式處理中文字的個案。老問題,在Windows 2000年代已有答案,可以設定”非Unicode程式的語言“中,更改為中文(繁體,台灣)便可。個案中相關人員已作了上述設定,使用的程式亦可以正常顯示中文,但就是在處理copy & paste至其他程式時(即在Visual Foxpro程式內copy中文,再於其他程式內paste),會出現亂碼。
可能由於很少處理這類個案,一時也想不出辦法。最後得同事指點,原來在copy的時候,需要輸入法置於相應的模式,例如個案中,需要為電腦增加CH 中文(繁體,台灣)下任一輸入法,可以是中文(繁體)-美式鍵盤,再選用該輸入法後才copy & paste。
茶包射了,簡單記錄於此,以免日後再浪費時間。
p.s. 茶包 - trouble, 射茶包當然就係troubleshoot啦,咁troubleshooter咪就係茶包射手囉!
2014年5月26日星期一
使用Windows檔案系統加密 (Encrypting File System, EFS)必須注意的事項
話說自Windows 2000(更耐之前不肯定)開始,便為NTFS檔案系統提供加密功能(Encrypting File System, EFS),供用戶把硬碟內某目錄或檔案加密(檔案或目錄內容>進階>加密內容),由於使用方法實在太簡單,用戶不用為個別加密另設密碼,所以很多時都會令用戶忽略了一些重要事情,引致悲劇的發生....
簡單來說,當用戶第一次用EFS時,系統會為用戶產生一RSA證書。EFS會為每個要加密的檔案產生一條獨立加密鑰,使用該加密鑰進行對稱加密(因為對稱加密速度快很多),再以之前為用戶產生的RSA證書內的公鑰將檔案加密鑰進行非對稱加密,加密後的密鑰會與加密後的檔案內容一同儲存。每當用戶要存取加了密的檔案,便以RSA證書內的私鑰為加密鑰進行解密,再以解密後的加密鑰對檔案解密。
問題係,因為使用太方便,用戶很多時會忘記特別為上述的RSA證書進行備份。最後,當用戶為該電腦進行系統重裝(如Windows損壞重裝、以新安裝方式進行升級等等),重裝回來後便會發現一個不可逆轉的悲劇發生了:重要檔案(已加密)開啟不了!
呢個悲劇我見過很多次,亦發生過自己身上(好在那次數日後發現是之前無意中轉移過有關RSA證書至另一PC上),所以,如有使用Windows EFS,第一件事便是備份有關的RSA證書,方法也不複雜,可參考這兒和這兒。
希望有關悲劇不會發生在你身上!