- 1. Android12で起こったPendingIntentエラーについて(Chuckライブラリ)
- 2. TB(D)RにおけるGPU時間の計測に関する注意; スマホ?でdraw callのGPU時間は計測できない
- 3. Jetpack Compose で Todo アプリを作ってみた
- 4. 【Android】たまに出てくるFirebaseってなんなの?
- 5. 【Flutter】インテグレーションテストでスクリーンショットを自動で取得する。
- 6. Android13から使えるようになるAGSLを試してみた
- 7. Androidエミュレーターの位置情報を好きな位置に設定する方法
- 8. buildSrcディレクトリ で gradleタスクを作成する際にKotlinを使用するにはkotlin gradle pluginの適用が必要
- 9. StateFlowでUiStateとEvent管理をする
- 10. MS/Azure関連ニュースメモ:Windows Subsystem for AndroidのTips and Tricks
- 11. ビルドに使用するJavaバージョンを切り替える方法
- 12. 長くないAndroid端末の見分け方
- 13. 【Coroutinesガイド】チャネル
- 14. Jetpack Composeで親のPaddingを無視してサイズ指定する(ネガティブマージンのようなものを作る)
- 15. 最小限 の Kotlin を最短で学ぶ
- 16. MVVM Architecture with Android
- 17. ReactNativeでAPKファイルを作成する方法【Windows】
- 18. oss-licenses-pluginがOSSをリストアップする仕組み
- 19. a-1-1-3.ActivityとFragment間のデータ受け渡し
- 20. 2022年のAndroidプロジェクトセットアップ
Android12で起こったPendingIntentエラーについて(Chuckライブラリ)
# はじめに
Android12からPendingIntentにフラグの設定が必要になったのですが、使用していた[Chuckライブラリ](https://github.com/jgilfelt/chuck)にもその影響がありエラーになってしまいました。
今回はそのエラーの対応方法についてご紹介します。# 開発環境
PC:MacBook Pro
OS:macOS BigSur
Android Studio:Arctic Fox 2021.1.1# PendingIntentのエラー対応方法
SDKバージョンを31にしてアプリを実行した際に、PendingIntentを使用している箇所で以下のようなエラーが出る場合があります。
“`
PendingIntentを作成するときにFLAG_IMMUTABLEまたはFLAG_MUTABLEのいずれかを指定する必要があります。
FLAG_IMMUTABLEの使用を強く検討してください。
たとえば、インライン応答やバブルで使用する必要がある場合など、
一部の機能がPendingIntentの変更可能性に依存している場合にのみ、FLAG_MU
TB(D)RにおけるGPU時間の計測に関する注意; スマホ?でdraw callのGPU時間は計測できない
クリックベイトサムネイル:
![RenderDoc Event Browser](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100016/b975b455-1140-3bd8-4341-b9ece3e5c56c.png “RenderDoc Event Browser; スマホで Duration の値に意味はない”)
これだけでは何の説得力も無いので, ここではこれらGPUアーキテクチャの動作をはじめ, ドライバの開発者の発言やソースコードの引用を含めた様々な根拠や状況証拠などを挙げて論証する.# TL;DR
##### 結論
モバイル端末のGPUにおいて, render pass 内のGPUタイムスタンプは, 何らかの意味をなす値を持たない:
– draw call(s) ごとのGPU時間の計測を考えることはできない; そのように呼べる実行の単位そのものが, 存在しない.
– 意味をもって計測できるグラフィクスパイプラインのGPU時間の最小の単位は render pass (≈レンダーターゲット
Jetpack Compose で Todo アプリを作ってみた
Jetpack Compose は革命かもしれません。
![Reflector Recording.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/c6166770-b97c-a7d5-af6f-d6ed56140d33.gif)
View に関わるファイルはこれだけ。
RecyclerView, RecyclerViewAdapter, ViewHolder など不要です。
“`kotlin
@Composable
fun TodoScreen(
viewModel: TodoViewModel = hiltViewModel()
) {val items by viewModel.items.collectAsStateWithLifecycle(initialValue = emptyList())
val target by viewModel.targetColumn(
modifier = Modifier.fillMaxSize(),
【Android】たまに出てくるFirebaseってなんなの?
# はじめに
Android開発をやっていてたまに目にする **「Firebase」** という言葉が気になったので、調べたものを記事に残します
Firebaseの公式サイトを見て、どういったものなのかをまとめたものです# Firebaseとは
Firebase公式サイトでは
>Firebase は、優れたアプリを開発し、ユーザーベースを拡大し、収益を高めるためのツールです。インフラ構築に手間取ることなくビジネスを収益化し、ユーザーにとっての利便性に集中できます。とあります。
アプリで使われる、クラウドから提供するサービスの一つ ということですね
Javaコードを書くだけで簡単にサーバーとのやり取りができるのが魅力的ですね# Android プロジェクトに Firebase を追加する
Firebaseをアプリに追加するには、Firebaseコンソールから Firebase構成ファイルをダウンロードし、Androidプロジェクトに移動させるなどの、タスクを行います方法1
1.Firebaseプロジェクトを作成し、androidアプリに接続します
2.Firebas
【Flutter】インテグレーションテストでスクリーンショットを自動で取得する。
Flutterを使って個人で以下のスマホ向けのおみくじアプリ(大御心アプリ)を開発・運用しています。
Android13から使えるようになるAGSL(Android Graphics Shader Language)を試してみました。
Shaderの導入を検討している方、導入してみたいけど何をすればいいか悩んでいる方の助けになれば幸いです。# 開発環境
– Macbook Pro OS Catalina 10.15.7
– Android Studio Electric Eel | 2022.1.1 Canary 8
– Kotlin
– Pixel6 Android13 β(エミュレータ)# 参考元
[公式](https://developer.android.com/guide/topics/graphics/agsl/using-agsl#kotlin)を参考に試しました。# STEP1
いつもどおり新規にプロジェクトを作成します。
今回はJetpack Composeではなくxmlで作成しています。# STEP2
カスタムViewを作成してactivity_main.xmlにサンプルとして320dp x 240dpの作成したカスタムViewを配置します。
公式
Androidエミュレーターの位置情報を好きな位置に設定する方法
今回はAndroidエミュレーターの位置情報を好きな位置に設定する方法を書いていこうと思います。
# Androidエミュレーターの位置情報を設定方法
![スクリーンショット 2022-07-23 15.42.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/dc04963e-1a46-c79b-00d6-f5ea36bc7bc4.png)
まずはエミュレーターを起動し、一番右の三点リーダーをクリックします。
そうするとこの様な画面が立ち上がります。
![スクリーンショット 2022-07-23 15.57.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/8eb81fe5-14f5-70eb-66fe-e6efc638d1f9.png)
位置情報を設定したい箇所にクリックします。
その後右下のSetLocationをクリックすると位置情報が変更されます。簡単に位置情報を変
buildSrcディレクトリ で gradleタスクを作成する際にKotlinを使用するにはkotlin gradle pluginの適用が必要
# サマリー
`buildSrc`ディレクトリを用いてgradleタスクを作成する際にKotlinを使用するには、kotlin gradle pluginの適用が必要でした。
具体的には、`buildSrc`直下に以下のような`build.gradle`を追加する必要があります。“`buildSrc/build.gradle
// デフォルトで適用される分
// http://gradle.monochromeroad.com/docs/userguide/organizing_build_logic.html
apply plugin: ‘groovy’
dependencies {
implementation gradleApi()
implementation localGroovy()
}// 以下カスタム
apply plugin: ‘kotlin’ // これがないと、buildSrc/arc/main以下にKotlinファイルを置いても実行できなくなる(Ctrl+Bでのジャンプでは認識されるけど)
buildscript {
repo
StateFlowでUiStateとEvent管理をする
以前アドベントカレンダーでこちらのQiita記事を書きました。
https://qiita.com/yasukotelin/items/3a6afe861cc9345118d6
この記事が今でもちょいちょいLGTMをもらっているのですが、肝心の自分はこの書き方を全くしておらず、UiのStateもイベントもStateFlowで管理しているので改めて書こうかなと思います。
## まえおき
このStateの管理の仕方は、Android公式を読んでの書き方になっています。
https://developer.android.com/topic/architecture/ui-layer/events
イベント管理をストリームやChannelを使ってイベントバス的に実装するのではなく、イベントも状態として実装しましょう。というようなことが書いてあります。
とは言え現実問題として、消費型のイベントもあります。例えばSnackbar表示やツールチップ表示、画面遷移などです。
これらの消費型のイベントは、文字通り状態を消費することで表現できます。つまり、そのイベントを消費したら空の値なんな
MS/Azure関連ニュースメモ:Windows Subsystem for AndroidのTips and Tricks
https://blogs.windows.com/windowsdeveloper/2022/07/14/windows-subsystem-for-android/
まだ日本に展開されていないWindows Subsystem for Androidについて以下のTipsが紹介されています。
水平スワイプ
Shiftキーを押しながらスクロールホイールを使用すると、水平方向のスワイプに変換することができます。
2本指のスワイプ
ALTボタンを押しながらマウスでクリックやドラッグをすると、2本指でのタッチやスワイプがアプリケーションに送信されます。
ゲームパッドのサポート
ゲームパッドに対応したアプリで使用することができます。
この記事の内容は以下でも紹介されていました
https://forest.watch.impress.co.jp/docs/news/1426/583/amp.index.html
ビルドに使用するJavaバージョンを切り替える方法
# はじめに
gradleファイルに定義しているJavaのバージョンを切り替えた後、AndroidStudio側の設定を変えずにビルドすると、ビルドエラーになります。
上記エラーになった場合の対応として、設定の切り替え方を残しておこうと思います。# 設定の切り替え方
①Android StudioのPreferesceから設定を開きます。
②以下スクショに沿って、Build,Execution,Deployment→Build Tools→Gradleと開いていきます。
![スクリーンショット 2022-07-23 20.13.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354522/7e0ca5ec-01f3-dbc6-f7f8-f8282934a9f3.png)
③上記開いていった先のGradle画面にて、Gradle JDK項目欄のJavaバージョンを任意のものに切り替えます。
![スクリーンショット 2022-07-23 20.15.32.png](https://qiita-ima
長くないAndroid端末の見分け方
Titan Slimを入手したので、その他の特殊な画面サイズの端末と一緒にリソース解像度を取得しました。
“`MainActivity.kt
val qualifier = getString(R.string.qualifier)val configuration = resources.configuration
val dpHeight = configuration.screenHeightDp
val dpWidth = configuration.screenWidthDp
val density = configuration.densityDpi
val swdp = configuration.smallestScreenWidthDp
val aspect = resources.configuration.screenLayoutval LongNo = (aspect and Configuration.SCREENLAYOUT_LONG_NO) != 0
val LongYes
【Coroutinesガイド】チャネル
※ソース記事は[こちら](https://kotlinlang.org/docs/channels.html)
Deferred値により、コルーチンの間で、単一の値を転送する便利な方法が提供されている。チャネルによって、値のストリームを転送する方法が提供されている。
# チャネルの基本
[Channel]()は概念的には、`BlockingQueue`に非常に良く似ている。一つの重要な違いは、blocking`put`操作の代わりに、suspendする[send](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.channels/-send-channel/send.html)を持っており、blocking`take`の代わりにsuspendする[receive](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.channels/
Jetpack Composeで親のPaddingを無視してサイズ指定する(ネガティブマージンのようなものを作る)
こういうやつ。例えばGridで、基本的には`16.dp`の余白を左右に取るが、トップの画像だけは余白を無視したい、みたいな場合。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53293/0dca8119-aaeb-4376-50b7-ef6968df8a9a.png)## 解決策
`Modifier.layout`で調整する。拡張関数を作っておくと良さそう。
“`kotlin
fun Modifier.extraWidth(width: Dp) = this.layout { measurable, constraints ->
val placeable = measurable.measure(
constraints.copy(
maxWidth = constraints.maxWidth + width.roundToPx() * 2,
),
)
layout(placeable.width
最小限 の Kotlin を最短で学ぶ
### 1. 変数
変数は「var」。
“`kotlin
var username: String = “some user name”
“`定数は「val」。Java の final と等価。
“`kotlin
val API_DELAY_CONSTANT: Int = 100
“`null で初期化するには「?」。 null を利用可能にします。
“`kotlin
var myString: String? = null
“`static な定数には「companion object」。
“`kotlin
class Animal {
companion object {
const val DEFAULT_NUM_OF_EYES = 2
}
}animal.numOfEyes = Animal.DEFAULT_NUM_OF_EYES
“`遅れて初期化するには「lateinit」。
“`kotlin
lateinit var user: User
lateinit var items: List
MVVM Architecture with Android
# 概要
アーキテクチャ:アプリーケーションやソフトウェア開発をする上での設計手法
意識することで開発者はある程度同じ構造で開発することができレビューも行うことができるアーキテクチャが存在しないとどうなる?
ActivityやFragmentの処理が膨らみ可読性が低くなる
LifeCycleの破棄時などに処理が再実行されCPUやメモリへの負荷が大きくなる
→よってUIをモデルで操作して永続なデータとして保持することを推奨されているMVVMは大規模なアプリのアーキテクチャに向いている
View → ViewModel → Model
の依存関係がある
※矢印の向きには意味があり向いていない方向の層のことを知らない
(VVMMモデルって覚えた方が楽そう…)### メモ
よく見るMVVMのモデル図がGoogleのアーキテクチャのドキュメントから消えている気がするのですがComposeが主流になりつつある中でアーキテクチャも変化しているんですかね?
理解深まったら記事更新します、詳しい方教えてください# View
### 担当画面の表示や更新
– ViewMode
ReactNativeでAPKファイルを作成する方法【Windows】
# ReactNativeでAPKファイルを作成する方法
## 1. Node.jsインストール
1. 以下のURLからインストーラーをダウンロードする。
– [https://nodejs.org/ja/](https://nodejs.org/ja/)
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449867/f1b145e9-9cd7-c7b1-ce4d-28098e3c52ce.png)
2. インストーラーを起動し、インストールする。
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449867/5be3d647-b449-a94d-0cc6-cae17c437c88.png)
3. コマンドプロンプ開き、以下コマンドを実行する
“`
node –versionnpm –version
“`
4. バージョンが表示されれば成功
![03.
oss-licenses-pluginがOSSをリストアップする仕組み
## はじめに
[OSS Licenses Gradle Plugin](https://github.com/google/play-services-plugins/tree/master/oss-licenses-plugin)は、ビルド時にOSSリストを作成ます。そのリストをもとにOssLicensesMenuActivityでライセンス表示できます。
これまではcookpadさんの[LicenseToolsPlugin](https://github.com/cookpad/LicenseToolsPlugin)を使わせてもらっていたのですが、deprecatedということで代わりにお勧めされたGoogleのOSS Licenses Gradle Pluginを使おうとしました。ところが使ってみるとSTLやらICU4CなどのOSSがリストアップされて、どういうこと?となったのでソースコードを調べて確認しました。
## 仕組み
ビルドを開始すると、OSS Licenses Gradle Pluginは初めにGradleでdependenciesのリストを作成します。以下
a-1-1-3.ActivityとFragment間のデータ受け渡し
### a-1-1-3.ActivityとFragment間のデータ受け渡し
#### 目標設定
[一覧に戻る](https://qiita.com/ryouta33/items/57f5e51a26086151a0da)#### 課題
3. ActivityにFragmentで定義したXMLを組み込めるか。
3. Activityに配置したFragmentのイベントをActivityで受け取れるか。
3. ActivityからのイベントをFragmentで受け取れるか。
3. ActivityからFragmentの呼び出しにパラメーターを追加できるか。#### Github
https://github.com/rwakizaka7/AndroidTest
#### テスト実装
“`kotlin: FragmentTestActivity.kt
class FragmentTestActivity : AppCompatActivity(), TestFragment.OnButtonClickListener {
lateinit var fragment
2022年のAndroidプロジェクトセットアップ
Qiita Nightの資料になります。 ↑ **右下の拡大ボタンを押すと読みやすくなります。**
https://increments.connpass.com/event/251564/—
# どうAndroidプロジェクトをセットアップするか?
takahiromという名前で活動しています。
Androidが好きです。GDE for AndroidやDroidKaigi Co-organizerやCyberAgent Developers Expertなどの活動をしています。
初めてQiitaスライドを使いました。
—
## 初めてAndroidアプリを作りたいという方
Googleから公式のチュートリアルが提供されているので、最新のAndroidの開発について確認してみてください!一緒に開発していきましょう?