發表文章

目前顯示的是有「developer」標籤的文章

RxJava 顛覆傳統

11/11 看完  给 Android 开发者的 RxJava 详解 ,我想是沒辦法寫的比這篇好的。直接看吧! 11/12 看到一篇手把手教的 slide 推薦大家看, Reactive X 响应式编程 。 這篇最後以瑪莉兄弟的遊戲製作來教學,真是太有感了。 11/13 那些年我们错过的响应式编程  這篇還不錯,可是最後幾段沒有很了解,有時間在反覆咀嚼。 RxJava 原始碼解析系列文章 谜之RxJava (一) —— 最基本的观察者模式 谜之RxJava (二) —— Magic Lift 迷之RxJava (三)—— 线程切换 迷之RxJava(四)—— Retrofit和RxJava的基情 我都是看這邊介紹的文章逐篇看,慢慢體會 RxJava 的強大,相信自己一定會學會,就看吧! Awesome-RxJava

Proguard 程式碼混淆

踏入 Android 開發,雖然早已注意到 proguard 這阻止反編譯的混淆程式碼的作法,可是一點也不擔心有人將自己的 apk 反編譯,因為真的沒什麼好看的,看了還浪費時間。 XD 不過倒是擔心被看到寫那麼爛的 Code,所以還是稍作些了解 proguard 的用法。 Step 1: 打開 app.gradle  (專案目錄下 app 裡的 build.gradle) 預設 buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile ( 'proguard-android.txt' ), 'proguard-rules.pro' } } 將 minifyEnabled false 改成 true,表示啟用 proguard proguard-android.txt 是預設的混淆文件,路徑在 ${sdk.dir}/tools/proguard/proguard-android.txt proguard-rules.pro 是在專案目錄下 app 裡,用來設定那些檔案不要混淆的一些設定。 詳細語法可以參考下方連結或是問問 google 大神,這邊就不占版面了。 proguard-rules.pro 裡面常用的 class 就不要混淆了,以免因混淆後找不到相應的 class,造成編譯異常。 以下是常用的 -keep public class * extends Android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.Back...

Android M run-time permissions request

圖片
首次在 Google Play Developer Console 看到 "當機與ANR" 有一筆 Exception 出現 訊息如下 java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=com.google.android.GoogleCamera/com.android.camera.CaptureActivity clip={text/uri-list U:file:///storage/emulated/0/Pictures/Temp/temp.png} (has extras) } from ProcessRecord{82c52a4 13909:tools.sporting.com.pictranslate/u0a36} (pid=13909, uid=10036) with revoked permission android.permission.CAMERA Google 大神說從 Android M 以上版本的權限取得有改變。 除了以往 mainifests 要求的權限外,在執行時期還要確認使用者是否允許權限使用, 使用者不允許的話還要說明權限需求的原因。 那些權限須要特別注意呢?   Android 6.0 新增的權限模式 - 執行時要求權限 (Runtime Permissions) ----------------- 後記 手邊沒有Android M的手機可以測試,昨天改的版本是否可正常運作在 Android M以上版本有待確認。 看完 Issue 188073 的討論後,我的理解是以往透過 intent 去使用系統的 MediaStore.ACTION_IMAGE_CAPTURE、MediaStore.ACTION_VIDEO_CAPTURE、Intent.ACTION_CALL 是不須要在 mainifests 宣告權限,可是在這 Android M 以上版本的政策實施後,除了原始 app 須要宣告權限,還要在呼叫 intent 時確認權限的取得,到下一個 camera app 後,會...