- 1. 【Coroutines】キャンセルとタイムアウト
- 2. adbから好きなアプリ起動
- 3. Jetpack Composeでテキストエディター(Beta版)を作ってみた
- 4. 【2022年】ログイン認証情報の不足でリジェクトされてから、Google Play Consoleで再審査提出まで
- 5. Jetpack Composeタップ領域にPaddingを含める方法・含めない方法
- 6. adbで「adb.exe: more than one device/emulator」が出るとき
- 7. 【Android】ライブラリの実装方法【AndroidStudio】
- 8. Jetpack Composeを現場のアプリ開発で使用してみて思ったこと
- 9. Composableをスクロールに応じて動かす
- 10. 【Android】起動時パフォーマンス改善のためにBaseline Profilesを導入したときのメモ
- 11. 令和最新版 Google Play Console アプリアップロード自動化のための設定フロー
- 12. Dagger Hilt Constructor Injection
- 13. コルーチンとチャネル入門#9 コルーチンのテスト
- 14. Jetpack Compose で dp / px / sp の相互変換はどうやるのか
- 15. Nrealでの録画機能について
- 16. RecyclerViewのセルをKotlin Android ExtensionsからviewBindingに変更したい!!
- 17. Android Studio インストール
- 18. iPhoneのアプリはどうやってできるのか?
- 19. Droidkaigiの応募ネタが思いつかない人のためのトリガーリスト
- 20. Flutter の Android アプリでAPKファイルサイズが突然倍くらいになったが、実は問題なくてむしろ推奨された動作だった件
【Coroutines】キャンセルとタイムアウト
ソース記事は[こちら](https://kotlinlang.org/docs/cancellation-and-timeouts.html)
このセクションはコルーチンのキャンセルとタイムアウトをカバーしている。
## コルーチンの実行のキャンセル
長時間実行するアプリケーションにおいて、そのバックグラウンドのコルーチンをきめ細かく制御する必要があるかるかもしれない。例えば、あるユーザーはコルーチンを起動したページを閉じ、その結果はもう必要なく、操作をキャンセルするかもしれない。[launch](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/launch.html)関数は、実行しているコルーチンをキャンセルするために使うことができる[Job](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-job/index.html)を返却する。
adbから好きなアプリ起動
`adb shell am start HOGE` でアプリ起動できるのでHOGEの部分を調べる。
調べ方はいろいろあるけど、一覧から探すの辛い。
好きなアプリを起動しておいてlogcatで確認するのが簡単そう。
ActivityManagerの「pre-top-activity」を含むログだけ表示する。`adb logcat -d -s ActivityManager:I -e pre-top-activity`
“`sh
$ adb logcat -d -s ActivityManager:I -e pre-top-activity
——— beginning of system
06-25 18:27:26.535 1797 1892 I ActivityManager: Start proc 25440:com.google.android.calculator/u0a143 for pre-top-activity {com.google.android.calculator/com.android.calculator2.Calculator}
0
Jetpack Composeでテキストエディター(Beta版)を作ってみた
# はじめに
Jetpack Composeで開発しているアプリのテキストエディターを`BasicTextField`で作成してみたのですが書きごごちがイマイチと感じました。
私は普段はmacOSとiOSでCraftと呼ばれるノートアプリを愛用しています。Craftのテキストエディタは書きごごちが素晴らしく不満点がないのでこれに近いテキストエディタが欲しいなと思いました。
https://www.craft.do/
【2022年】ログイン認証情報の不足でリジェクトされてから、Google Play Consoleで再審査提出まで
# はじめに
Google Play Consoleでどこをどう操作すれば良いのかわからんかったので、ここに記録します!# ログイン認証情報の不足でリジェクト食らった
![Screen Shot 2022-06-25 at 13.24.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167220/78c4f715-9bc7-f2e6-a332-1d9e12b4cce1.png)https://support.google.com/googleplay/android-developer/answer/9859455#app_access
**審査するためにログインが必要だが、ログインのための情報がないよ〜!!!**
みたいな理由です。
初回リリースというわけじゃないので、、、逆に今まではなぜ審査に通っていたのかが謎なんですがね、、、:joy_cat:
いつからログイン認証情報必要になったんや・・・?# Google Play Consoleでログイン認証情報を追加
`アプリのコンテ
Jetpack Composeタップ領域にPaddingを含める方法・含めない方法
Jetpack Composeで描いていて、タップ領域にPaddingを含まれてなく、どうしたら含められるのかが、分かった為今後のために記載していきます。
# タップ領域にPaddingを含める方法
“`MainActivity.kt
Row(Modifier.clickable(onClick = { isExpanded = !isExpanded })
.padding(8.dp)
)
“`# タップ領域にPaddingを含めない方法
“`MainActivity.kt
Row(Modifier.padding(8.dp)
.clickable(onClick = { isExpanded = !isExpanded })
)
“`# 結論
Modifierの設定する順番が関係してました。
初めにクリック処理を設定すると、全体がクリック領域になるみたいです。なのでpaddingはレイアウトの見た目に反映され、クリック処理の領域には反映されない。Modifierの設定する順番で動作が変わるのでそこ
adbで「adb.exe: more than one device/emulator」が出るとき
複数のAndroidがPCに接続されてたりエミュレータが立ち上がってるとき
“`powershell
PS C:\Users\frieren> adb devices
List of devices attached
192.168.1.8:39333 device
emulator-5554 device
“`そのまま`adb shell`するとエラーが出る
“`powershell
PS C:\Users\frieren> adb shell
adb.exe: more than one device/emulator
“`こういうときは`adb -t 1 shell`みたいにデバイスを指定する。
**デバイスを指定するためのオプションはshellの前に書かないと働かないので注意。**# USB接続のデバイスを指定: `adb -d shell`
> use USB device (error if multiple devices connected)複数台あるとエラー。
# TCP/IP接続のデバイスを指定: `adb -e
【Android】ライブラリの実装方法【AndroidStudio】
# ライブラリとは
ライブラリを直訳すると”図書館”です
図書館では それぞれの人が それぞれの目的で それぞれの知識を得るために それぞれの本を借りることができます
Android(プログラミング)における**ライブラリ**とは
その図書館のように 他の人が作った機能をお借りして使うことが出来るもの
と私は捉えています# 実装方法
Android Studio内の左辺にあるprojectタブにある
GradleScript から build.gradle(Module: app) を選択
その中の dependencies{} 内に 使用したいライブラリをコピペで貼り付けてくださいすると 右上に 「Sync Now」と出てくるので これをクリック
これでライブラリの実装が完了します# よく使われるライブラリ
Android開発でよく使われるライブラリをまとめてくれている方がいたので
記事をお借りして貼っておきます
↑の方法を使えばこの記事にあるライブラリを自分の
実装にそのライブラリの機能を使うことができます!https://qiita.com/tkhskt/it
Jetpack Composeを現場のアプリ開発で使用してみて思ったこと
最近、Androidのアプリ開発においてJetpack Composeを使用する機会が増えました。
ということで、私が特に現場でJetpack Composeを使用してみて感じた(ている)ことを書いていこうと思います。(2022/6/24時点の感想)
知識不足で間違っている点あればご指摘ください。# 良いと感じている点
### レイアウトの変更・管理がしやすい
– Kotlinコードでレイアウトを書いていくので、個人的にXMLベースよりコードのネスト構造が浅くなる(りやすい)傾向があります。
– Kotlinコードで管理するので、XMLファイルといった形式の異なるレイアウトファイルを管理する必要がほぼなくなります。見るのがKotlinコードに一元化されるので管理がしやすいです。
– 同じKotlinファイル内に複数のComposable定義を記述できるのでグルーピングしたい時とか便利個人差はあるので、上記はいまいちピンと来ない方がいるかもしれませんが、XMLよりKotlinに慣れ親しんでいるエンジニアは頷けると思います。
### 状態に応じたUIの出しわけがやりやすい
その
Composableをスクロールに応じて動かす
### スクロールで動かす
### やり方
ScrollStateの値でComposableのOffSetを変更し続ければよい以下のようなComposableを作る。
“`kotlin
@Composable
fun Blue(scrollProvider: () -> Int) {
Column(
modifier = Modifier
.offset {
val scroll = scrollProvider()
val offset = (ScrollHeight – scroll).coerceAtLeast(80)
【Android】起動時パフォーマンス改善のためにBaseline Profilesを導入したときのメモ
GoogleI/O 2022で話題にあがっていたBaselineProfilesを導入検討した際のメモを残しておきます。
# 背景
Baseline ProfilesはAPKに含まれるクラスとメソッドのリストです。インストール時に、Android Runtime(ART)によって、クリティカルなパスをプレコンパイルするために使用されます。
導入すると起動時間の短縮が期待できます。> Baseline Profiles are a list of classes and methods included in an APK used by Android Runtime (ART) during installation to pre-compile critical paths to machine code. This is a form of profile guided optimization (PGO) that lets apps optimize startup, reduce jank, and improve performance for end user
令和最新版 Google Play Console アプリアップロード自動化のための設定フロー
2022年6月時点の Google Play Console へのアプリバイナリ (apk, aab) アップロード自動化のための、主に Google Play Console や Google Cloud Platform の設定のやりかたです。
## ステップ
1. Google Play Developer API 用の鍵の発行
2. 適切な権限を設定する
3. リリース用のツールをセットアップ## 1. Google Play Developer API 用の鍵の発行
リリース用のツールで API を触るために鍵の発行が必要です。すでに鍵がある人はこのステップをスキップできます。
### 1-1. Google Cloud プロジェクトと紐づける
まず Google Play Console にログインして 「設定」 > 「API アクセス」を開きます:
![API_アクセス-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359439/bd359d90-7db1-d50b-
Dagger Hilt Constructor Injection
# 最初に
Dagger Hiltの利用でField Injectionはスッと理解できたのですが、Constructor Injectionは少し時間がかかりました。自分用にもメモとして残します。
Dagger Hiltの環境設定やプロバイダのスコープ範囲などの説明はここでは割愛して、シンプルにコンストラクタインジェクションがどのように記述されるのかだけをまとめてます。# 多分一番シンプルなコード
わかりやすくするためにString型を提供するプロバイダのサンプルです。
“`Kotlin
@AndroidEntryPoint
class HiltStringActivity : AppCompatActivity() {// StringImplのコンストラクタには引数があるのに何も渡していない
// コンストラクタの引数はインジェクトしろというアノテーション
@Inject
lateinit var myStringImpl: StringImploverride fun onCreate(savedInstanceState:
コルーチンとチャネル入門#9 コルーチンのテスト
ソース記事は[こちら](https://play.kotlinlang.org/hands-on/Introduction%20to%20Coroutines%20and%20Channels/09_Testing)
コルーチンを使うコードのテスト方法について議論しよう。我々の解法をテストし、並列なコルーチンの解法が、`suspend`関数の解法よりも速く、チャネルの解法が、単純な”進捗”の解法よりも速いことが確認できればと思う。
それではGitHubサービスをモックし、このサービスが与えられたタイムアウトの後、結果を返すようにしよう。
“`
リポジトリ一覧要求 – 1000ms遅延以内で、答えを返す
repo-1 – 1000 ms 遅延
repo-2 – 1200 ms 遅延
repo-3 – 800 ms 遅延
“`
その後、`suspend`関数でのシーケンシャルな解法は、4000ms前後かかるはずである。
`4000 = 1000 + (1000 + 1200 + 800)`
そして並列の解法は、2200ms前後かかるはずである。
`2200 = 1000 + max(1
Jetpack Compose で dp / px / sp の相互変換はどうやるのか
“`kotlin
val pxValue = with(LocalDensity.current) { 16.dp.toPx() }// or
val pxValue = LocalDensity.current.run { 16.dp.toPx() }
“`
[How to convert Dp to pixels in Android Jetpack Compose? – Stack Overflow](https://stackoverflow.com/questions/65921799/how-to-convert-dp-to-pixels-in-android-jetpack-compose/65921800#65921800)Kotlin スコープ系の関数で取得できる、というのだが気持ちが悪いです。
これは、以下でも同じ。
“`kotlin
val pxValue = 16.dp.value * LocalDensity.current.density
“`さらに、その他、それぞれの変換もみてみます。
[?【Jetpack Compose】d
Nrealでの録画機能について
# 動作環境
– macOS version 12.3.1 Monterey Intel Core i9
– Unity 2020.3.8f1
– NRSDKForUnityAndroid_1.8.0.unitypackage
– NrealLight モデル:NR-9101GGL
– Xperia 5 Ⅱ SOG02SLA
# 元からある録画機能
NRSDKForUnityAndroid_1.8.0.unitypackageをUnityにインポートすると、Assets/NRSDK/Demosの中にRGBCamera-Recordが作られており、これをbuildするとNrealのカメラから動画が取れる。
アプリを実行すると、録画の設定に関するパネルが表示されるので好きな設定を選んで、赤い丸をコントローラーでクリックする。
Android Studio インストール
# はじめに
Android初心者の方向けの記事です。Android Studioインストールからエミュレータ起動までを書いています!
## Android Studio インストール
AndroidのDeveloperにてインストールできます。
こちらを参考にインストールをして下さい。30GBとかあるのでMacのスペックによりますが、長いと1時間ほどインストールに時間がかかるのでお茶でもしながら気長に待って下さい。
https://developer.android.com/studio/install?hl=ja#mac
## インストール後のトップ画面
![スクリーンショット 2022-06-15 21.25.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1967088/fd2f6004-b680-4676-4f08-a7d30f69da7d.png)
### ① New Project
言葉の通り、プロジェクトを作成できます。「Finish」を押下でプロジェクトが
iPhoneのアプリはどうやってできるのか?
スマートフォンで日々使えるアプリたち。
これらは一体どうやって作られているのか、まとめました。## アプリとは?
アプリとは、「application software(アプリケーションソフトウェア)」の略で、目的にあった作業をする応用ソフトウェアのことです。
具体的には、スマホであれば、ゲームやメッセージアプリ、動画再生など
パソコンであれば。表計算やワープロなどこのアプリたちは、『OS(オペレーションシステム)』上にインストールして使用できるようになります。
#### OSとは?
OSとは私たちが使うすべてのコンピュータ(パソコン、スマホなど)を制御するのに必要な基本ソフトウェアのことです。簡単にいうと、パソコンやスマホを動かすためのソフトです。OSがないと電源を入れても何も表示されず、キーボードから文字も入力できなくなります。一般的なOSとしては、下記があります。
| パソコン | スマホ |
|:-:|:-:|
| Windows , MacOS , Linux , ChromeOS | iOS(iPhoneで使用)、Android|## iO
Droidkaigiの応募ネタが思いつかない人のためのトリガーリスト
# はじめに
Androidエンジニアのみなさん、こんにちは。
今年もDroidkaigiに応募したいけどネタが思いつかない @KentaHarada です。漠然とネタを考えていますが、なにも思いつきません :innocent:
まずはトリガーリストを作って脳を刺激するところから始めてみようと思います :rolling_eyes:# 1. 過去のセッションを振り返る
Droidkaigiでは初心者向けの内容からディープな内容まで幅広いセッションが開催されています。過去のセッションの内容を振り返って雰囲気を思い出してみます。全部みると大変なので 2019年からスタート!### 2019年
– [採択されたセッション](https://droidkaigi.jp/2019/accepted)
– [投稿されたセッション一覧](https://droidkaigi.jp/2019/proposals/)
– [Droidkaigi 2019 Day.1 (YouTube)](https://www.youtube.com/watch?v=4suIJHROcK0&list=P
Flutter の Android アプリでAPKファイルサイズが突然倍くらいになったが、実は問題なくてむしろ推奨された動作だった件
# 概要
* あるアプリで Flutterのバージョンを上げる対応をしたら、Android版として生成したAPKのファイルサイズが倍くらいに大きくなってしまった
* 色々調べると結構複雑な問題が絡んでおり、かつドキュメントが分散していて理解がしづらかった
* 今回APKのファイルサイズが大きくなったのはネイティブライブラリが非圧縮でアーカイブされていたことが原因だったが、これ自体は問題がなく、むしろ推奨動作であることがわかったなお、これは Flutterを使わない通常の Androidアプリにも適用される話です。
# 起こったこと
Flutterの バージョン1系を使っていたあるアプリをバージョン2系を使うようにしたところ、生成されたAPKのサイズが倍くらいになってしまいました。具体的には 100MBくらいだったものが 180MBくらいになったイメージです。
APKの生成は以下のような感じで行なっていて、この処理自体は特に変更していません。
“`
> flutter build apk –flavor production -t lib/main.dart –re