Android

RoomのDatabase Instanceの初期化についてのメモ

概要 Roomのcodelabで疑問に思う箇所があったのでメモ codelabで紹介されているコード codelabではRoomDatabaseのインスタンス生成はsingletonパターンで実装され、以下のようなコードになっている。 @Database(entities = [Word::class], version = 1) publ…

Gradle Play PublisherのAndroid App Bundle Supportがもうすぐリリースされそう

Gradle Play Publisher? Gradle Play PublisherはAPKのGoogle Play Developerコンソールへのアップロードを自動化できるGradleプラグインです。 github.com APKのアップロード以外にもPlay Storeに掲載する各種メタデータの管理も一括で行うことができます。…

DiffUtilのgetChangePayloadで返したオブジェクトをどう使うか

DiffUtilのgetChangePayloadでは、古いアイテムと新しいアイテムでどのフィールドが更新されたかの情報を詰めたオブジェクトを生成して返す。 どんな感じなのかは以下のサイトを参照。 DiffUtil is a must! – ProAndroidDev Android DTT #12 — Optimize and …

LiveDataのユニットテストを書く際に参考になる記事

LiveDataのユニットテストを書く場合にどうするか調べたのでメモ。 LiveDataのUnitTest – Kenji Abe – Medium こちらの記事を読むことでLiveDataのユニットテストをどう行うかついて理解できました。 AACのcore-testingをtestImplementationに追加し忘れてテ…

It’s time to upgrade GCM to Firebase Cloud Messagingの意訳

FirebaseからGCM終了のお知らせとFCMへのアップグレード告知メールが来たので意訳した。ついにGCMが終了するのかー 意訳文 2016年、Google Cloud Messaging(GCM)の後継としてFirebase Cloud Messaging(FCM)をローンチしました。FCMはGCMを進化させ、通知とデ…

Advertising IDの取得

毎回忘れるので取得の仕方をメモしておく。 仕様・実装方法 仕様や実装については以下を見ておけば恐らくOK。 Advertising ID | Android Developers AdvertisingIdClientのリファレンスは以下を参照。 https://developers.google.com/android/reference/com/…

potatotipsで発表してきました

先週potatotips #48で「Alexa、APKを配布して」というタイトルで発表してきました。Rettyさんありがとうございました。 資料はこちらです。

Support Libraryを27.1.0に更新した際に行った事のメモ

Support Library 27.1.0が公開されていたので更新しました。その際に行った作業のメモ。 developer.android.com RecyclerView.Adapterの抽象メソッドが取る引数の型を変更 onCreateViewHolder、onBindViewHolderでそれぞれViewGroup、RecyclerView.ViewHolde…

GSONのSerializerとDeserializerを書く時に参考になったページ

毎回調べてる気がするのでメモ。 Gson User Guide - gson 公式ドキュメントは外せない。 GSON Serialiser Example | Java Creed Serializerについての解説。取り敢えずこのページを見ておけば問題ないと思う。 GSON Deserialiser Example | Java Creed Deser…

新規アプリでGoogle Play App Signingを有効にしアプリ署名鍵からFacebook SDKで使用するkeyhashを作成する方法について

概要 新規アプリでGoogle Play App Signingを有効にするとアプリ署名鍵がGoogle側で自動的に作られるためリリースkey hashを作成できず困ったのでその解決方法についてのメモです。 Google Play App Signingとは? Google I/O 2017で発表されたGoogle Play A…

Androidエミュレータでコピー&ペーストしたい

このStackOverflowの質問と解答を見れば解決なんですが、何度も忘れるので個人的にメモ。 stackoverflow.com API Level 19 以上 API Level 19 以上なら普通にコピー&ペーストするだけです。 API Level 19 未満 adbを使って入力します。 adb shell input text…

potatotipsで発表してきました

先日potatotips #45で「Swaggerで定義したAPI仕様から Retrofitで使用するinterfaceを自動生成してみる」というタイトルで発表してきました。リクルートマーケティングパートナーズさん、お邪魔させて頂きありがとうございました。 資料はこちらです。

Bazelのrules_kotlinについてのメモ

Bazelのrules_kotlinにkotlin_android_library rule 追加され、Kotlinで書かれたAndroidアプリがビルド可能になったので調べたメモ。 BazelでのAndroidアプリのビルド方法の復習 Bazelのインストール サンプルプロジェクトの用意 workspaceのセットアップ WO…

Reproでプッシュ通知を受け取る際にSmall Iconが表示されない場合の対処方法

概要 Reproでプッシュ通知を受け取る際に、NotificationCompat.BuilderのsetSmallIconでiconのリソースを指定していても通知に表示されない場合の対処方法について。 対処方法 AndroidManifestのapplicationタグに以下のようなmeta-dataを追加します。 <meta-data android:name="io.repro.android.PushNotification.SmallIcon" android:resource="@drawable/YOUR_ICON_ID"> </meta-data> こ…

既存のURL文字列にUri.Builderでクエリを追加する方法

