Android関連のことを調べてみた

Android関連のことを調べてみた

Sceneview Android – 3D/ARを体験する –

Android Advent Calendar 15日目を担当させていただきます。@hiraokです。

3Dモデルを使って何かしたいなということで面白そうなOSSがあったので試してみました。

https://github.com/SceneView/sceneview-android

JetpackCompose で 3DとARをロードできるものになります。

導入方法は至って簡単でREADMEに記載の通りセットアップすると使えます。
※3Dを使う場合とARを使用する場合でDependencyが異なるので注意してください。

sampleコードもプロジェクトに用意されております。

https://github.com/SceneView/sceneview-android/tree/main/samples

3Dを読み込むサンプル
・model-viewer-compose
ARを読み込むサンプル
・ar-model-viewer-compose

サンプルを動かすと以下のように動きます。

10時間でアプリを開発~公開したので振り返る

## 宣伝させてください
**seppan**という割り勘を管理するアプリをandroid用にリリースしました。

私は「後で割り勘でもいい?」というシチュエーションが結構あるのですが、いちいちレシートを確認するのが面倒くさくなったので作りました。

会計する時に買った人、物、金額を入力して保存しておけば、後でどっちがどっちに何円払うか簡単にわかるというアプリです。

清算した履歴も見れるので、うちでは「〇月分の水道代まで割り勘してもらってる」というような使い方もしています。

とてもシンプルですが、意外と便利なのでぜひインストールお願いします。

https://play.google.com/store/apps/details?id=com.tatta_chotdog.seppan

## きっかけ
本業でReactエンジニアをしているので、学習も兼ねて何か個人開発をしようと思い調べたところReact Nativeというフレームワークに出会いました。

## React Nativeとexpo
・Reactのお作法とjs/tsの知識があればスマホアプリ開発ができるというフレームワ

元記事を表示

[compose multiplatform 中級チュートリアル 5]compose multiplatformのアーキテクチャを整える

