2018年3月28日 星期三

[Android] ARCore下批可能支援的手機

來源:Android Police

摘要:
新的ARCore App被拆包看,發現多了很多裝置代碼,可能是之後會支援的;
包括:Huawei的一些手機、Samsung的一些手機、Moto跟Xiaomi的一些手機。就是越來越多隻的意思。只是目前還不支援。

心得:
Google的ARCore只支援某些高階機,這次新的名單裡有比較中階的Samsung A5/A7,對捨不得花大錢的人是好消息吧...只是A5(2017)都下市了,也太舊...真希望有台灣可買到的中階手機支援呀...好多AR App不能玩 QQ
另外,Android P裡面應該直接塞ARCore呀...


[Android] Migrating Apps to Android P

來源:Dev Android

摘要:
Google教你怎麼測你的App在Android P是正常的~

-第一階段:現有App不改先在P測,可參考Google的品質測試Guideline,及Table 1的主要變更項目。

-第二階段:targetSdkVersion 指到P,參考這篇 還有Table 2看要測啥改啥。

一二階段都測完就能(稍微)安心了,耶~


心得:
每一版Android都改不少呢,之前有想過看兩版差異報告,多到會吐血,看不下去,現在Google比較好了,會出行為變更整理,這次還出搬遷指導。

DP1三月已出,DP2五月出....DP5七月出,正式版Q3出,如果是8.0前的Android,其實從正式出在測應該還來的及,因為廠商至少要一個月客製化 (除了Google親兒子)。

但8.0 Oreo後,因為Project Treble,有可能升版速度會變快,就是這次9.0(P)就可知道Project Treble到底有沒有用囉~雖然他方向是對的,可是不是每個OEM廠商都有把每台8.X裝置加進去;但如果要保險起見,還是從DP4開始測吧~

[Firebase] Crashlytics已成為Firebase正式的Crash Reporter

來源:Google Dev Blog

摘要:
Crashlytics是Creash Reporter SDK第一名,有很多好功能,加入Firebase後功能多更多,3/19時已BETA完變正式囉~ 有以下重點:
-整合GA,做出麵包屑(Breadcrumbs)功能,讓你方便追user行為。
-有Crash insights,建議你這問題可能的原因跟解法。
-可以固定住最重視的版本,方便查看。
-有dSYM(XCode編iOS的一個對應檔)上傳工具。
-成為Firebase的預設崩潰報告,Firebase Crash Reporting只會活到9/28,有用快轉喔。
-有Fabric跟FrieBase的連結工具,兩個都有用可以連一下;只有用Fabric就還要等一下轉換工具。


心得:
Fabric Crashlytic的華麗報告畫面不知會不會變成Google的Material Design畫面?
Fabric的其他服務(eg. Answers)不知還會不會活著?
Google整合服務真的很快耶....不像之前某Y公司都買來放著。

[Cross-platform] 用Flutter也可做出跨平台百萬下載,評分4.3+的App

來源:Google Dev Blog

摘要:
設計公司POSSEFlutter做了Hamilton的App(iOSAndroid),然後下載量超過一百萬,還有50萬以上活躍用戶,只要寫一次就可以賣兩邊,真是好棒棒,快來用Flutter吧~


心得:
之前聽過的跨平台方案都有缺點,整個開發體驗不如原生方案美好;而且針對官方OS、SDK、Design Guideline更新都可能會卡關,要找通用的輪子(別人寫好的元件)也較難。

只是我只試用過AIR、PhoneGap跟React Native,Xamarin沒試過。

AIR是很早期的Adobe行動解決方案,用Flex開發,現在應該沒人用了,因為要有runtime才能跑。

PhoneGap系列不用說,網頁就是慢。所以後來的跨平台才會都說要編成Native;

但React Native的開發環境跟Android原生開發體驗差很多,很像在開發網頁(用JSX),應該蠻適合React或Node工程師轉行或兼職用。

Xamarin用的是C#,如果是C#工程師轉行應該不錯,只是聲勢目前低於React Native就是。

Flutter用的語言是Dart,一個用的人不算多的語言,但是相對Obj-C或JSX,對寫Java或C++的人來說應該好懂很多,至於為什麼用Dart,可看這篇。然後他號稱比ReactNative不容易遇到效能瓶頸,而且又有提供兩平台的UI元件(當然要兩邊符合設計要分開做啦)

至於Xamarin vs. React Native vs. Flutter,可以看這篇

只是如果叫我三選一,我應該會說...可不可以讓我只寫Android,好啦,應該會先試試看Flutter吧..畢竟IDE跟AS比較像,語法對Java工程師又比較容易懂。

[Android] Android Studio 3.1 Stable

來源:Android Dev Blog

摘要:
Android Studio3.1出囉,支援更新的工具跟語法、跑得更快、提供更多好用工具,簡直好棒棒,快來更新吧~

