Wednesday, August 16, 2017

2017 又再 Android

好日唔寫下 android app, 每次開番個 android studio 都有好多新野.
以下係一邊開一邊記低既, 可能有D野白痴左, 希望唔會衰太多.  唔理咁多, 行到先再諗.

第一件事, 一開就話由 2.2.2 升上 2.3.2, 無問題, go ahead 升左先.
呢樣唔需要理掛, 反正無選擇, 直升就係.

今次主要目的, 係睇下點解家陣 IAmHere  回傳既地址, 好多時會出左空白.
想睇下有無可能記低每日回傳既資料, 有時間夜晚再研究.

升級完 2.3.2 之後, 又會問 Gradle Plugin 既升級, 去吧.  唔知今次會唔會又有新問題.

按左 [Updaate], 就慢慢等佢 refresh 左個 "IAmHere" Gradle project.
唔知係咪公司機慢, 又要經 proxy 上網, 真係等左好耐, 但下面既 status 不斷變緊, 唔係 hang 機.
大約 5 分鐘後, 就用得喇......成喇, 成半年無掂過, 真係有D唔識用了.

有理無理, 按個 play 睇下先, 都唔記得點起個 VM 出黎, 唔知有無剷其他野果陣剷左.
好在, 仲有一個 Virtual Device,  雖然 Nexus 5 舊左D. 唔理咁多, 試住先.  [OK] 行到再改.

頂...又 out-of-date, 照 [OK]

Default 2GB 玩住先.

又係等佢裝, 慢慢等, 唔好心急, 比D耐性, 好快就裝完.


之後起左個 VM 出黎,

再等佢 build 一輪, 終於見到了.


用 VM 唔係好記得可以點試, 因為個 app 要收 SMS 再回傳.  都係要用番真機至試得.
手頭得一部手機, 試條鐵咩.....原來, 真係有條鐵比我試.

唔知係咪新加既, 定係我一直無留意, 佢個 VM 右邊有條 menu bar.

按落去最底既 "...", 可以 set location,

仲可以試電話收 sms

收到又認到, 就係唔識出地址....呢個就係我最近成日見既問題, 有回傳, 無地址.

未知係 emulator 既問題, 定真係 hit 到我想 trace 既 bug.
但可以出現到, 都係一個希望, 準備 debug 去.

嘗試行 google map 睇下有無地圖, 佢話我無 network 添.

再上網搵下, 佢話有得設定 network 既:  Set Up Android Emulator Networking

不過, 佢既  Extended controls 係咁 (iOS 有少少唔同樣, 重點係內容):


但係我果個係咁, 無呢個 proxy setting 既?

唔通因為我個 VM 太舊?  試下起個新既再來.

起左個新既, 跟番我D機用 android 6.0 都係唔得.  唔通真係只有 iOS 既 android studio 至得.
無得設定 proxy 就上唔到網, 唔比我睇 google map 添.
唯有番去唔經 proxy 再試.

每 次 close 再開, 都仲係有好多野要 update, Android D 野轉得快, 我幾乎一年至玩一陣, 次次都好多升級.  有排至升齊.

或者升哂再試下.


Tuesday, January 3, 2017

.gitignore

Android project 用 git 既話, 入面個 .gitignore 我仲執緊.
收得太緊, 可能會漏蕉.  放得太鬆, 可能會好煩.

家陣不斷左抄右抄, 希望唔會太鬆, 又唔會太緊喇.....
有 D 可能九唔搭八, 因為來自不同 project type (連 Visual Studio 都有).


#gradle properties (may contain passwords)
gradle.properties

# idea (copied from .gitignore generated by Android Studio)
/.idea/workspace.xml
/.idea/libraries

# Built application files
*.apk
*.ap_

# Files for the Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/

# Gradle files
.gradle/
build/
*/build/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Android Studio Navigation editor temp files
.navigation/

# Android Studio captures folder
captures/

# =========================
# Operating System Files
# =========================

# OSX
# =========================

.DS_Store
.AppleDouble
.LSOverride

# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

# Windows
# =========================

# Windows image file caches
Thumbs.db
ehthumbs.db

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Windows Installer files
*.cab
*.msi
*.msm
*.msp

# Windows shortcuts
*.lnk

# Intellij project files
*.iml
*.ipr
*.iws
.idea/

出事篇: targetSdkVersion - 23 or above

之前手痕, 見定陣兩部電話, 一部 Android 6.0 另一部 Android 7.1, 心諗主力用既機都升左上 6.0 以上, 只係得番 D tablet 同阿仔部松用舊版, 就將 Sdk version 提升一下.

minSdkVersion: 19

呢個 minSdkVersion 因為 createFromPdu 既緣故已經升左上 19 (詳情可以睇番 Deprecated methods).

既然個名叫 min...就更係有細得細, 而最少要 19, 咪 keep 住 19 先.


targetSdkVersion: 22

呢個其實我都唔係太明白, 基本上講明 minSdkVersion 係 19, 即係 19 或以上都要 work, 咁仲加個 target 有乜用?  睇番網上講, target 最好 set 到你認為行到個 app 最大既 version, 等佢可以同你 check 下有無新野係唔夾既.  聽落幾理想, 我個人保守少少, 就試改成 23 (跟我手上部電話先).

改完用番部 tablet 試, 因為佢係最低版本 (仲係 食緊 KitKat), 諗住佢得就實得.
試好哂, 諗住掂了.

點知幾日後, 幫人裝 app, 發覺出事, 唔識攞 permission.  初時都唔知乜事, 不斷 fallback, 發覺係轉 SdkVersion 呢下出事.
好在, 呢個改動既同時, 無改 program, 咁好明顯就係呢度問題.  如果唔係, 真係有排 debug.

又再上網搵下, 原來 Android 自 API Level 23 開始, 改左 permission 既做法.
以前一裝 app, 你就要同佢講, 接唔接受個 app 要既 permission, 一係就比哂, 一係就唔裝.
自 API Level 23 (Android 6.0) 開始, 用家既自由度大左 (不過又煩左), 裝 app 唔問, 開 app 都唔問 (其實睇 programmer 點寫), 盡量做到有需要至問.

咁就出事喇, 我本身無加入中途問人攞 permission 既 code (鬼咩, 之前都無呢樣野), 而佢又改左裝 app 果下唔問, 結果就完全唔問, 即係無 permission 了.  點解之前又試唔出?  皆因自己用左部 Android 4.4 既機試, 而 Android 4.4 既機係裝果下就要攞 permission, 所以一開始就有哂了.

本來加番 require permission 既 code 就得, 但有時真係唔 sure 邊度有漏 (analyser 可以同你 check), 安全起見, 改番 裝果下問左先, 反正自己既 app,  自己點會唔信喎.

結果, targetSdkVersion 就變番去 22 了.