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

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

[Android]keystoreのパスワードが間違っていると出た時

Android開発中にテストしようとDeployGate用ににbundletoolを使ってaabから署名付きapksを作ろうとしたときにエラーが出たので、その時の解決策を載せておきます。
ネットにあったやり方はいろいろ試してみましたがうまくいかなかったので、自分なりにやってみたらできてしまったやつです。

#<問題>

“`
bundletool build-apks –bundle=release.aab –output=release.apks \
–ks=/Users/hoge/.android/release-key.keystore \
–ks-pass=pass:パスワード \
–ks-key-alias=エイリアス \
–key-pass=pass:パスワード

[Error] Keystore was tampered with, or password was incorrect
“`

絶対パスワードもエイリアスもあっているのになあと思っ他のですが、一応分けて実行してみました。
↓↓↓

#<解決策>
エイリアスを入力、パスワードは聞かれるまで入力

元記事を表示

【Unity】Android アプリでスクショや画面録画などを禁止する

# 背景

アプリによっては、セキュリティやコンテンツ的にスクショや画面録画を禁止したいときがあると思います。
そのとき Android の機能である `WindowManager.LayoutParams.FLAG_SECURE` を Activity の `OnCreate()` で呼ぶ必要があります。

しかし、Unity だとどうするのか分からなかったので調べてまとめた記事になります。

# FLAG_SECURE を設定するとどうなるか

– スクショを無効化
– 画面録画(スクリーンレコーディング)をすると、録画した画面が真っ黒になる
– タスク画面・タスク一覧で、アプリ画面を真っ白にできる

# 動作確認環境

– Unity 20184.22f1

※ Unity2018.2以前のバージョンを使っている場合は、以下の手順とは異なるかと思いますので、ご注意ください。

# 手順

Unity + Android で実現するためには、

1. `UnityPlayerActivity` を拡張して新しい Activity を定義する
2. 新しい Activity が使用さ

元記事を表示

Androidの非同期処理「AsyncTask」の基本の基

##Androidの非同期処理「AsyncTask」について

AsyncTaskをなんとなく利用しておりましたので、改めて基礎をまとめてみました。

※主に自身の毎日の復習・学習の機会創出、アウトプットによる知識の定着を目的としております。
暖かい目で見ていただけますと幸いです。

##そもそも非同期処理とは
同期処理: あるタスクを順番に実行すること。
非同期処理:あるタスクが実行をしている際に、他のタスクが別の処理を実行すること。

##なぜ非同期処理させる必要があるのか
仮に、もし非同期処理をしなかった場合を考えてみます。
AndroidやSwift、webアプリなどででユーザーが操作している際、例えば何か情報(動画一覧・検索結果一覧など)を取得する際、同期処理だと取得の処理が終わるまではUIなどの他の処理が一切できず画面は止まったままになります。
そうなると、ユーザーからしたらアプリが止まった(バグの)ように感じてしまいます。

非同期処理で実装するとUI・画面を良い感じに見せながら、並行して情報取得(動画一覧・検索結果一覧など)の処理を実施することができます。そうすることに

元記事を表示

Kotlin Android Extensions から View Binding に置き換える

今更ですが、Kotlin Android Extensions が非推奨になりましたね。
公式としては、View Binding を使うことが推奨されています。