# 前回
[前回](https://qiita.com/shunk0616/private/a61be6e397534ca393e8)はバックエンドの検討でした。

# はじめに
前回の章でsupabaseを使うことは決まったので、環境を作っていきます。

# supabase側の準備
## プロジェクト作成
1. supabaseのダッシュボードに行きます。(やってなかったら会員登録してください。)
2. NewProjectを選択
3. プロジェクトネームとDatabasePasswordを適当な値で入力
4. RegionはNortheast Asiaを選択
5. Create new Projectを押す

## テストデータを追加
1. Databaseをクリック
![](https://storage.googleapis.com/zenn-user-upload/3c7ca4752d10-20231114.png)
2. Create a new tableをクリック
![](https://storage.googleapis.com/zenn-user-upload/

元記事を表示

Android14の変更点を簡単にまとめる

## はじめに
Android14の変更点の主な点をざっくりまとめていきたいと思います。
## 主な変更点
### ・正確なアラームのスケジュールがデフォルトで拒否される
・ここ最近バージョンが上がるごとに厳しくなっている権限関係の変更のようです。
 ・SCHEDULE_EXACT_ALARM 権限がデフォルトで付与されなくなる。
 ダイアログを出して許可を取らないといけなったっぽい。
影響を受けるのは、
 ・Android 13(API レベル 33)以降をターゲットとしている。
 ・マニフェストで SCHEDULE_EXACT_ALARM 権限を宣言している。
アプリケーションになります。

### ・アプリは自身のバックグラウンドプロセスのみを強制終了できる
・killBackgroundProcesses() を呼び出すことで自身のバックグラウンドプロセスを強制終了できるようになります。ただし、範囲はあくまで自身のみで他のアプリのパッケージ名を渡しても意味はありません。
### ・インストール可能な最小APIレベルが23に
・これはそのままです。Android14の端末では、t

元記事を表示

【Flutter】flutter_mapで出来ることって?flutter_mapざっくり解説。

[DeNA 24新卒 Advent Calendar 2023 ](https://qiita.com/advent-calendar/2023/dena-24-newgrad)の 15日目の記事です。

この記事では、Flutterのマップパッケージである、[flutter_map](https://pub.dev/packages/flutter_map)について、さらっと紹介します。

https://pub.dev/packages/flutter_map

flutter_mapは高頻度でアップデートが行われ、使い方などもバージョンによって結構変わってしまいます。
この記事ではflutter_mapのバージョンは6.1.0ですので、「あれ?コード通り実装したのに、そんな関数ないって言われる!」みたいにならないよう、ご注意ください!

[flutter_map Docs](https://docs.fleaflet.dev/)

https://docs.fleaflet.dev/

## 目次
– [環境](#環境)
– [事前準備](#事前準備)
– [

元記事を表示

[compose multiplatform 中級チュートリアル4]compose multiplatformのバックエンドを検証してみる

# 前回
[前回](https://qiita.com/shunk0616/private/8fe95658ab2f64aea302)では見た目を作ってみました。

# はじめに
前回までの章で作ったシンプルなTodoアプリのデータをDBに保存して安全に保ちたいのと、データ分析処理を行いたいのでバックエンドに接続したいです。

ただ、無限に選択肢があるので、検討した全てを書きます。

# 調査
## Firebaseは使えるか?
色々あるけど、Firestoreで実装できたら楽ですね。
ネイティブから直接DBにアクセスできるし、トリガーでfunctionsを呼んでデータ分析を行ったり便利ですからね。

### 良いライブラリはある?
現状のcompose multiplatformの状況から確認するとKotlinでFirebaseの接続をサポートするライブラリはあります。
[これ](https://github.com/GitLiveApp/firebase-kotlin-sdk?source=post_page—–0f3b8d3c84cb——————-

元記事を表示

(覚書)Android版Unity製ゲームアプリからのSpineデータ抽出

## 前提

1. Unity製のひねってないゲームアプリを想定
1. apk自体ではなく起動後にリソースを取得するタイプ
1. リソースが特に暗号化されていない

## 1. リソース取得

1. Android(エミュレータでも可)で対象のアプリをインストール&起動
1. 数GBのリソースダウンロードがだいたいあるので待つ
1. アプリを終了
1. ファイルマネージャやUSB接続経由などで保存先フォルダを確認
1. 以下のような感じ
1. Android/data/com.example.sampleapp/files/UnityCache/Shared
1. Android/data/com.example.sampleapp/files/AssetBundls
1. 該当フォルダの中身を作業用フォルダにコピー
1. 次へ

## 2. 抽出

1. [AssetStudio](https://github.com/Perfare/AssetStudio/releases)をインストール
1. インストールしたAssetStudioを開く
1. A

元記事を表示

JVMとは

# はじめに
毎週1本様々な技術に関する記事を投稿しています。
もし興味のある方は下のリンクから他の記事も見ていただければ幸いです。
[@7_inai_](https://qiita.com/7_inai_)

# JVMとは
`JVM(Java Virtual Machine)とは、Javaプログラムを実行するための仮想環境`です。コンパイラが生成したバイトコードを実行し、プラットフォーム間でのポータビリティを実現します。

# なぜJVMを使用するのか?
### ■高いポータビリティ(移植性)
Javaプログラムが一度バイトコードにコンパイルされると、そのバイトコードはどんな環境でもJVM上で実行可能です。つまり、__同じバイトコードはWindows、Mac、Linuxなどの異なるオペレーティングシステム上で動作__ し、それぞれの環境で同じような結果を返すことができます。このような特性により、__プログラムの再コンパイルなしに異なるプラットフォームで動作させることができる__ ため、ポータビリティが高いと言えます。

### ■メモリ管理とセキュリティ
JVMはメモリ管理とガベ

元記事を表示

Android Studio Hedgehogの便利な新機能

[2023年11月30日にAndroid Studio Hedgehogの安定版リリースがアナウンス](https://android-developers.googleblog.com/2023/11/android-studio-hedgehog-is-stable.html)されました。
私はハリネズミ(Hedgehog)が大好きなので、楽しみに待っていました!

毎年Android Studioはメジャーアップデートがありますが、みなさんは新機能を細かくチェックしていますでしょうか?
全部チェックするのは大変ですよね。そして実際に使う機能は一部だけだったり。

そこで、この記事では、実務で便利だなと個人的に思ったAndroid Studio Hedgehogの新機能だけをピックアップしてご紹介します!

# まずはダウンロード&インストール
公式ページからダウンロードしてください。
なんでこんなこと書くんだって思ったかもしれませんが1点だけお伝えしたいことがあったからです。

![スクリーンショット 2023-12-13 21.11.04.png](https://qiita-

元記事を表示

Androidアプリのテストに(少し)役立つ、いくつかのこと

遊軍的な立場で開発することが多いAndroid開発者です。
最新の技術よりは枯れた内容を相手にすることが多い中、培ってきた技術を共有します。

:::note warn
# 注意(という言い訳)
このページは *試験項目書に類するものがあること* を前提として、
試験の前の手詰まりや後戻りを減らし、問題や気づきを得ることを目的としています。
……つまり曖昧な内容です。

サポートするOSの最小/最新で確認するとか、しきい値を中心に動かすとか、通信を切って動かすとか、入力項目があれば大量のコピペで埋めるとか、文字列にエスケープシーケンスを混ぜるとか、ボタンがあったら同時押しや連打するとか、解像度の低い端末でも確認するとか、クラッキング的な攻撃手法の検証とか、
具体的な項目を挙げて試験技術を向上させる方法は、このページにはありません。

それらの情報が必要な人は、
他のページを参照したり、日本スマートフォンセキュリティ協会さまが展開してくれている資料を読んだりしてください。
:::

『Androidアプリのセキュア設計・セキュアコーディングガイド』【2022年8月29日版】を公開しました

# 1. 開

元記事を表示

【Android】buildscriptはどこに?【Kotlin】

# buildscriptがないぞ?

教本を使ってAndroidStudioを学習中に、AndroidStudioのファイル上に指定された記述がなく困った。
調べ回って解決に至ったので、備忘録として残しておきます。

## どこで詰まったのか
とあるチャプターで、
“`
「build.gradle(Project:hogehoge)」を開き、dependenciesに一行追加する
“`

という工程がありました。
しかし、build.gradleを開いて探しても、
`plugins`があるのみで、`buildscript`及び`dependencies`がありません。

**詰んだ…**

## 解決

しかし、調べてみると、昨今のAndroidStudioでは
“`kotrin
plugins {
id ‘com.android.application’ version ‘7.4.2’ apply false
id ‘com.android.library’ version ‘7.4.2’ apply false
id ‘org.je

元記事を表示

Kotlinコンパイルで出たe: Could not load module をKotlinコンパイラをデバッグして解決するメモ

# 原因
基本的には存在しないクラスを参照していたりして起きています。
なので、Android Studioでそのクラスを開ければ赤くエラーが出ているので解決します。

何もソースコードの位置が出ないので、だいぶ解決が難しいです。
多すぎたりしてクラスを特定するのが難しい場合もあります。

# デバッグ方法

## 事前準備

Kotlinが別のプロセスで動いているとGradleの仕組みでデバッグできないのでプロセス内で動かす必要があります。

> -Dkotlin.compiler.execution.strategy=”in-process”

でin processでビルドできるはずなんですが、できない(デーモンでの起動になってしまう)ので、以下をgradle.propertiesに書きます。

> kotlin.compiler.execution.strategy=in-process

## デバッグ待ち状態にする

以下は:app:kaptGenerateStubsDebugKotlinでエラーが出ている場合です。:app:compileKotlinとかの場合もあります

元記事を表示

Kotlin たまに使うことまとめメモ

思い出したら随時追記していきます。

## ◯非同期でAPIを複数呼びたいとき

“`kotlin

lifecycleScope.launch(Dispatchers.IO) {
val getApiResult = getApi(requestBody)
val getApiSecondResult = getApiSecond(requestBody)

withContext(Dispatchers.Main) {
//APIのレスポンスを使った処理
binding.view = getApiResult.return_data

}
}

//1つ目のapiを呼ぶ関数
private fun getApi(requestBody: GetApiRequest): GetApiResponse? {
val http = RequestApi().getApiRequestObjectPlane().create(GetApi::class.java)
val

元記事を表示

build.gradleの依存に立ち向かう

# はじめに
この記事は [Globee Advent Calendar](https://qiita.com/advent-calendar/2023/globee) の13日目の記事です。
こんにちはGlobeeでAndroidエンジニアをしています屋代です。
皆さんは、ライブラリを有効活用して開発していますでしょうか?

運用期間が長くなっていくと、使用していたライブラリのバージョンアップを行うことがあるかと思います。
何事もなくすっとアップデートが完了すれば良いのですが、ライブラリ内で依存しているライブラリと、別ライブラリ内で依存しているライブラリが競合してしまう場合があります。
そうなると依存の解決地獄、場合によってはアップデートを断念するなんてことも。

今回は、そんな状況に陥っていたAndroid版abceedが健全性を取り戻せた方法をご紹介します。

# 最初に結論
– 大きいライブラリを使う場合は、依存を閉じ込めよう
– 場合によっては、そのライブラリをラップするandroidライブラリを作るのも手
– テストを書いてロジックの恒常性を担保しよう

# And

元記事を表示

Jetpack ComposeでXMLレイアウトからの卒業(超初級)

## はじめに
PHONE APPLI Advent Calender13日目です!
Jetpack ComposeやらKotlin CoroutineやらDagger Hiltやら色々勉強つまみ食いしすぎて、逆に分けわからなくなっているしっがないAndroidエンジニアです。
今回は最近(?)話題のコードベースでレイアウトを構築できるJetpack Composeについて、自分なりに理解したことを初歩の初歩部分ですが記事にしていきたいと思います。

## Jetpack Composeってそもそも何?
Jetpack Compose は、ネイティブ UI をビルドする際に推奨される Android の最新ツールキットです。Android での UI 開発を簡素化し、加速します。少ないコード、パワフルなツール、直感的な Kotlin API を使用してアプリをすぐに動かすことができます。
(※Android Developersサイトから抜粋)

うーん、なんかよく分からん。
百聞は一見にしかずということで、早速使ってみましょう!

## まずはJetpack Composeプロジェク

元記事を表示

Jetpack Composeを使ったSwipeableなPopup UIの実装

こんにちは。今年もこの季節がやってきました。株式会社ZOZOでAndroidエンジニアをしております@zzt-osamuhanzawaです。[ZOZO Advent Calendar 2023](https://qiita.com/advent-calendar/2023/zozo)の13日目シリーズ5の担当します。最近のAndroidのUI実装する際、Composeで実装するのが増えてきたかと思います。今回はComposeでポップアップのような画面上部にユーザーに通知し、左スワイプで消えるようなUIの実装について紹介したいと思います。

## はじめに
スワイプ操作はCompose Material API である[`swipeable`](https://developer.android.com/reference/kotlin/androidx/compose/material/SwipeableState)を利用します。ただし、いきなりですが`swipeable`は今後、[`AnchoredDraggable`](https://developer.android.com/j

元記事を表示

ListDetailPaneScaffoldを触ってアダプティブ時代に備えよう

# はじめに
近年のAndroidは、タブレットや折りたたみ式スマホ、車載カーナビ、スマートテレビなど色んな画面サイズが出てきました。
すべての画面サイズに対応しているアプリは中々無いと思いますが、Googleさん的には「対応してほしい!」と思わせるような発表やリリースが相次いでいます。
いずれリジェクト要因として扱われたとき困らないよう、色んな画面サイズに適応できる技術を紹介します!

# Material3 Adaptive
Material3配下にMaterial3 Adaptiveというライブラリが追加されました。ここにアダプティブレイアウトとして機能するComposeが入っています。
[公式のブログ](https://medium.com/androiddevelopers/new-apis-for-adaptive-layouts-in-jetpack-compose-f27cace48bcd)からは`NavigationSuiteScaffold`と`ListDetailPaneScaffold`の2つが紹介されていましたが、今回は`ListDetailPaneScaff

元記事を表示

【Android】プロジェクト初期にやったこと/失敗したこと

# はじめに
この記事は[Android Advent Calendar 2023 12日目](https://qiita.com/advent-calendar/2023/android)の記事です。
ちなみに、本日12月12日は【良い字一字】の語呂合わせにちなんで今年の漢字が発表される日だそうです。いよいよ今年が終わるのだという実感が湧いてきますね。

さて、皆様にとって今年1年はどんな年でしたでしょうか?
非常に忙しかった、新技術にチャレンジしてドキドキワクワクだった、とにかくバグを潰していたら1年が終わろうとしていた等色々あるかと思います。

自分としては、今年一年は新規プロジェクトに携わることが多い1年でした。
なのでこの記事で新規開発を行う上でやったこと・失敗したことをまとめていこうかと思います。

あくまでほんの一例ですが、これから新規プロジェクトを行う方の一助になれば幸いです。

## プロジェクト初期にやったこと
* 使用技術の選定
* モジュール作成
* build.gradleの整備
* AndroidManifestの整備
* 証明書作成
* サンプルクラス

元記事を表示

Android Studioでフォントを指定する方法

## 背景
カスタムフォントを使いたい。

## 設定方法
https://developer.android.com/jetpack/compose/text/fonts?hl=ja#set-font

指定フォントの準備→ダウンロードしておく
https://fonts.google.com/specimen/M+PLUS+Rounded+1c?subset=japanese&noto.script=Jpan

res/にfontフォルダを作成し、小文字にリネームした指定フォントを配置する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245300/1fdda5a7-030e-a84d-d92d-3e7ef1630605.png)

FontLoader objectを作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245300/e811f063-4579-a46e-a76

元記事を表示

Jetpack ComposeのHorizontalPager上でLazyColumnを動かす時に、横スワイプの効き具合を調整する方法

# はじめに
この記事は[NTTテクノクロス Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ntt-tx)の12日目です。

こんにちは、NTTテクノクロスの笠松と申します。 普段はAndroid/iOSアプリの開発に携わっています。

[`Jetpack Compose`](https://developer.android.com/jetpack/compose)はAndroidのネイティブUIを構築するための最新のツールキットです。2021年7月28日にこのツールキットが安定版リリースとなっており、使用しているチームも多いのではないでしょうか。

この記事ではこの`Jetpack Compose`に関するTipsを紹介します。とてもニッチなケースですが、ご覧ください。

# 本記事で紹介するTips

本記事では以下のように縦スワイプと横スワイプが混在するケースを考えます。

+ `HorizontalPager`により横スワイプで画面を切り替えることができる
+ `LazyColumn`により縦スワイプ

元記事を表示

OTHERカテゴリの最新記事