既存のURLにUri.Builderを使ってクエリを追加する場合こうする。parse後にbuildUpon()で繋ぐのがミソ。 val url = Uri.parse("既存のURL") .buildUpon() .appendQueryParameter("key", "value")

英語でKotlinを勉強するためのリソース

Android DevelopersのKotlinのページにはResources to Learn Kotlinというページがあります。 Resources to Learn Kotlin | Android Developers このページにはタイトル通りKotlinを学ぶためのリソースのリストが載っていて、以下のカテゴリに別れています。…

BuckでのAndroidプロジェクトのビルドについて

概要 Facebook製ビルドツールBuckをインストールし、サンプルとして公開されているAndroidプロジェクトをビルドしてみます。 Buck? BuckはFacebookが開発しているビルドツールです。 buckbuild.com 公式サイトではBuckの特徴が解説されています。ビルドが高…

GoogleMapのMapFragmentを取得した際にNullPointerExceptionが発生する場合の対処方法

概要 以下のようなコードでGoogleMapを表示しようとしたところNullPointerExceptionが発生した。 GoogleMap googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); UiSettings uiSettings = googleMap.getU…

KotlinでAndroidアプリをビルドしてみる

最近Kotlinの話題を聞く事が多くなってきたので、Kotlinでプロジェクトを作成し、HelloWorldアプリをビルドするところまでやってみる。 公式サイトを見ながら環境を構築していく。 Kotlin Pluginのインストール IntelliJ IDEA 15は最初からKotlin Pluginが入…

AsyncTaskでtimeoutを指定する方法

AsyncTaskを利用してAPIへリクエストする際にTimeOutを指定したい場合がある。そのやり方のメモ。 final SampleTask task = new SampleTask(); task.execute(); // TimeOut処理 new Thread(new Runnable() { @Override public void run() { try { // TimeOut…

Cloud Test Labドキュメントのざっくり翻訳

概要 Cloud Test Labのドキュメントが公開されていたのでトップページだけざっくり翻訳してみた(英語は得意じゃない)。 原文 cloud.google.com [翻訳] Google Cloud Test Lab Google Cloud Test Labは、クラウドベースのAndroidアプリテスト環境を提供します…

java.net.SocketException: socket failed: EACCES (Permission denied)が発生した時の対処方法

AndroidでCalabashのテストを実行した際に以下のエラーが発生した。 Error message 'java.net.SocketException: socket failed: EACCES (Permission denied)' 原因はパーミッションが足りないから。AndroidManifest.xmlに以下を追加。 <uses-permission android:name="android.permission.INTERNET"/> 参考 stackoverflow.c</uses-permission>…

AWS SDKを使いDeviceFarmでのテストをスケジューリングする

概要 AWS SDKを使用してDeviceFarmへAPKとテストコードをアップロードし、Calabashによるテストを実行してみたのでそのメモ。 APIドキュメントと使用するSDK ドキュメントは以下を参照した。 http://docs.aws.amazon.com/sdkforruby/api/Aws/DeviceFarm.html…

AWS Device Farm APIでプロジェクト情報を取得する

概要 AWS Device FarmのAPIが公開されていたので試してみた。 AWS CLIのインストール 今回はAWS CLIを使ってみる。ドキュメント通りにCLIをインストール。 $ sudo pip install awscli 認証情報の設定 ドキュメントに従い設定。AWS Device Farmがオレゴン限定…

build.gradleからの環境変数の参照

build.gradleからの環境変数の参照 CIサーバなどで以下のように環境変数を定義する。 export ORG_GRADLE_PROJECT_TEST="hoge" ORG_GRADLE_PROJECT_propertyと定義すると、propertyという変数名でbuild.gradleから参照できる。 apply plugin: 'com.android.ap…

GradleでJavaDocを出力する

ターミナルからコマンドでJavaDocを出力できるようにしてみる。 build.gradleの修正 JavaDocを出力したい対象(moduleとか)のbuild.gradleに以下を追加。 android.libraryVariants.all { variant -> if (variant.name == "debug") { return } task("generateJ…

Robolectricで標準出力にログを出力する

Robolectricを使いテストを実行する際に、AndroidのLogクラスでログを出力したい時があったのでメモ。 調べてみると、ShadowLogクラスのstreamフィールドの値を変更すれば良いようです。 テストコードでこんな感じに書いておきます。 @Before public void se…

Robolectricで「volley/res/values is not a directory」と言われた場合の対処方法

Robolectricを使ってテストを実行した際に以下のようなエラーが発生した。 java.lang.RuntimeException: java.lang.RuntimeException: ../volley/res/values is not a directory volleyはAndroid用ネットワークプログラミング用ライブラリで、そのパッケージ…

結婚式の準備とAndroid

週末の結婚式の準備に追われております。新郎の挨拶を考えてるのですが難しいですね。 さて仕事では急にAndroidをやることになりました。Androidはサンプル動かしたぐらいで素人同然なのでこれから勉強していこうと思います。 で、どう勉強しようかと考えた…