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

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

AndroidエンジニアのためのXcodeショートカット

# はじめに
今回は、AndroidStudioでよく使うショートカットのXCode版を紹介していきます
### 本文

読み出し先検索

AndroidStudioでは、関数などの実行箇所や実装箇所を探すのにはcmd+clickですが、XCodeではcmd+Clickが使えるのは関数などの実装箇所のみで実際に呼び出している場所を探すのには該当関数を選択した状態でctr+cmd+shift+hを押す必要があります。
押しづらい上に覚えにくいので、SideBarにある虫眼鏡アイコンからCall Hierarchyで検索する方も多いみたいです。

File検索

AndroidStudioではShift2回押しでファイルを検索できますが、XCodeではshift+cmd+oでプロジェクト内のファイル検索ができます

コード整形

AndroidStudioではcmd+opt+Lでファイル内のコードを整形できますが、XCodeではctr+Iで整形することができます
### 最後に
備忘録としての役割が非常に強いですが、どなたかのお役に立てれば幸いです
AndroidStud

元記事を表示

Splash画像のみ変えたい時(Android)

通常の設定だとSplash画像にはアプリアイコンの画像がそのまま表示されます。
Splash画像のみ変更したい場合、どのようにするのかを共有します。

## 1. Splash用の画像ファイルを用意する

