くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

Android

Android App のCI を Azure DevOps から Circle CI に移行して大変だったところについて。

Azure DevOps から業界で幅広く使われている Circle CI に移行中です。 ※最近見てる企業では大体Circle CI 使ってるみたい。 また、DroidKaigi のアプリ開発やインターンシップで少しCircle CI を触った感触的には面白そうだったのも理由の一つにあります。 …

Android で ChipGroup に属しているChip を列挙する

ChipGroup Class には 追加されている Chip 一覧を取得できそうな関数が生えてないです。 val chipGroup = // Chip Group への参照を取得する val chipCount = chipGroup.childCount // 2 (0..chipCount - 1) .map { chipGroup.getChildAt(it) as Chip } .ma…

Android-NDK で エラーがでた。 No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android

C++ で書かれたライブラリを Android 向けライブラリにビルドしようとしたら下記のようなエラーが出ました。 No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android mios64el-linux-android に対応した NDK Toolch…

Firebase Readtime DB + Kotlin Coroutine でいい感じに使う

Firebase の Realtime Database 使ってますか? firebase.google.com 問題点 基本的に Callback な作りなため Kotlin Coroutine との相性がよくない Firebase Realtime Database で値を読み取る時には基本的には Callback スタイルなコードを書きます。 Kotl…

Flutter 向け マネージド CI/CD サービスの codemagic が良さそう

最近流行りの Flutter 、 Flutter 向けな マネージド CI/CD サービスがついに出てきました( Native 向けなら色々あるけど、 Flutter 向けを売り出しているのは珍しさ) CodeMagic とは? Flutter ファンにより生み出された Flutter 専用のCI/CD サービスで…

AndroidX の androidx.textclassifier を試してみる

アドベントカレンダー Android 初心者 15日目の記事です。 まだ枠が空いているので記事を見た人は登録するか3人の Android エンジニアに送りつけてください。 qiita.com 初心者ということで試してみた記事を書いてみたいと思います。 Android 8 ~ テキスト…

Azure DevOps で Firebase, google-services.json を使った Android-Kotlin なアプリを CI/CD する

Azure DevOps 使ってますか〜?周りでは余り使われてなくて悲しいです〜(お金で殴れるなら Bitrise も使いたい...) タスク管理とかの機能が強力で良さげっすよ(Trello でやるよりは良さげ、癖が強いけど) さて、 Android-Kotlin な Firebase を導入した…

Android-Kotlin で現在起動してるアプリの設定画面に移動する

コード val intent = Intent() intent.action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS val packageName = context?.packageName ?: return@setOnClickListener val uri = Uri.fromParts( "package", packageName, null ) intent.data = uri startAc…

Azure DevOps で Android Self Hosted Build Agent をセットアップできるスクリプトがある程度できた。

Azure DevOps ってサービス知ってますか? VSTS とか言われてたやつです。 CI サービスとか タスク管理、Wiki とかの開発で必要そうな奴が詰め合わせになった奴。 Circle CI + Github + Trello とかが合わさったサービスです。(正確には違う) モバイルDevO…

Android アプリで現在デバッグ実行中かを判定する方法

Android アプリを作っていて、現在デバッグ実行されているかを確認したいことはたまによくあると思います。 BuildConfig から取得すればいけ感じな。 コード BuildConfig.DEBUG 情報元 stackoverflow.com

Extended FAB っぽいものを実装してみた

Extended FAB を実装するモチベーションはFAB をよりユーザーにわかりやすく実装するため 普通のアイコンだけのFAB だけで実装してましたが、 「アイコンだけでは何をするためのものかすぐに理解して使い始めることができない」という問題が出てきました。 …

Mockito で void なメソッドをモックする

Mockito はいいぞ〜 さて、 void なメソッドを mock するにはどうすれば良いのかってのは少しハマったので書いてきます〜 解決方法 doNothing().when(targetMock).targetMethod() 的な感じで実装してくといけました〜。 コードで解説 val keyword = "hello w…

BottomAppBar で menu を表示する

BottomAppBar で menu を表示するためには、以下のメソッド読んであげれば表示できます。 {BottomAppBar への参照}.replaceMenu(R.menu.ResourceFileName)

Android の Fuel + Moshi + Kotlin Coroutine でいい感じにする拡張関数を書いた

Fuel には、 mochi、 Kotlin Coroutine といい感じに連携してくれる機能があります。 けど、 Moshiと Kotlin Coroutine を組み合わせていい感じに呼び出せる関数は存在してないです。(まぁ、標準で存在してても依存関係考えたら載せるべきでないのはそう)…

java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/databinding/DataBinderMapperImpl; ってエラーがでた

エラーメッセージ java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/databinding/DataBinderMapperImpl; 解決策 dataBinding { enabled = true } databinding の設定を AppModule にし忘れてただけですね.... マルチモジュールで作ってると…