心得:
看完文章跟影片,真的會覺得好棒棒,但還是有人反應App會跑不起來的問題,就目前沒時間蒐集災情跟測試,等有空再來試試囉~

[Android] Play商店會根據你的裝置推薦你完整版或Lite版App

來源:Android Police

摘要:
Play商店會根據你的裝置推薦你完整版或Lite版App (eg.FB & FB Lite)。

心得:
雖然不知怎麼做到的,可能是上架時要做些設定,但在台灣跟美國應該沒有那麼差的手機,不能跑完整版FB的。

如果真的要照顧低階手機的users,可以去買Android Go版手機來當測試機囉~
畢竟Google說Go是為了另一批十億users做的,啊...只是要去拍賣找找看了,因為應該不會在已開發國家賣..

2018年3月27日 星期二

[Android] 無Google認證裝置不能用Google服務囉~

摘要: 3/16後出來的ROM,沒經過Google認證就不能用Google服務跟Google Apps囉~ 除非註冊該台的AndroidID 心得: 之後刷第三方ROM的手機跟大陸機 要裝PLAY服務難度又變高囉... 話說我只刷過官方ROM過...因為都不是買熱門旗艦機,沒啥客製ROM能選 XD

2018年3月26日 星期一

[Android] ScrollView包SwipeRefreshLayout包RecyclerView完全沒有畫面(RecyclerView does not show in SwipeRefreshLayout)

問題:
因為RecyclerView做的List上面還要放一些固定的東西,但為了小螢幕手機只好用ScrollView包起來,但為了下拉刷新只好加上SwipeRefreshLayout;
就是ScrollView包SwipeRefreshLayout包RecyclerView,然後...RecyclerView就不秀了,怎麼辦呀?

參考:StackOverflowCSDNivankocijan.xyzCSDN珞璃之神

說明:
根據StackOverflow可知,SwipeRefreshLayout外面不能有ScrollView,那就反過來包;SwipeRefreshLayout包ScrollView,這樣就會秀囉。

只是這樣有幾個問題:

  1. 轉圈(progress view)不在List上方,而是在ScrollView上方。
    =>在意的話,只能改成最外面不是SwipeRefreshLayout,而是CoordinatorLayout,參考CSDN珞璃之神
  2. SwipeRefreshLayout會吃ScrollView手勢。
    =>可以判斷List到頭才啟用SwipeRefreshLayout,可參考CSDN

好啦,如果2這做法SwipeRefreshLayout包ScrollView包RecyclerView大致沒問題,只是如果把ScrollView改為NestedScrollView,下面的RecyclerView做的List會全展開,如果想限制項目數,只能自己在程式裡設定高度了。


手機螢幕高度不夠用問題真的很難解,所以Material Design才會用CoordinatorLayout、AppBarLayout、CollapsingToolbarLayout等元件,讓畫面上方有些東西可以在捲動時縮起來,設計畫面時可參考看看囉。


另外,在查資料時發現NestedScrollView在舊版v4包有很多問題,這篇在用v4:27.1.0時已經沒那些問題了。

2018年3月22日 星期四

[Android] 禁止EditText跳出選單 (EditText disable popup menu )

問題:
我有一個EditText希望點文字不要跳出 [剪下(cut)/複製(copy)/貼上(paste)/分享(share)]選單,官方沒有提供設定介面耶,該怎麼辦?

參考:StackOverflow簡書CSDN

說明:
這個問題網路上查到有以下解,但是不同Android版本效果不同,所以我有針對Android 5.0、6.0、7.1、8.1做測試,就來看看吧~


  1. android:longClickable="false" → 5.0+就沒用了,照樣可選 (據說3.1+就沒用了)。
  2. android:textIsSelectable="false" → 5.0+就沒用了,照樣可選。
  3. setCustomSelectionActionModeCallback設定自己改寫的 → 5.0+就沒用了,照樣可選。
  4. setOnTouchListener針對ACTION_DOWN不做事 → 6.0+才有用。
  5. 繼承EditText改寫isSuggestionsEnabled跟canPaste(參考StackOverflow) → 5.0~8.1都不會跳出全選的選單,但是點擊游標下方的小水滴(text select handle)還是會有貼上(paste)選單。
  6. 自訂textSelectHandle(有單、左、右三個)為長寬0dp的矩形(參考StackOverflow) → 5.0~8.1都沒小水滴了,但全選時還是會跳選單。
  7. 把EditText的mEditor抓出,把Insert handle跟Select handle關掉(參考簡書) → 5.0~8.1都有用。


其中,5有點危險,因為有改寫一個non-public method canPaste,如果Google改名就沒用了;
然後7更危險,還會被Android Studio警告,因為有用名稱抓內部資源,如果Google改名就沒用了,沒防呆還會當。

但是如果不用5或7似乎真的沒解。

所以...我是推薦用3+5+6,詳細就參考StackOverflow吧。