まず、Splash画面に表示したい画像を drawable フォルダに追加します。例えば、**ic_splash.png** という名前の画像ファイルを使うとします。
そして更に drwaableフォルダにxmlファイルを追加。例えば **background_splash** という名前にします。
“`kotlin:xml


元記事を表示

runInterruptible: Coroutine上で時間のかかるコード実行を適切にキャンセルする

みなさんはKotlin Coroutines上で時間のかかる処理を行う際、処理のキャンセルについて意識されてますでしょうか?

この記事ではCoroutine上で動かす、時間のかかるコード実行を適切にキャンセルするには[withContext](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/with-context.html)ではなく[runInterruptible](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/run-interruptible.html)を利用するべきであるという例を紹介します。

時間のかかるコード実行をキャンセルさせる例として以下のようなコードを用意しました。

“`kotlin
runBlocking {
val heavyWork = fun(): String {
p

元記事を表示

DroidKaigi2024で見たセッションのメモ(アーカイブ動画編その1)+所感

[こちら](https://qiita.com/hiro404/items/88228806cd86abe1b372)の続編です。

当日見れなかったセッションをアーカイブで見ています。
見て気になったところや所感をなぐり書きするメモになります。

自分の所感になりますので参考程度にお願いします。実際のアーカイブを見ることをおすすめします。

## [Kotlin 2\.0が与えるAndroid開発の進化](https://2024.droidkaigi.jp/timetable/693342/)

Kotlin2.0でのアップデート内容に関するセッション。

K2モードはbuild.gradleなどがまだできていない部分があり、Android開発ではまだ待ったほうが良さそう。

文法的にはキャストやスコープ、enumなどに変更が入っている。enumはentriesを使うとパフォーマンス的に有利。
backingFieledはviewModelでMutableStateを非公開にしてimmutableなフィールドを公開していたが、このあたりの記述が簡単になる。

power asse

元記事を表示

CmakeのAndroid用ビルドでNDKが見つからないと言われる時

## 状況
CmakeでAndroid用のビルドが必要なためAndroid StudioからNDKをインストールしたがNDKが見つからないと言われる。

## エラー内容
“`
CMake Error at C:/Program Files/CMake/share/cmake-3.29/Modules/Platform/Android-Determine.cmake:217 (message):
Android: Neither the NDK or a standalone toolchain was found.
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.29/Modules/CMakeDetermineSystem.cmake:184 (include)
CMakeLists.txt:3 (project)

CMake Error: CMake was unable to find a build program corresponding to “Ninj

元記事を表示

FlutterのshowDialogのAlertDialogサンプル

– Android、iOS用でそれぞれ環境に合うDialogを出力する
“`dart
import ‘dart:io’;
import ‘package:flutter/cupertino.dart’;
import ‘package:flutter/material.dart’;

class CommonDialogView {
static Future show(BuildContext context, String text) {
return Platform.isIOS
? _showCupertinoDialog(context, text)
: _showMaterialDialog(context, text);
}

static Future _showCupertinoDialog(
BuildContext context, String text) {
return showCupe

元記事を表示

Misuse of Sign in with Google API: Use of `:googleid` classes without use of `GoogleIdTokenCredential`

Ladybug2024.2.1にアップデートしたところ、Lintが次のメッセージで失敗するようになりました。
“`
Error: Use of :googleid classes without use of GoogleIdTokenCredential [CredentialManagerSignInWithGoogle]
val googleIdOption = GetGoogleIdOption.Builder()
~~~~~~~~~~~~~~~~~

Explanation for issues of type “CredentialManagerSignInWithGoogle”:
When using :googleid classes like GetGoogleIdOption and
GetSignInWithGoogleOption, you typically must handle the response using
GoogleI

元記事を表示

初心者エンジニアによるAndroidアプリ開発日記⑤

# まえがき
前回にレイアウトの大まかな実装を行うことができたので、今回はロジックの大枠を実装していきます。

前回は[こちら](https://qiita.com/hukusima65/items/5cf550cd345718f9d57d)

# 目次
* [概要](#概要)
* [アクティビティ実装概論](#アクティビティ実装概論)
* [AppCompatActivityクラス](#appcompatactivityクラス)
* [Rクラス](#rクラス)
* [実装:manifests](#実装manifests)
* [実装:TitleActivity](#実装titleactivity)
* [実装:QuizActivity](#実装quizactivity)
* [実装:IncorrectActivity](#実装incorrectactivity)
* [国旗リソース](#国旗リソース)
* [動作確認](#動作確認)
* [終わりに](#終わりに)

## 概要
この記事では、アプリ全体のロジックの実装内容を記載する。

## アクティビティ実装

元記事を表示

ど素人の私が Material3 と仲良くなるために読んだWebサイト

## デザインできる人ってかっこいいじゃないですかー
7年前にほぼデフォルト設定で作成した Android アプリのデザインを [Material Design 3](https://m3.material.io/) にしたら、かっこよくなれるんじゃないかという素人的な発想でデザインの変更に取り組んでみたら、まぁ時間が溶けていきました。

最初は、Google 検索と ChartGPT とか使えばさくっと終わると思って検索ワードやプロンプトを入力しまくってましたが、なんかうまく動かず、色が変わらん!?という状況でイライラモードになりました。

結局、Material Design の公式サイトを読むところから始めるのが一番良かったというおちになりますが、作業を進めていく間にブックマークした Web サイトをまとめておきます。

## Web サイト集
### 1. Material Design の前に
そもそも Android アプリの Style や theme について知識ゼロの自分が、Material Design の公式サイトを読んだところで、チンプンカンプンになりました。知

元記事を表示

MVP(Model-View-Presenter)をComposeでやってみる

## 要旨

ComposeアプリにおけるアーキテクチャはMVVM(Model-View-ViewModel)がよく用いられるが、今回はMVP(Model-View-Presenter)を用いてアプリを作成していく。

## MVP(Model-View-Presenter)について一言で

Presenterはビジネスロジック(Model)とUi(View)の仲介役である。

“`plantuml
package “Model” {
}

package “Presenter” {
}

package “View” {
}

[Presenter] <.. [Model] : Update [Presenter] --> [Model] : Fetch
[Presenter] <-- [View] : Emit\nUiEvent [Presenter] ..> [View] : Update\nUiState
“`

今年のDroidKaigiアプリはMVPアーキテクチャで作成された。

https://github.com/DroidKaigi/conference-app-

元記事を表示

Jetpack ComposeでActivityを再起動せずにアプリのテーマを変更する方法

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/compose-theme-viewmodel/), 同じく私が作成しました。)*

一般的にAndroidアプリでテーマを変更すると、Activityを再起動する必要があります。しかし、いくつかのアプリを利用していた時、テーマを変更してもActivityを再起動しないアプリをいくつか発見し、興味を持って分析した後、好みに合わせて変更して実装してみました。

## 新しい発見

Android開発をしていると、Activityのライフサイクルで`onCreate`は無条件に1回だけ呼び出されるという事実を知っているはずです。そうやってアプリを開発してる時、`onCreate`が二回呼び出される現象を経験して、原因を調べてみると、ActivityでConfigurationの変更が起こる何かをしたことに気づきます。([参考](https://developer.andro

元記事を表示

グラフライブラリ6. Maven Centralにデプロイする

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/graph-library-6/), 同じく私が作成しました。)*

グループプロジェクトでグラフライブラリを実装する過程をまとめてみました。この記事では完成したグラフライブラリをMaven Central Repositoryへ配布する過程について説明します。([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))

## Sonatype 加入、課題生成

まず、アカウントがない場合は[https://issues.sonatype.org/](https://issues.sonatype.org/)に入って会員登録をします。

![sonatype

元記事を表示

グラフライブラリ 5. タッチ、インタラクション

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://github.com/boostcampwm2023/and09-PriceGuard/wiki/%EA%B7%B8%EB%9E%98%ED%94%84-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-5.-%ED%84%B0%EC%B9%98,-%EC%83%81%ED%98%B8%EC%9E%91%EC%9A%A9))*

グループプロジェクトでグラフライブラリを実装する過程をまとめてみました。今回の記事ではその中でタッチやインタラクション処理部分について説明します。([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))

### 問題 1.グラフの軸ですべてのデータを

元記事を表示

グラフライブラリ 4. デザイン適用

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://github.com/boostcampwm2023/and09-PriceGuard/wiki/%EA%B7%B8%EB%9E%98%ED%94%84-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%EB%94%94%EC%9E%90%EC%9D%B8-%EC%9E%85%ED%9E%88%EA%B8%B0), 同じく私が作成しました。)*

グループプロジェクトでグラフライブラリを実装する過程をまとめてみました。今回の記事ではその中でグラフデザインやテーマの部分について説明します。([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))

# 目標

グラフライブラリ 3. グラフデータの作成

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/graph-library-3/), 同じく私が作成しました。)*

グループプロジェクトでグラフライブラリを実装する過程をまとめてみました。今回の記事ではその中でグラフデータを描画する部分について説明します。([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))

## グラフデザインモチーフ

まず、実装方法を説明する前になぜこのライブラリを実装することになったのか説明します。

ブーストキャンプグループのプロジェクトデザインをする時、Material Designを遵守するデザインで制作しようと思い、グラフのデザインもMaterial的に反映させ

元記事を表示

グラフライブラリ 2. グラフ軸の作成

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/graph-library-2/), 同じく私が作成しました。)*

グループプロジェクトでグラフライブラリを実装する過程をまとめてみました。今回の記事ではその中で核心部分であるグラフ軸を描く部分について説明します。([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))

## 考慮すべきこと

実装する前、軸を描く時どのようなことを考慮する必要があるのか簡単に書いてみました。

– スケールの数
– スケールあたりの範囲
– 目盛ごとの間隔 (px)
– 軸の長さと余白

最初はこのように考えて実装したのですが、テストをしていくうちに考慮しなければな

元記事を表示

グラフライブラリ 1. カスタムビュー生成

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/graph-library-1/), 同じく私が作成しました。)*

グループプロジェクトでグラフライブラリを実装する過程をまとめてみました。この記事ではプロジェクトの初期設定やカスタムビューを作る過程について説明します。([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))

## プロジェクト初期設定

### プロジェクト構造

“`
Project Root

├───app
│ ├───src
│ └───build.gradle.kts

├───materialchart
│ ├───src
│ └───build

元記事を表示

グラフライブラリ 0. 企画、データ構造

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/graph-library-0/), 同じく私が作成しました。)*

グラフライブラリを実装するために必要な企画と資料構造についてまとめてみました。 ([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))

## 企画

![graph_library_plan.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896189/bba0a5cc-674b-fd7c-15dd-37bebead4fe2.png)

まず、私たちのプロジェクト企画に合うようにグラフライブラリを

元記事を表示

iOSとAndroidでPWAをサポート

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/pwa-support/), 同じく私が作成しました。)*

今回、[バスハニャーンサービス](https://hybus.app)をリニューアルしながら、PWAをより良くサポートするための努力を書いてみたいと思います。

## PWAとは?

PWAとはProgressive Web Appの略です。

Web環境でのサービスは比較的発見されやすく、他の人にリンク一つで簡単に共有できる特徴があります。

一方、Nativeアプリのような場合には、システムにインストールする方式なので、ユーザーエクスペリエンスを最大化することができ、アプリドロワーからアプリアイコンをクリックして簡単にアクセスできるという特徴がある。また、Nativeはオフラインでも使用が可能です。

PWAはNativeのこのような長所をWeb環境でも同様にサポートすることができます。

バスハニャーンは

元記事を表示

GitHub ActionsでMagisk Patchを自動化する

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/magisk-automation/), 同じく私が作成しました。)*

GitHub Actionsを利用してMagiskパッチを自動化した経験を書いてみます。

## 既存の方法

Magiskをパッチする方法は下記の通りです。

1. Factory Imageをダウンロードします。
2.解凍後、boot.imgを抽出します。
3.boot.imgを携帯電話に移動した後、Magiskアプリでboot.imgを入れてパッチを適用します。
4.パッチを適用したboot.imgをコンピュータに戻し、携帯電話をfastbootモードにします。
5. `fastboot` コマンドを使ってboot領域にパッチを適用したboot.imgをフラッシュ(flashing)します。
6.再起動したら完了

アンドロイドスマホは毎月セキュリティーアップデートが出ますが、root権限を

元記事を表示

OTHERカテゴリの最新記事