Invoke-customs are only supported starting with android 0 --min-api 26 ってエラーがでた

ライブラリの追加をしたら下記のようなエラーが出ました。 そこで、解決策を書いていきたいと思います。 Invoke-customs are only supported starting with android 0 --min-api 26 解決策 以下を追加した Module の Build.gradle へ追記したら解決しました…

Navigation Architecture Component で BottomNavigation と Include した Navigation Graph を紐付ける

Android 3.2 正式リリース && Androidx 1.0 おめでとうございます さて、 Android Studio 3.2 から入ってきた Navigation Architecture Component (NAC) NAC には BottomNavigationView (and DrawerView?) と紐づけ、Fragment の ID と menu の id を一緒に…

Android で Databinding しようとしたら Cause: couldn't make a guess for {Class Name} ってエラーがでる

状況 以下のようなエラーが出てしまいました... Cause: couldn't make a guess for {Class Name} 解決策・原因 パッケージネームに大文字が混入してたのが原因です。 意外に見つけにくい...

Kotlin, JUnit で パラメタライズドテストを書く

こちらで書いたコードに対してパラメタライズドテストを書いていきます。 kuxumarin.hatenablog.com 環境 testImplementation 'junit:junit:4.12' コード Java で書くときは、Static な感じで書いてたのは companion object にしました。 @RunWith(Parameter…

Kotlin で HTML を テキストに変換する

public fun String.removehtmlTag(): String = this .replace(Regex("<[^>]*>"), "") .replace("\n", "")

Android で 長文をいい感じに省略して表示する

任意の長さの文字列をいい感じに省略して 表示することはよくあるかと思います。 そんな時にいい感じに表示する方法です。 方法 <TextView android:layout_height="wrap_content" android:layout_margin="12dp" android:ellipsize="end" android:maxLines="2" tools:text="雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列" /></textview>

Android-Kotlin な Multi Module な構成で 他Module の Class を参照しようとすると Unresolved Reference とでる。

症状 どこもおかしくないはずなのに、新規で追加した Android Module で定義されている Class を参照しようとすると "Unresolved Refernece " って出てきてツラミでした。 また、 Android Studio では普通に 入力補完されます。 なのに、ビルドすると上記の…

Multi Module な Android アプリで DataBidning を作成できないのを解決してみた。

最近、Android な開発環境では、 Instant App などの対応のために Multi Module な構成にするのが流行っています。 とはいえ、Multi Module なAndroid アプリを開発しているときに DataBinding を利用しようとするとDataBinding で必要なBinding Class がErr…

Xamarin.Android で画面を消灯させないようにする

基本的には、 Android で開発を行うのと同じようにやっていけばOK OnCreate の中で AddFlags するだけ MainActivity.cs // OnCreate の中 Window.AddFlags(WindowManagerFlags.KeepScreenOn); 参考 画面をスリープ状態にさせないためには - 逆引きAndroid入門

Xamarin.Android で 指定したフォルダのファイル一覧を取得する

特定のフォルダに存在するファイル一覧を取得したいことはたまによくあると思います。 コード namespace AndroiFolder { [Activity(Label = "AndroiFolder", MainLauncher = true)] public class MainActivity : Activity { private static string GetPathFo…

Xamarin.Android で フォルダを監視する

フォルダに新しいファイルが追加されたり削除されたりなどのイベントを削除するのを監視したいときがよくあると思います。 コード まずは、 FileObserver のサブクラスを作成します。 public class DCIMObserver: FileObserver { public DCIMObserver(IntPtr…

Visual Studio ユーザーのための Android Studio 設定・プラグイン。人権を得ましょう!

序章 Plugin Kotlin Plugin Code Grance 設定 自動 import したい タブでインデント マウスを乗せるとクイックドキュメントが表示されるように 未保存のファイルにアスタリスクをつける LogCat の画面を見やすくする 入力補完でメソッドに必要な引数情報をす…

Android-Kotlin で ユーザーに画像を一枚選択させてその画像の場所を取得したい

はじまり Android のアプリを作成していて、 ユーザーに画像を一枚選択してもらい、その画像に対してあれこれしたい。みたいな時があるかと思います。そんなときのための記事です。 プログラムの流れの解説 開きたい画像を選択させる Intent を飛ばす ユーザ…

Android-Kotlin で Wifi のSSIDを取得する

class SSIDManager{ fun GetSSID(ApplicationContext:Context): String{ val wifiManager = ApplicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager if(!wifiManager.isWifiEnabled) return ""; val connectInfo = wifiManager.connecti…

Visual Studio Team Services で Xamarin.Android をビルドする!

VSTS を使うメリット Xamarin.Android と同じ会社が作っている製品ということで、 Xamarin のサポートが強力 無料ではじめれる やること 1. VSTS のダッシュボード画面を開く 2. Github との連携 3. ビルドタブへ移動 4. 新しいビルド定義を作成 5. 最低限必…