- 1. about librariesでライセンスを追加する
- 2. 【Jetpack Compose】React HooksとSWRに学ぶ宣言的データフェッチのすすめ
- 3. AdbPad v1.0.0 をリリースしました
- 4. Android×Pythonで気圧計作ってみた
- 5. Jenkins Pipeline Androidプロジェクトの自動配信化をする
- 6. Android Studio・Kotlin・Jetpack ComposeでシンプルなTextfieldを作ろうとしたときに起こったエラー
- 7. Composition over Inheritance – Delegation in Kotlin
- 8. Playwrightで遠隔からAndroidデバイスをぐりぐり動かす。
- 9. Gradle Managed Devicesを使ってみた
- 10. Jetpack Composeで自動スクロールするカルーセルを実装する
- 11. AndroidでE2Eやってみる
- 12. flutter_webviewのWebViewをデバッグする
- 13. UnityIAPで課金を実装する (個人開発者向け)
- 14. はじめてのAppsFlyer: (1)アプリを管理画面に追加する
- 15. クソデブだった僕のプラトー現象を救う為にAndroidアプリを作った話
- 16. Issue Tracker で Google へ問い合わせてみた
- 17. Proto DataStoreを使ってみる
- 18. 【Jetpack Compose】可愛いBottomNavigation
- 19. RecyclerViewのスクロールを減速させてふわっと着地させる方法
- 20. Jetpack Composeで汎用的なAlertDialogを実装してみた
about librariesでライセンスを追加する
# 初めに
今回は`about libraries`ライブラリを使う際に自動では読み取ってもらえないライブラリのライセンス等を追加する方法を紹介していきます
### 本文
まず、プロジェクト直下に`config`という名前でフォルダを作成します。
その中に`libraries`と`licenses`という二種類のフォルダを作成します。
`libraries`には追加したいライブラリのjsonを、`licenses`には追加したいライセンスのjsonを作成します。
あとは`app`の`build.gradle`に対して以下のコードを追加します
“`kotlin
aboutLibraries { configPath = “config” }
“`
`configPath`に指定したフォルダを参照するようになるので、`config`となっている部分を自分のわかりやすい名称に変更することも可能です
### 最後に
自分が今回、ライセンス画面を作成するときに追加したいライセンスがあったのですが、一昔前の追加方法しか日本語記事が存在しなかったのでわかりやすいように備忘録として残しておきます
【Jetpack Compose】React HooksとSWRに学ぶ宣言的データフェッチのすすめ
## TL;DR
[React SWR](https://swr.vercel.app/ja)をJetpack Compose向けに移植して公開したぞ!
https://github.com/KazaKago/swr-compose
## 前置き
もし今からモダンなAndroidアプリをゼロから書こうと思ったらおそらく[Jetpack Compose](https://developer.android.com/jetpack/compose)を採用したいという人が多いかと思います、いわゆる宣言的UIと呼ばれるやつですね。
![https://developer.android.com/static/codelabs/jetpack-compose-animation/img/5bb2e531a22c7de0_1920.png?hl=ja](https://developer.android.com/static/codelabs/jetpack-compose-animation/img/5bb2e531a22c7de0_1920.png?hl=ja)
この宣言的と呼ばれるト
AdbPad v1.0.0 をリリースしました
![AdbPad v1.0.0 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/f796e140-eb0d-8b13-bf1c-9e59a7288968.png)
# はじめに
AdbPadはAndroidアプリケーションの開発・テストをサポートするGUIアプリケーションです。AdbPadは以下のGitHubリポジトリで絶賛開発中です。よろしければコントリビュート&スター登録お願いします。
https://github.com/kaleidot725/AdbPad
# AdbPadでできること
AdbPadでは以下の機能をサポートしています。
– Windows10/11, macOS, Linux対応
– ライトテーマ・ダークテーマ切り替え
– コマンド送信
– テキスト送信
– 各テーマのスクリーンショット撮影![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387
Android×Pythonで気圧計作ってみた
## はじめに
山形大学大学院修士1年のHagianです。この記事は[身の回りの困りごとを楽しく解決! by Works Human Intelligence Advent Calendar 2022](https://qiita.com/advent-calendar/2022/works-hi-1)の15日目となります。
突然ですが、私は頭痛を抱えています。月に1回程度来る偏頭痛のほかに、気圧変動(特に上昇時)によって緊張型頭痛がやってきます。前兆をつかむため、気圧を知りたいな〜と思うことがよくあります。
しかし気圧計が手近にある場合を除いて、気圧を知ることは意外と難しいように思います。気象庁および各地の気象台では観測が行われていて、気象庁のWebサイトから知ることができますが、毎正時かつ海面更正された値であり、実測値ではありません。そこで本稿では、**スマホで手軽に気圧の実測値を得られる**ツールを作成したので紹介します。
### 困っていること
* 知りたいときに気圧を知れない
* 自分の現在地の気圧を実測値で知りたい### 実
Jenkins Pipeline Androidプロジェクトの自動配信化をする
## はじめに
iOSを書いたらAndroidもだろうってことでAndroidの記事です
iOSの記事は[こちら](https://qiita.com/Monden_M/items/2c42137497faaeed4ed7)## この記事の内容
jenkinsのpipelineで
– 開始と終了のSlackの通知
– Gitでのソースの取得
– apkの作成
– apkの成果物の保存
– FireBaseDistributionでの配信を自動化してやってしまおうという内容です。
## 前提条件
– WORKSPACE直下にAndroidProjectがある状態
– AABバージョンで送信する場合はGooglePlayに公開済みのアプリ + FireBaseとGooglePlayを連携させる必要があります。
– 上記の問題があるためFirebaseDistributionで配信をする場合は基本apkで配信の設定までする方が現状は無難かと思います。
– FireBaseCLIを導入し、配信を行うのID,PWにてログイン済み※「Firebase Distribution」を
Android Studio・Kotlin・Jetpack ComposeでシンプルなTextfieldを作ろうとしたときに起こったエラー
# 環境
– Android Studio
– サンプルプロジェクトにあるcompose projectを選択“`build.gradle
buildscript {
ext {
compose_ui_version = ‘1.1.1’
}
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id ‘com.android.application’ version ‘7.3.0’ apply false
id ‘com.android.library’ version ‘7.3.0’ apply false
id ‘org.jetbrains.kotlin.android’ version ‘1.6.10’ apply false
}
“`# エラー詳細
https://developer.android.com/jetpack/compose/tex
Composition over Inheritance – Delegation in Kotlin
# Favour Composition over Inheritance
When dealing with code duplication and reusabilty issues it is good to favour Composition over Inheritance.
# Overview
– This is a universally accepted concept.
– Inheritance is not always bad.
– Composition is not suitable for or used in all circumstances.
– Kotlin encourages Composition and makes Inheritance harder.
– Design and document for Inheritance else prohitibt it.
– Composition should be the first design choice in mind.
– We sh
Playwrightで遠隔からAndroidデバイスをぐりぐり動かす。
この記事は、[ソフトウェアテスト Advent Calendar 2022](https://qiita.com/advent-calendar/2022/softwaretesting)の11日目の記事となります。
前日11日の記事は、@gremito さんによる「[Appium on Azure Pipelines](https://qiita.com/gremito/items/f2c981a05b8df1a21acb)」でした。本日の記事もアプリの自動操作関連です。https://qiita.com/advent-calendar/2022/softwaretesting
https://qiita.com/gremito/items/f2c981a05b8df1a21acb
## 概要
ChromeやWebKitを自動操作できるPlaywrightはもう皆さんご存知ですよね?
https://playwright.dev/
PlaywrightにはAndroidを自動操作する機能が実は備わっていて、AndroidネイティブアプリケーションもChromeブラウザ
Gradle Managed Devicesを使ってみた
本記事は [メグリ株式会社 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/mgre) の記事です。
こんにちは。メグリ株式会社でAndroidエンジニアをしている田邊です。
今回はGradle Managed Devicesを使ってみたという記事を書きたいと思います。今年10月に開催されたDroidKaigi 2022で外山さんがご発表された「[Gradle Managed Virtual Devicesで変化するエミュレータ活用術](https://speakerdeck.com/sumio/droidkaigi-2022-gradle-managed-virtual-devicesdebian-hua-suruemiyuretahuo-yong-shu)」を聴講し、個人的に試してみたいなと思っていたところ、今回のアドベントカレンダーのネタとしてちょうど良かったので実際に試してみました。
DroidKaigi 2022に参加したときの感想記事も書いていますのでよかったら御覧ください。
https:/
Jetpack Composeで自動スクロールするカルーセルを実装する
Jetpack Compose の Pager を使って自動で動くカルーセルを実装するときの例になります。
(Jetpack Compose BOM 2022.12.00 & Accompanist v0.28.0 での実装です)#### 実装例
“`kotlin
@Composable
fun rememberAutoScrollPagerState(
interval: Long,
initialPage: Int = 0,
): PagerState {
val lifecycleOwner = LocalLifecycleOwner.current
val pagerState = rememberPagerState(initialPage = initialPage
AndroidでE2Eやってみる
[Ateam Finergy Inc.× Ateam CommerceTech Inc.× Ateam Wellness Inc. Advent Calendar 2022](https://qiita.com/advent-calendar/2022/finergy-commerce-tech-wellness) の14日目は株式会社エイチームウェルネス @yothio が担当します
レガシーなAndroidアプリ/最新のアーキテクチャを上手く追従できていないAndroidアプリを保守していこうと思った時「ロジックが正しいか」といったテストを書こうとしても、Viewとロジックが分離されていないことがあるためユニットテストを書き進めるのは難しく「見た目上変更がない」「アプリケーション全体で見た時に不具合が気づけるように」という思いの元、E2Eテストから先に作ってみようと思いました
# 初めに
最近Webばっかり書いていたのもあり「AndroidでのE2Eは難しそう、あんまりイメージがつかない」と漠然に思っていましたが、実際に触ってみると簡単にできたので「難しいと思って手を出したこと
flutter_webviewのWebViewをデバッグする
# はじめに
WebViewを組み込んだアプリを開発していると、WebViewのCookieや通信内容を見ながらデバッグをしたくなることがあります。
今回は、[webview_flutter](https://pub.dev/packages/webview_flutter)を使用しているwebviewのデバッグ方法を共有します。
※あまりフロントを触ってこなかったので、一部用語等が異なる可能性があります。ご了承ください。## 対象
Flutterのアプリ内WebViewを[webview_flutter](https://pub.dev/packages/webview_flutter)で実装している人## 用語
デベロッパーツール(Chrome)、Webインスペクタ(Safari)、などと呼ばれているアレを使用します。
どうやらChromeとSafariで呼び方が異なるようです。## 環境
– Mac
– Android Studio
“`
Flutter 3.3.9
Dart 2.18.5
webview_flutter: 3.0.4
“`# Flutter
UnityIAPで課金を実装する (個人開発者向け)
# 概要
課金アイテムを実装してと言われてUnityIAPを触ることになった人に向けて備忘録として残しておきます。
# 目次
[1.前提](#1-前提)
[2.UnityIAPをプロジェクトに追加する](#2-unityiapをプロジェクトに追加する)
[3.実装](#3-実装)
[4.ストアの設定](#4-ストアの設定)
[5.おわりに](#5-おわりに)# 1. 前提
CodelessIAPは使用しません。
レシート検証はこの記事では取り上げません。# 2. UnityIAPをプロジェクトに追加する
Unityプロジェクトを開き、雲アイコンをクリックしてUnityGamingServicesを開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308814/18e1c421-74ce-7d85-efc0-2fb33ef02401.png)
InAppPurchasingをクリック
![image.png](https://qiita-image-store.s3.a
はじめてのAppsFlyer: (1)アプリを管理画面に追加する
AppsFlyerを試用してみる手順をまとめます。
エンジニアの方が手元でテストするための「デバッグアプリ」としてアプリを登録する手順でまとめますが、基本的な手順は、本番リリース済みのアプリでも同様です。
(スクリーンショットは2022年12月現在のものになります。)# サインアップ
まず、こちらのページからアカウントを作成するためサインアップします。
https://www.appsflyer.com/ja/start/
クレジットカードの情報などを入れなくても、アカウントを作れば下記の利用は無料でできます。試しにAppsFlyerを使ってみるのには十分かと思います。
– 12,000コンバージョン分(=計測リンク経由のアプリインストールもしくはアプリ再起動の数)の計測
– 各種有償のオプション機能の利用(30日間)
– ディープリンクを含むOneLinkの利用![Monosnap 無料でアカウント登録!クレジットカードは不要です 2022-12-09 17-28-04.png](https://qiita-image-store.s3.ap-northeast
クソデブだった僕のプラトー現象を救う為にAndroidアプリを作った話
[クソアプリアドベントカレンダー2022 13日目](https://qiita.com/advent-calendar/2022/kuso-app)を担当させていただきます[たかぎとねこ](https://twitter.com/takagimeow)です。
このアドベントカレンダーのテーマはご存知の通りクソアプリです。
なので、**クソ**デブだった僕がダイエットの停滞期を迎えた時に、モチベーションを落とさない為に作り続けた**アプリ**(略してクソアプリ)の開発からリリースまでの経緯を紹介をしようと思います。
## TL;DR
今回リリースしたのは「トレメモ」というアプリです。Google Play Storeでのみ配信中ですので、Androidユーザーの皆様には、ぜひご利用いただけると嬉しいです。
https://play.google.com/store/apps/details?id=com.takagimeow.trainingnoteapplication
## ダイエットを決意したきっかけ
振り返れば今年の1月、夜中に松屋の牛めしを1杯とセコマのおにぎり
Issue Tracker で Google へ問い合わせてみた
# 目的
– Androidアプリ開発において開発環境で不具合動作があったため、[Google Issue Tracker][link0] へ投稿しGoogleの中の人とやり取りしたので、投稿方法やその後の対応につきまとめる。# 環境
– OS:Windows10 Professional 22H2
– Android Studio Dolphin 2021.3.1 Patch 1# 概要
– [Google Issue Tracker][link1] はGoogle のバグトラッキングシステムであり、対象となるシステムは今回説明するAndroid開発に限らず、Google が Issue Tracker をツールとして使用することを認めた製品である。
– Issue Tracker は、Google製品一般のフィードバック収集用の汎用ツールではないため、Google製品であれば何でも問題点を投稿できるものではない。詳細は[こちら][link0]。
– 今回見つけた問題点は、Android Studio 内の AVD Manager からエミュレータ起動した際の不具合動作で
Proto DataStoreを使ってみる
# Proto DataStoreとは
ProtoDataStoreは、SharedPreferencesに変わるデータストレージであるDataStoreの一種であり、**Protocol Buffersを用いてプリミティブ型以外も保存できる**という特徴があります。# SharedPreferences, PreferencesDataStore, Roomとの比較
[DataStoreに関する公式ドキュメント](https://developer.android.com/topic/libraries/architecture/datastore?hl=ja)では、
>現在 SharedPreferences を使用してデータを保存している場合は、DataStore に移行することを検討してください。
>
と説明されており、DataStoreは、**小規模な永続的なデータを保存する際** に用いられていたSharedPreferencesの代わりとして使うことが推奨されています。## SharedPreferencesの代わりにDataStoreを使用すべき理由
なぜSha
【Jetpack Compose】可愛いBottomNavigation
# はじめに
この記事は[AdventCalender2022 Android](https://qiita.com/advent-calendar/2022/android)の12日目となります。何を書くか悩みましたが、Jetpack Composeの勉強の一環として、既存アプリを模倣してみたいと思います。今回模倣するアプリは、[東京都水道局アプリ](https://play.google.com/store/apps/details?id=jp.lg.tokyo.metro.waterworks.suidoapp&hl=ja&gl=US)のBottomNavigationBarです。
BottomNavigationBarがとても可愛いので、`Layout`や`Animation`の練習がてら、Composeで作ってみたくなりました。
成果物は下記です。
https://github.com/goutarouh/WaterworksBureauCloneなお私は当該アプリの開発などとは一切関係ありません。
(引っ越しを機に当該アプリを使い始めた利用者の一人です。)#
RecyclerViewのスクロールを減速させてふわっと着地させる方法
RecyclerViewのスクロールをふわっと着地させる方法の紹介です。
サンプルコードも掲載しますが、完全なコードはこちらにあります。list表示にGroupieを使っていますが、本記事では解説しません。
https://github.com/takarabe-hamuyatti/EasingTest
### 最終イメージ
![ezgif.com-gif-maker (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1816697/1d5b2491-161d-7f8f-1dc2-8ecdc152a6e6.gif)### 減速させるためには
![dt_decel.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1816697/e4df5c4c-542e-a4e2-760e-a5e34171fdbe.png)
目的地に到達する辺りで望んだ通りに減速させるということは、時間あたりに進ませる距離を事前に指示するということ
Jetpack Composeで汎用的なAlertDialogを実装してみた
:::note info
これは [ZOZO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/zozo) カレンダー Vol.5 の 12日目の記事です
:::Java, Kotlin, Jetpack Composeのそれぞれで作られた画面で同じデザインのAlertDialogを使用したいケースがあったので、Jetpack ComposeのAlertDialogを使って汎用的に使いまわせるDialogFragmentを作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484337/d033df27-63b1-f098-c640-d8bad1073470.png)
## 概要
– AndroidViewsとComposeで使用するAlretDialogを共通化する
– 呼び出し元からテキストやボタンタップ時の処理を設定できるようにする## Jetpack Compose内でのダイアログ
C