Android関連のことを調べてみた2020年12月04日

Android関連のことを調べてみた2020年12月04日

DependabotをAndroidプロジェクトで使う方法

[Dependabot](https://dependabot.com/)は、依存しているライブラリのアップデートをチェックし、自動でPRを作ってくれる便利なbotです。

Androidプロジェクトでも、GitHub上からポチポチするだけで簡単にセットアップすることができたので、手順をご紹介したいと思います。

※ 個人のプライベートなAndroidプロジェクトで試しました。 `app` モジュールのみのオーソドックスなAndroidプロジェクトです。

#手順

– リポジトリを開きます。

– タブにある **Insights** を選択します。
超簡単にAndroidアーキテクチャに入門してみた

今年の9月から、Androidアプリ開発をすることになりました
しかしながら、前職は組み込みソフト開発でC言語。Kotlinどころかクラスアーキテクチャも知りません。
ということで、超簡単なプロジェクトを題材にAndroidアーキテクチャを考えてみました!

ご指摘お待ちしております

# 題材
題材はこちら
![project.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/924658/c167d649-c780-f213-01b0-66a5cf4cebc4.png)

* 中央のフォームに名前を入力する
* REGISTERボタンを押す
* 念のため端末のストレージに入力された名前を保存する
* 「Hello 〇〇!」と表示する

たったこれだけのシンプルなものです
挨拶だけはしてくれるので自粛中の寂しいクリスマスにでもどうぞ

参考にした素晴らしい記事:
[Webアプリケーション開発者から見た、MVCとMVP、そしてMVVMの違い](https://qiita.com/shinkuFencer/i

元記事を表示

React Native 2020年の振り返り

この記事は [React Native アドベントカレンダー](https://qiita.com/advent-calendar/2020/react-native) の 3 日目の記事です。

去年、[React Native 2019 年の振り返り](https://blog.naturalclar.dev/react-native-review-2019/)を書いたので、今年もやります。

それでは、振り返っていきましょう。

## 2020/01

今年の 1 月は React Native 0.62 の rc リリースを進めていたりと、外部的に目新しいイベントはなかった印象を受けます。
個人的なイベントとしては React Native Community の Org の一員になれたことが大きいです。

前回の記事の最後にて、今年は React Native Community の一員になる!と宣言したのですが、今年入って一週間ちょっとで達成しました。

Community の Discord で facebook や microsoft, callstack のメンバーが

元記事を表示

ABCD2020Autumn参加レポート

##概要
2020年11月21日(土)に開催されたAndroid Bazaar and Conference Diverse 2020 Autumnの参加レポートです!

![unnamed.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394720/a6bd8142-8093-1bb8-7eee-90e5ab44ee7f.png)
いつもは大学などの広い会場で開催されるABC/ABCDですが、
今回は東京(オンライン)と香川(サンポート高松 かがわ情報通信交流館(e-とぴあ・かがわ))と初の2拠点開催でした!

テーマは
「今こそ始めようワーケーション
~ コロナ禍で変わるAndroidビジネス、地方における働き方の変化と、技術を利用した新しいビジネスの探索 ~」

新型コロナウィルスが猛威をふるい、働き方が変わってる昨今の情勢だからこそ届けたい&知りたい情報がたくさん詰まったイベントでした!

公式サイト ▶️ https://sites.google.com/view/abcd2020a/

##

元記事を表示

【Android】BadgeDrawableをImageViewでなんとか使ってみる方法

# はじめに

通知の件数表示などに使える `BadgeDrawable` ([Badge – Material Design](https://material.io/develop/android/components/badging))ですが、サクッと使用することができ非常に便利です。

↓のように書くと…

“`kotlin
bottomNavigationView.getOrCreateBadge(R.id.navigation_home).apply {
number = 10
}
“`
HomeのタブにBadgeが付きます。

ただ、現状(material-components-android v1.2.1)だと `BottomNavigationView` か `TabLayout` からしかサクッ

元記事を表示

iOS/Androidアプリにおける状態管理の複雑さにリポジトリパターンを拡張して立ち向かう

# 前置き

これはiOS/Androidに代表されるモバイルアプリにおいて、複雑になりやすい状態管理をリポジトリパターンの解釈を広げて解決しようという記事です。
今回説明するのはアプローチの一つなので、あくまでたくさんある意見の中の一つとして聞いて頂けると幸いです…!

# iOS/Androidアプリにおける複雑さはどこから来るのか

最近のモバイルアプリは肝心なロジックはだいたいサーバーで持っていて、アプリはJsonなどのデータを受け取って表示するだけになっていることが多いも思います。
ただサーバーから渡されたデータを受け取って画面に表示するだけという、とてもとてもシンプルなことをしているはずなのにいつもバグに悩まされたりするのはなぜでしょうか?

## 状態管理の難しさ

私は**iOS/Android等のモバイルアプリの複雑さの半分以上は状態管理から発生している**と思っています。
サーバーから取得したデータをアプリ内キャッシュという形で`SQLite`や`SharedPreferences`/`UserDefaults`等の設定値、あるいは`Redux`,`Flux`におけ

元記事を表示

[Android]GitHub Actions + gradle play publisher(GPP)でStoreに自動デプロイする

GitHub Actions + [gradle play publisher(GPP)](https://github.com/Triple-T/gradle-play-publisher)でStoreに自動デプロイする設定を説明する。
fastlaneなどでPlay Storeにデプロイした経験がある人向けの説明。初心者向けではない。
大体、公式のREADMEどおりに設定すれば良いが、少しだけハマりどころもある。

## 構成
アプリのソースコードはGitHub上に公開する。
第三者によるアプリのビルドは許可するが、Store上の自分のアプリを上書きする形でのアップロードは禁止する。

なので、keystore[^1]、keystoreのパスワードなどの情報は、リポジトリ管理対象のファイルには含めない。
Storeアップロードに使うGCPの認証情報もファイルに含めない。

Storeのアップロード先は内部テストトラックで、アップロード時点で完全公開とする。
アプリの形式はapkでなくaabとする。

## gradle play publisherの設定
### 事前設定
grad

元記事を表示

Pixelシリーズの尿液晶を改善する

# 概要

– GoogleのPixel4a(5G)を購入しました
– Pixelシリーズはディスプレイに有機ELを採用しているようで全体的に黄色味がかっています
– どうにか液晶のような青白い系の色味にしたいです
– 液晶じゃないのに尿液晶とはこれいかに。

# 解決方法

– [Screen Barance](https://play.google.com/store/apps/details?id=co.uk.quickdoc.screenbalance)をというアプリをインストールします。
– アプリを立ち上げるとOSから許可を与えるかどうか聞かれるので、与える方向で回答します
– アプリが起動したら画面の下の方に4つスライドバーがあります
– そのうち一番上のスライドバーを左右にスライドすると色味が変わります
– スライドさせると色味の名前が表示されますが、「Shade」か「Daylight」あたりが青白い寒色系の色味になります

# 紹介動画

– [Screen Balanceの開発元による紹介動画](https://youtu.be/0zi8LjYbEC4)

元記事を表示

Droid君との歩き方

この記事は大阪工業大学[Advent Calendar](https://adventar.org/calendars/5332)の3日目です。

#最初に読んでください\_Droid君との歩き方\_IC・IM・IN・IS

新しいものに触れる際に大変なのは**環境構築**とそれの**学び方**だと思います。
そこでこの記事では、これまでの経験から個人的に良かったなと思ったAndroidの学び方について書いていこうと思います。

#学び方

ここではAndroidでのリスト表示を学んでいく過程を説明することで、Androidの学び方を伝授しようと思います。

##調べ方を知ろう

まず初めに学ぶにあたってとても大切な調べ方について。
例えばAndroidでリスト表示の仕方がわからないとき「Android リスト表示」のように**日本語で調べる**かと思います。
しかし、それを一度**英語で調べるだけで有益な情報を見つけやすくなります**。

具体的には「how to display list in android」等で調べると良いです。

##質問サイトを積極的に見よう

調べ方の次

元記事を表示

Android StudioでA problem occurred configuring project ‘:app’.が出た時の対処法

#経緯

Android Studioで他の誰かから受け取ったプロジェクトを開いてみると、

A problem occurred configuring project ‘:app’.

というエラーが表示されることがある。

すごい簡単に解決できるエラーなのに、全然解決方法が出てこなかった。

#解決方法

「local.properties」を開いて、
ndk.dirのパスを直す。

これだけ。

sdk.dirのパスは既になっており、「Sdk」で終わっているはずなので、
ndk.dirはSdk/ndk-bundleにする

もっと具体的に書くと、
ndk.dir = “hogehoge/Local/Android/Sdk/ndk-bundle”
sdk.dir = “hogehoge/Local/Android/Sdk

とするだけ。

sdkのパスはAndroid Studioでプロジェクトを開いた際に自動で変更してくれるが、ndkのパスは変更してくれない。

だからややこしかった。時間がかかった。

どうせなら両方直してくれればいいのに。

元記事を表示

【Windows10】証明書ピンニングのバイパスしつつAndroidアプリの脆弱性診断

## はじめに

脆弱性診断していて、証明書ピンニングでAPIの診断ができなかったアプリがあったのがきっかけです。
証明書ピンニングの解除ができなかったためバイパス手段を探して無理やり診断した時の手順の纏めです。
基本はMacでも同じで、コマンドを適宜変えれば行けるはずです。
iOSは未検証です。
悪用しないようにお願いします。

## 検証環境など

### 利用したもの
xxxxアプリ(診断対象のAndroidアプリ)
Pixel3a(Android9,開発者モードON)
Windows 10 Pro
Android Studio(のadbコマンド)
WindowsとAndroidを繋ぐUSBケーブル

### 前提
Fridaを使います。
最初PowerShellでその後GitBash使っていますが、試行錯誤してる間に途中からGitBashが楽だなと思って変更しました。
Androidアプリの通信を取得する手法はBurpSuite+Androidなどで調べてください。
今回はbypassの手順だけ纏めます。
USBでWinとAndroidを接続しておきます。

## Fridaク

元記事を表示

[Android]Gradleの依存関係のimplementation/apiの使い分け

Gradleの依存関係のimplementation/apiの使い分けについて。
[Android公式](https://developer.android.com/studio/build/dependencies?hl=ja#dependency_configurations)の説明は、正しく詳細なのだが、中々理解できなかった。
ようやくimplementation/apiの使い分けが腑に落ちたので、まとめる。

最初は、ユースケースで考えた方が分かりやすいと思う。

– ライブラリモジュールの場合
– ライブラリのAPIに使う依存ライブラリ -> “api”
– そうでない依存ライブラリ -> “implementation”
– アプリモジュールの場合[^1]
– “implementation”を使う。”api”でも動作変わらないが、あえて使う理由はない。

この後の説明長いが、ここを抑えておけば、読まなくても害はなさそう。

## ケーススタディ

自作ライブラリに、以下のAPIがあるとする。

“`kotlin
data class User(val id:

元記事を表示

Dagger Hiltの@InstallInチェックを無効にする

# 概要

[Dagger Hilt](https://developer.android.com/training/dependency-injection/hilt-android?hl=ja)では「Hilt Component」という形で予め用意されたComponentを使用することでComponentの構造に悩むことが無くなり、AndroidでのDI(Dependency Injection)をよりシンプルに利用可能です。

Hiltでは、`@InstallIn`アノテーションでModuleをどのHiltコンポーネントにインストールするかを指定します。これにより、どのコンポーネント階層以下でBindingを利用できるかを制御できます。そのため、`@InstallIn`アノテーションを付け忘れると正常にBindingが提供されずエラーになります。

# Dagger Hiltの`@InstallIn`チェック

Hiltは、デバッグを容易にModuleに`@InstallIn`アノテーションをつけ忘れた場合にエラーを発生させビルドを失敗させます。

例として次のようなModule

元記事を表示

Unity as a LibraryによるUIネイティブ化

こんにちは、mizogucheです。2015年9月にクラスターに入ったのでもう6年目です。

この記事は[クラスター Advent Calendar 2020 – Qiita](https://qiita.com/advent-calendar/2020/cluster)の2日目の記事です。

# Unity UIでの課題
UnityでUIを実装すると普段使っているネイティブアプリの操作性と違った触り心地になります。

ネイティブアプリで簡単に実装できるUIの操作性をUnityで再現するコストはかなり高く、たとえばiOSにおける戻るジェスチャ、Androidにおけるバックボタンなど、OS固有の操作はネイティブUIだと何も実装しなくても実現できる[^1]一方で、Unityではそれぞれのプラットフォームごとに独自に実装していく必要があります。

感覚的なものでいうと、スクロールビューのスクロールの感触なんかもUnity、iOS、Androidでそれぞれ違うので、Unity製のアプリだと他のネイティブアプリと比較して触り心地がよくないのが正直なところです。

Unityのランタイムの起動に時

元記事を表示

開発者ごとでなく、プロジェクトごとにFlutterのバージョンを管理する

Flutterのアップデート、まだまだ激しいですよね。
以前チーム開発していた時も、

– **他の開発者とのFlutterのバージョン違いによりAPI定義が異なりエラーの嵐→無駄なコミュニケーションの発生**
– **自分のPCのFlutterのバージョンを上げてしまったところ、ビルドできなくなったといった報告の対応**

など、プロジェクトごとでなく開発者ごとにFlutterのバージョンを管理しているために起きてしまう問題がいくつかありました。また、OSSや個人開発などでも使用するFlutter SDKのバージョンを固定したいこともあるかと思われます。

**本記事では、開発者ごとでなく、プロジェクトごとにFlutterのバージョンを管理する方法を紹介します。**

# FVMを用いる場合

FVMはFlutter SDKバージョン管理ツールです。

https://github.com/leoafarias/fvm

導入についてはこちらの記事が日本語で分かりやすいので、説明は割愛します。

https://qiita.com/Kurusu_ima/items/2dfd067f6

元記事を表示

AndroidStudioメソッドのパラメータを確認する方法

#動機
プログラミング学習していて、ふと気になったことが。
メソッドを入力した時に表示されるこれ。何をパラメータとして持つのか、ぱっと見で分かるので便利。
![2020-12-01 (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599059/960122a5-4b55-e487-1471-b8643f928220.png)
しかし、入力し終えると直ぐに消えてしまう。
どうにかしたいものだ。調べると、解決策は見つかった。
![2020-12-01 (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599059/4977c662-45df-ce29-a604-91d8199fefcb.png)
#解決策

調べたいメソッドにカーソルを合わせて「Ctrl + p」以上。※Macの方は、「Cmd + p」
また、他にもViewタブから「Parameter Info]によっても可能だ。ちなみに、その横にショートカットキ

元記事を表示

【Android】画像にRGBコードで色設定してみた

主流は16進数カラーコード(#FF0022)だと思いますが、
RGBカラーコード(255, 0, 34)の形式で色変更を行いました。

実際の業務でやった内容の備忘録っす!

・backGroundcolor()をセットするのではなく、colorFilterを適用する!
・RGB値はColor.rgb()でRGB値を変換して適用する!

#クラス:カラーマスタ(MstColor)
データベースのカラム情報をそのまま使います。

・カラーコード(番号)
・カラー名
・R値
・G値
・B値

本当はもっとあるけど…とりあえず必要なものだけ。

“`kotlin
data class MstColor(
val color_code: String,
val color_name: String,
val r_code: Int,
val g_code: Int,
val b_code: Int
)
“`

#レイアウトと画像

サンプルのレイアウトにImageView追加しただけです。

“`xml

元記事を表示

【Android】Single ActivityにおけるsharedViewModelのスコープについて【Koin】

# はじめに
KoinでViewModelをインジェクトする際には、`viewModel()`と`sharedViewModel()`の二つのやり方がある。
僕が担当しているアプリでは基本Fragment-ViewModelで一対一の関係になっているのだけど、ViewPagerを使用していたりするとViewModelをFragment間で共有したい場面が多くて、そういう時に`sharedViewModel()`が大活躍してくれる。

ただ、今までなんとなく`sharedViewModel()`を使ってきてしまったが故に、こないだちょっと沼にハマってしまった。
今回はそんな`sharedViewModel()`で共有したViewModelのスコープについてご紹介。

## sharedViewModelとは?

前述の通り、ViewModelを**Fragment間で**共有できるViewModelをインジェクトする。
と、今まで思っていた。

というのも実はこの`sharedViewModel()`、インスタンスを共有するスコープがデフォルトでActivityになっているらしい。
中の

元記事を表示

Androidの自作ライブラリの処理実行時にNoClassDefFoundErrorが起きる

## 概要

– 自作ライブラリの処理の実行時に、NoClassDefFoundErrorが起きる
– 直接の原因は、自作ライブラリをMavenリポジトリにデプロイする際に、自作ライブラリが依存しているライブラリの情報が欠落すること
– 依存ライブラリの情報が欠落するのは、Maven Publishプラグインの設定が間違っているから
– Android公式のMaven Publishプラグインの設定にしたら問題は解決した
– https://developer.android.com/studio/build/maven-publish-plugin?hl=ja
– 特に理由がないなら、公式の設定におとなしく従っておきましょう

## 前提

アプリX、自作ライブラリY、外部ライブラリZがある。
アプリX -> 自作ライブラリY -> 外部ライブラリZの方向に依存関係がある。
自作ライブラリYも外部ライブラリZもMavenリポジトリにホストしている。

## 遭遇したこと

アプリXのビルドは通るが、自作ライブラリY内の外部ライブラリZを使う処理の実行時に、NoClassDefF

元記事を表示

もしあなたが急にAndroidアプリを業務で作るはめになった場合の選択肢(2021年初頭版)

本記事は[Android Advent Calendar 2020](https://qiita.com/advent-calendar/2020/android)の2020/12/01分です。

初っ端ということなので、2020年末と2021年頭でのAndroidエンジニアとして初めて業務でやる場合に抑えておいたほうが良い最低限の部分を書いていこうと思います。(ツッコミ待ちです)

# 対象
– 2021年3月ぐらいまでに **!!業務!!** でAndroidアプリを作らされる事になった可愛そうな人が居たとします
– この人は手続き型言語でオブジェクト指向プログラミングができる知識があり、Androidアプリもなんとなく趣味で作ったこともあるぐらいのレベル感です~~(なので上長からいきなりお前Android担当なと言われた)~~
– 最低限のAndroidアプリの作成の知識はあるものとします(画面の表示にはActivityがいるよとかは書かない)
– ゲームは対象外です
– 業務でAndroidアプリを作ることを想定しています(≠趣味)
– toB toCどちらを作るにしても必

元記事を表示

OTHERカテゴリの最新記事