– [Migrate from Kotlin synthetics to Jetpack view binding](https://developer.android.com/topic/libraries/view-binding/migration)

`./gradlew build`コマンドを実行すると、以下のような警告文が出力されます。

“`
Warning: The ‘kotlin-android-extensions’ Gradle plugin is deprecated. Please use this migration guide (https://goo.gle/kotlin-android-extensions-deprecation) to start working with View Binding (https://developer.android.com/topic/librari

元記事を表示

Android 学習記録 リポジトリパターン

# 目的
ここ半年、サーバサイドの開発ばかりやっていてAndroidの開発やってないなぁと思い、リハビリがてら勉強しようと思いました。
リポジトリパターンを使った実装というのをやったことがないので、試しにやってみたいと思います。
自分のための勉強メモとしての意味が強いので、他人から見たらよくわからないかもです。すみません。

## 私のAndorid開発のレベル
##### 開発期間
– 1年ちょいくらい

##### 言語
– Java(業務で使用)
– Kotlin(プライベートで少し触ったくらい)

##### 知ってること
– Androidの基礎知識は大体。
– アーキテクチャはMVVMだけ(他にあまりメリットを感じない)。
– Retrofit+RxJavaは多少経験あり。

##### 知らない事
– 割とモダンなこと(流行とか)は知らない
– リポジトリパターンも概念しか知らない
– Dagger(AndroidというよりJava?)も使ったことない。

# 学習サイト
以下のリンク先で勉強!
https://developer.android.com/cours

元記事を表示

AndroidのHiltをkotlinで実装する

Hilt は Android 用の依存関係インジェクション ライブラリです。これを使うことで、プロジェクトで依存関係の注入(DI)を手動で行うためのボイラープレートが減ります。Daggerが非常にわかりやすくなっていたので、これからHiltを使ってみましょう。

###ライブラリの導入###
####まず、hilt-android-gradle-plugin プラグインをプロジェクトのルート build.gradle ファイルに追加します。

“`
buildscript {

dependencies {

classpath ‘com.google.dagger:hilt-android-gradle-plugin:2.28-alpha’
}
}
“`
####次に、Gradle プラグインを適用し、app/build.gradle ファイルに次の依存関係を追加します。

“`

apply plugin: ‘kotlin-kapt’
apply plugin: ‘dagger.hilt.android

元記事を表示

Androidアプリ開発における便利なライブラリたち

# はじめに
今回は僕がAndroidアプリ開発においてとても便利だと感じたライブラリを紹介していきます。

# 1. Timber
[Timber](https://github.com/JakeWharton/timber)とはAndroidの通常のLogクラスの上にユーティリティを提供する、小さくて拡張可能なAPIを持つロガーです。

Android界隈では超がつくほど有名なあのJakeWhartonが作ったライブラリです。

通常Andriodにおけるログは

“`kotlin
Log.d(“debug”, “hogehoge”)
“`

というふうにログを出力しますが、このTimberを使うと

“`kotlin
Timber.d(“debug: hogehoge”
“`
というふうに引数を一つ減らしてログを出力できます。
このTimberはAndroid標準のLogクラスをラップしているらしいので非常に軽量です。

またrelease版ではログを出力したくない場合もあると思いますが、それはアプリケーションクラスで

“`kotlin
class MyApplica

元記事を表示

StateFlowがDataBindingに対応したらしいので、記事などまとめ

# 以下参考になりそうな記事とか
[Android Studio Release Updates: Android Studio Arctic Fox Canary 4 available](https://androidstudio.googleblog.com/2021/01/android-studio-arctic-fox-canary-4.html)
DataBindingにStateFlowが対応したよっていう告知

[StateFlow vs LiveData : android_devs](https://www.reddit.com/r/android_devs/comments/goy67h/stateflow_vs_livedata/)
どう違うの?っていうのを解説してくれてます!ありがとう海外の仲間よ!

[android – How to replace LiveData with Flow – Stack Overflow](https://stackoverflow.com/questions/65643610/how-to-replace-lived

元記事を表示

(Android) DataBindingを使ってテキストを動的に変更する

## はじめに
前回は [DataBindingを使って静的テキストを表示させてみる](https://qiita.com/kilalabu/items/89ddce5e5c3848acab0f)を紹介しました。
今回はこれに少し手を加えて、ボタンをクリックするとテキストが切り替わるアプリを実装します。

## クリック後、データを変更するためのインターフェースを定義
“`java:SampleEventHandlers.java
public interface S

元記事を表示

FlutterでstatelessなTextFieldを作ったので宣伝したい

# はじめに
FlutterやReactにおいて、大きな関心ごとの一つに状態管理がある。
TextFieldはその性質上、自ら状態を持つ設計になりやすい。
しかし、TextFieldの入力情報をcallbackで返し、TextFieldの引数に現在値を与えることでTextFieldが状態を持たないようにできる。
ユースケースは`Provider`などの状態管理ツールを入れているプロジェクトに限定されると思うが、私が欲しいと思ったので、今回作成した。
ついでに勉強がてら公開してみた。

## メリット
– TextFiledの状態を自前で管理できるようになる(Provider, redux, Reverpod, BLoc, etc…)
– 他のwidgetの状態と連動させやすい

## デメリット
– 自前で状態管理するコードを書く必要がある
– rebuildのタイミングを把握していないと、文字列入力中にwidgetがrebuildされ、文字が消えることがある

## 先行記事
Flutterにおける状態管理は様々な手法がある。[こちらの記事](https://medium.com

元記事を表示

改めて「architecture-samples usecase」ブランチからUseCaseの使い方を学んでみる

随分と久々の投稿になってしまいました。
前回の投稿から1年以上経過していますね。

今回は、「[Android Architecture Blueprints – Use Cases/Interactors in Domain layer](https://github.com/android/architecture-samples/tree/usecases)」を改めて読み込んでみました。

弊社アプリではオニオンアーキテクチャを採用していますが、
その文脈のDomain(or Application) ServiceにUseCaseを配置しようと試みています。
その参考のため、上記のGithubリポジトリが非常に参考になりそうでした。

※本投稿では、オニオンアーキテクチャとそれに関する用語は説明しません…m(_ _)m

# UseCaseはどの様に使われているか

結論は、ViewModelのコンストラクタ引数としてインジェクトされています。

“`
class SampleViewModel(
private val aaaUseCase: AaaUseCas

元記事を表示

getPackageManagerでインストールアプリ一覧が表示されない(Android11・APIレベル30)

これまでgetPackageManager()#getInstalledPackages()を用いれば簡単に端末内のインストールアプリ情報を取得することができました。
しかし、Android 11(APIレベル30)からは単に下記のようなコードを記載するだけではシステムアプリ情報しか取得できなくなりました。

**例)デバイス内のインストールアプリをLog出力する**

“`MainActivity.java
PackageManager pm = getApplicationContext().getPackageManager();
List appInfoList = pm.getInstalledPackages(0);
for(int i =0;i

元記事を表示

ConstraintLayoutの高級属性を使いましょう

現在プロジェクトを新たに生成する時、ConstraintLayoutが自動で作られました。
今回は開発の実用例によって説明します。
###GuideLine
1. 補助線の方向を設置する ログイン画面でよく使われたレイアウトです。
android:orientation=”vertical”
layout_constraintGuide_begin 左側と上の距離
layout_constraintGuide_end 右側と下の距離
layout_constraintGuide_percent パーセント%で設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906922/5c9d5e34-aa9c-45c4-fc71-52dcf60c7ba1.png)
      
 

“`
AndroidスマホをNFCタグにかざして家電を操作する方法

iPhone(iOS13以降)ではショートカットを利用してNFCタグにスマホをかざして家電を操作する方法がありますが、Androidスマホでも同じことができないか色々調べて試してみようと思いました。
そこで今回はNature Remoを利用してNFCタグにAndroidスマホをかざして家電を操作する方法についてまとめました

#準備するもの
・PC
・NFC対応Androidスマホ
・Nature Remo(旧版でもminiでもOK)

・NFCタグ(対応しているものをお使いください、以下は例です)

・Na

元記事を表示

【Android】公式に記載されている Glide のセットアップ方法は間違っている

# あらすじ

[Glide](https://github.com/bumptech/glide)の README の「Download」を見ると、Gradle のセットアップ方法が以下のように記載されています。

“`app/build.gradle
dependencies {
implementation ‘com.github.bumptech.glide:glide:4.11.0’
annotationProcessor ‘com.github.bumptech.glide:compiler:4.11.0’
}
“`

`./gradlew build`コマンドでビルドをしていた時に、Glide で以下のような警告が出ていることに気付きました。

“`
app: ‘annotationProcessor’ dependencies won’t be recognized as kapt annotation processors. Please change the configuration name to ‘kapt’ for these artifact

元記事を表示

rooted+MagiskなAndroidのアップデート

rooted+MagiskなAndroid端末にアップデートをあてるには、いくつか作業があります。
今回は下記前提条件のもとでAndroid端末にアプデをあてたいと思います。

# ■前提条件
* bootloader unlock済かつmagiskを導入済
* Clockworkmod recovery等のカスタムRecoveryは**導入していない**
* Androidセキュリティアップデートを2020年12月5日から2021年1月5日へアップデート
* 端末はPixel 3 XL
* Androidは11(APIは30)
* Magiskは21.2

# ■作業
## 1 必要なファイルの用意
すべて[Factory Images for Nexus and Pixel Devices](https://developers.google.com/android/images)で揃います。

### (1)Full OTA Image(zip)
[Factory Images for Nexus and Pixel Devices](https://developers.goo

元記事を表示

TensorFlowとCameraXでリアルタイム物体検知Androidアプリ

# 今回やること
`CameraX`と`Tensorflow lite`を使ってリアルタイムに物体検知するアプリをcameraXの画像解析ユースケースを使ってサクッと作っていきます。
(注: CameraXの実装は`1.0.0-rc01`のものです。)
GitHubリポジトリを今記事最下部に載せてますので適宜参照してください。
ちょっと長めなのでとりあえず試したい方はリポジトリを見てください。

こんな感じのもの作っていきます↓

バウンディングボックスとスコアを表示するものです

# モデルの用意
物体検知に使用する訓練済みモデルを探してとってきます。
今回はTensorFlow Hub の[ssd_mobileNet_v1](https://tfhub.dev/tensorflow/lite-model/ssd_mobi

元記事を表示

【Android/Kotlin】最小構成でLiveDataを使う

# 環境
– Mac
– AndroidStudio4.1
– Kotlin

# LiveDataとは
データの変更をリアルタイムで検知して、それをトリガーとしてなんらかの処理を行う
`LiveData`に検知したいデータを格納し、
`Observer`に変更された時の処理を記述する

# 結論
[ソースコード全文 – Github](https://github.com/yuki-kamikita/LiveDataSample)

# コード解説
## 今回のコードの動き
### 事前準備
1. LiveDataを初期化
2. Observerを定義

### 動かす
1. 背景をタップする
2. `LiveData`の中身を変更する
3. `Observer`が変更を検知し、`text_view`に`sampleLiveData`の値を入れる

## コード
“`kotlin:MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceSta

元記事を表示

【Flutter】 無駄なリビルドを防ぐたった1つの方法

Flutter では StatelessWidget や StatefulWidget(以下、Widget) の `build()` が頻繁に呼ばれる(リビルドされる)ことを、 [【Flutter】build() でやってはいけない 3 つのこと](https://qiita.com/chooyan_eng/items/976adeea8eed1b5ebad4) では説明しました。

`build()` が頻繁に呼ばれること自体は Flutter フレームワークとして想定通りの動作ですので、ここに「変な」処理を書かない限り リビルドが原因でパフォーマンスが低下するようなことは通常ありませんが、アプリの規模が大きくなり Widget の入れ子(以下「Widget ツリー」と呼びます)が深くなってくると少しずつ「リビルド範囲が大きすぎる」ためにパフォーマンスが落ちてくる場合があるのも事実です。

この記事では、 __UI の変化が必要ない Widget の無駄なリビルドを防いでパフォーマンスを改善する__ にはどうすれば良いのかを理解するために、 Flutter フレームワークがリビルドを

元記事を表示

2021年、業務アプリ開発歴17年が初めてFlutter Firebase Dartを触りたくなった話

筆者のスペック:[Delphi](https://qiita.com/e99h2121/items/b19fe6130f318d3a187c) の人です。[業務アプリたるやみたいなことを普段は考えています。](https://qiita.com/e99h2121/items/40e7eea415faa53614c4)

– ERP業務アプリケーション開発17年
– 言語:Java, JavaScript (Delphi, COBOL, C++, SQL?, HTML?, CSS?, 趣味では色々
– フレームワーク?:Spring, jQuery,
– 他:Windows, UNIX全般, LINUX, データベースは何でも

で3層構造を主に触って食ってきました。タイトルだけは今時風にしてみました。
以下 [Web制作を諦めた初心者が半年でアプリをリリースした話(Flutter)](https://qiita.com/naokiwakata/items/1c6d6f4095a02f727b7b) を読んで全く単語が頭に入ってこなかったのと、頭から入りたい質として「あーん?こいつら信

元記事を表示

OTHERカテゴリの最新記事