Android関連のことを調べてみた2019年11月27日

Android関連のことを調べてみた2019年11月27日
目次

私がアプリ開発のSESで、面談時に地雷案件をなるべく避けるための確認ポイント7選

私は、客先常駐でアプリを開発、保守するのをメインに5年ほどお仕事してきました。
iOSとAndroidのどちらかを担当して、機能やスケジュールの提案をしつつ、もくもくと開発していることが多いエンジニアです。

常駐のため、現場が変わるごとに面談があり(法律なんか知らん)、その度にやばそうな雰囲気の出てる案件は基本的に避けるようにしています。
現場に入る前の面談で、これを確認すれば、地雷案件を少し回避できるポイントがなんとなくわかってきたので、メモっておきます。
**※あくまで個人的な指標であって、なんの根拠もないです!!**

## 保守案件の場合は、アプリのストア評価を確認

保守案件で、ストアの評価が低いアプリは可能な限り参画を回避します。

理由は、

* ストアの評価が低いものは、内部の品質が基本的に低い
* 新たな開発はできずに、既存バグの修正に追われて疲弊する
* ただのバグ修正ではスキルがつきにくい
* クソコードを見ると発狂する(コントローラにAPIリクエストが入っているとか無理)
* ひどい場合、gitすら使ってない
* その他色々

だからです。
何より、**過去に

元記事を表示

僕がAndroidアプリ開発をする上で気を付けていること

 こんにちは!データベースからデータを取り出す際によくCursorIndexOutOfBoundsExceptionと怒られるヨースケです。だいたいがmoveToFirst()の書き忘れで、初めてデータベースを使ったときもこのエラーでした。最初は訳も分からずめちゃくちゃ原因を特定するのにだいぶ時間がかかりました(笑)。

 今回はアプリ開発をするときに気を付けていること、心掛けていることを書いていこうと思います。

– 普段使っているアプリを注意深く見る
– コピーはするがペーストはしない
– ユーザー目線
– 設計書的なものを書く

### 普段使っているアプリを注意深く見る
 これは開発する時のレイアウトの参考になります。特に意識はしていませんが、初めて使うアプリやいろんなところで見かける端末で表示されているシステムチック?なものを見るとどういうプログラムなのかなぁとか、これはダイアログを使っているのかな?とか考えちゃいます。
 例えば![twitter.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0

元記事を表示

データ復旧、デジタルフォレンジック手法の体験談(Android編)

前のCTF記事https://qiita.com/55momotara55/items/03ccd0e111b38061e6fc
はすごく簡単なADBサービスを利用してAndroidデバイスを侵入する手法なんです。
昨日も会社のインターンシップの同年生から「俺のスマホでやってみる?」聞いて、経済的な方面から考えると諦めしました(弁償の可能性無限大)。

ですから今日朝もう一度この模擬Androidをチェックする時、この中に面白いサービスを発見しました。
/system/xbinの中に**busybox**というツールが入ってます:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526362/46073b1f-347a-1bdc-a3d6-45f125bfd367.png)

**busyboxはLINUXの常用コマンドをAndroidデバイスに実行できるようなツールです。**

**フォレンジック原理**:busyboxをインストールしているANDROIDデバイスを**dd**コマンド

元記事を表示

Eclipse環境でAndroid4.2.2のcognito認証を頑張る

#概要
Android 4.2.2のアプリにAWS SDKを導入し、cognito認証してIDトークンを使いたい。

– OS
– Windows 10 Pro 64bit
– 開発環境
– Eclipse
– 言語
– Java
– ターゲット
– Android 4.2.2 (API 17)
– 使用したもの
– AWS SDK for Android 2.16.1
– gson-2.2.4.jar
– support-annotations-27.1.1.jar

なぜ今さら Eclipse なのか? Android 4.2.2 なのか? という点は**気にしてはいけない。**

#結果
Android 4.2.2でcognito認証が可能になった。
が、**IDトークン取得が初回は絶対に失敗する**。(2回目以降は普通に成功)

Android 4.2.2が暗号モードGCMに対応していない事が関係している模様。
(cognitoはデフォルトでは暗号モードGCMを使っているっぽい?)

#内容
##AWS SDK for

元記事を表示

実機Android端末のChromeでデベロッパーツールを使ってデバッグする方法

# 要望
実機のAndroid端末で特定のWebページに対し、Webインスペクタで中身を書き換えたり、コンソール経由でスクリプトを叩いて実行した結果を見たい。

-> [iPhone版](https://qiita.com/unsoluble_sugar/items/2a3d06631a6b8259dc44)

# Android 端末のリモート デバッグを行う
MacのChromeやAndroidエミュレーターでもある程度の表示確認はできるが、やはり実機での操作感や見た目の確認は重要である。

スクリーンショット 2019-11-26 16.46.24.png

少し調べてみたところ、MacとAndroid端末を接続することで、PCと同様に実機での動作確認が可能なことが判明したため、実際に試してみた。

[Andro

元記事を表示

AndroidのChrome 78のPreload問題

問題になっているサービスは多いのではないかと思いつつも、あまり騒ぎになっていないので不思議だなと思っているkumanomiです。

# どんな問題なの?
AndroidのChrome78.0.3904.108にて、Preloadの機能が有効になりページ内のリンクを勝手に踏んでしまい予期せぬ挙動をしてしまう問題が発生しています。

## たとえば・・・
– ログインをしようとした際にプリロード機能によって勝手にログアウトのリンクが踏まれてしまいログアウトしてしまう

– 商品の購入や予約ができない

– 強制的にトップページに戻されてしまう

– 選択したものと異なる振込先が選択された状態となる

**結構致命的なものも多いと思うんですよね 。**

## 同現象が起きているサービスなど一部抜粋
– [無印良品](https://www.muji.net/mt/media/archives/2019/11/24_121500.html)
– [高速バスネット](https://www.kousokubus.net/BusRsv/ja/information?key=HG5jn-PE6

元記事を表示

ExoPlayer追加でInflateExceptionになったときの対処法

## 現象
ExoPlayerライブラリ追加してレイアウトXML作成しビルドしてみたところ以下のようなエラーログが表示されました。

“`
Process: com.example.exoplayersample, PID: 12229
android.view.InflateException: Binary XML file line #10 in : Binary XML file line #10 in : Error inflating class com.google.android.exoplayer2.ui.PlayerView
Caused by: android.view.InflateException: Binary XML file line #10 in com.example.exoplayersample:layout/fragment_first: Error inflating class com.google.android.exoplayer2.ui.PlayerView
Caused by: java.lang.r

元記事を表示

Firebase App Distribution で App Distribution found more than 1 output file for this variant のエラーが出たときの対応

# はじめに
Firebase App Distribution の `appDistributionUpload` の Gradle task を実行した際に

“`
== BUILD FAILED ==

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ‘:app:appDistributionUploadXxxYyy’.
> App Distribution found more than 1 output file for this variant. Please contact firebase-support@google.com for help using APK splits with App Distribution.

“`
が表示された場合の解決方法です。
(APK splits を行っている Android project で再現します。)

# 原因
ビルドを行うと複数の apk ファイルが生成され、どの apk ファイルがアップ

元記事を表示

【Android入門】英語・タイ語・日本語入力の判定とOK・NGボタンの配置♪

Androidアプリを作り始めて気が付いたが、スマホだと入力方法としてGoogle音声入力が選べる。
それは、スマホの環境設定によって入力言語を日本語、タイ語、英語など多くの言語に対応している。
そして、Google音声入力がそれらの言語で入力できる。

しかも、いろいろな言語で入力できるだけではなく、イントネーションなどにより言語を自動的に選んでくれる。
逆に云うと、英語で入力しようとしても余りに日本語的だとカタカナなどで入力されてしまう。
また、英語になっても
This is a pain
などと間違った単語が選ばれることもある。

ということで、今回は、このきちんと思い通りの入力が出来た時をOK、間違った選択をされた時、NGのボタンを配置してそれぞれの回数をカウントアップするようなアプリにしてみた。

ここで必要な技術は、主にボタンの配置とカウントアップするカウンターの配置である。
出来上がったアプリの画面は以下のようなものである。
ここでは、カウントも入力・出力で構成したので、余分に配置されているが以下で改善した。

|英語|タイ語|英語?|日本語|
|:-:|:-:|:-:|

元記事を表示

AppiumでFlutterアプリのテストを自動化する 実践編

[AppiumでFlutterアプリのテストを自動化する 環境構築編 – Qiita](https://qiita.com/hiesiea/items/b4e31b6f1f585a93bae1)
の続きになります。
実際にテストコードを書いて、それを実行するところまでやります。
今回は勉強も兼ねつつ、比較的に簡単に用意できそうな「Python」を使います。

# 前提条件

– Appiumの環境構築が完了していること

# pipコマンドのインストール

PythonはMacで標準で入っているはずなので、特に新たにインストールする必要はありません。
pipコマンドもすでに使えるはずですが、もし入っていなかった場合は、
https://bootstrap.pypa.io/get-pip.py
をダウンロードし、ダウンロード先で以下のコマンドを実行してください。
(うまくいかない場合は、頭に“`sudo“`と付けて実行してみてください)

“`
python get-pip.py
“`

# Appium-Python-Clientのインストール

以下のコマンドを実行し、App

元記事を表示

Unity + DockerでUnityプロジェクトからAARファイルを自動生成

# はじめに

*UnityのSceneをAndroidのSubView(FrameLayout)として埋め込むまで*
https://qiita.com/_nonono/items/253aa15d6027ecc8ad66
このような記事があり、AndroidにUnityのシーンをFrameLayoutに埋め込むことができます(便利

**Unityで開発せずビルド成果物(AARファイル)のみ必要な場合**
1.指定のバージョンのUnityをインストール
2.Unityを立ち上げAndroidプロジェクトをExport
3.Android Studioでビルド
上の3つの作業を手作業で行うので一苦労だと思います
Unity、Android Studioのバージョンを意識したりしなければならいので良い方法が必要です

「なんとか良い方法を!」と思って `Unityの入ったDockerイメージを使ってAARの生成を自動化` してみたので、作業を下に記していきます

# TL;DR
いきなり一連の作業をスクリプトにできないので、dockerの中で作業を1つずつして、最後にスクリプトにまとめ

元記事を表示

Flutter desktop embedding を Ubuntu にインストール&試してみる

Flutterで書いたアプリケーションをデスクトップ環境でも動かせるようにする、Flutter desktop embeddingをUbuntu 18.04環境で試してみたので、その手順をまとめておきます。

# 環境構築の手順

## Flutter SDKインストール

リポジトリからcloneした後は、適当なパスに配置して、パスを通しておきます。

“`shell
$ git clone https://github.com/flutter/flutter
$ sudo mv flutter /usr/local/
$ export PATH=$PATH:/usr/local/flutter/bin
“`

## Android Studioインストール

[https://developer.android.com/studio](https://developer.android.com/studio)からLinux版をダウンロードして適当な場所に置いて、インストールスクリプトを叩きます。

Android Studioのインストールで基本的には次へを押していく感じです。

元記事を表示

Android Builderの使い方

以下の内容はサイトhttps://blog.csdn.net/androidxiaogang/article/details/80586631を参照して作った内容です。

// static 内部クラスの使い方
外部クラスの属性は多いし、可変し、絶対必須ではない。
そして、使用者によって非必須の属性を設定するのは使用者次第なので、
普通のやり方で、各属性のset関数でやります。
或いは、いっぱいのコンストラクタ関数を用意する。

Builderのコンストラクタ関数は可変で、使い方は便利である。
個人的な感じはBuilderパータンの方法は普通の使い型より少しだけを簡単になる。

以下のクラスの使い方法は
NutritionFacts nutritionFacts = new NutritionFacts.Builder(240, 8)
.calories(100)
.sodium(35)
.carbohydrate(27)
.build();

public class TestStaticClass {

元記事を表示

[ Android ] バージョンを指定する方法

androidでバージョンを指定するにはbuild.gradleファイルを用いる。

##ファイルの場所
まずプロジェクトを表示する。
![スクリーンショット (164).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506451/7bd97c81-8a07-e139-1f9e-3317f49d8e68.png)

そのなかにbuild.gradleファイルがあるので、これを開く。
![スクリーンショット (165).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506451/9a316573-6f87-8b68-087b-78eefc54f725.png)

そこに以下のような記述がある。ここを変更する。
![スクリーンショット (166).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506451/1488b7cb-3024-e9

元記事を表示

【Flutter】VSCode上でIntegration Testを動かす

FlutterのIntegration Testは、[公式のcookbook](https://flutter.dev/docs/cookbook/testing/integration/introduction)に載っている方法をそのまま利用すると、いくつか不便な点があります。

– 毎回コマンドラインから実行する必要がある
– 実行するたびにアプリのビルドが走って時間がかかる
– ブレイクポイントを打ってデバッグすることができない

ということでなんとかしましょう。

対象IDEはVSCodeです。

#参考元

こちらのMedium記事を大いに参考にします。
https://medium.com/flutter-community/hot-reload-for-flutter-integration-tests-e0478b63bd54

内容をザッッッッックリと要約すると

– 通常`flutter drive`は次の2つのプロセスを動かして相互通信させる
– アプリ自体(シミュレーター上)
– テストコード(単なるDartプログラム)
– ならば、

元記事を表示

adb – Android debug tool

# Enable Device Debug
* Enable developer mode on your Android device
1. Settings ⇒ System ⇒ About Phone ⇒ Tap “Build number” over 7 times and quickly
2. Then you will see “You are already developer”
* Enable debugging
1. Go to “Developer Options” ⇒ Enable “ADB debugging”
2. Connect Android phone to your Windows PC, then you will see a pop-up ( some phone will not show pop-up, please check notification center)
3. Choose “Transfer files”

# adb Setup
## Windows
* Download adb package for wind

元記事を表示

トラブルシューティング of AVD @ Ubuntu18.04

#

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/aef4ed32-1616-3560-59e1-72d1af8eee18.png)

PCのBIOSで「Virtualization Technology」 をEnableに変更する

#

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/b1bb317c-1697-7e65-4d0f-b2b7ee5094b0.png)

“`

sudo apt install qemu-kvm
sudo adduser $USER kvm

“`
としてリブート

# 起動に時間がかかる

コマンドラインで一旦起動したら次回以降OKとなりました。

https://developer.android.com/studio/run/emulator-commandline

# コマンドラインで起動

“`

元記事を表示

[Android]TextView の文字の大きさを自動的に調整する(Autosizing TextViews)

# はじめに

Android の TextView では View サイズに応じて、
文字の大きさ(TextSize)を自動的に調整する機能が実装されています。
その機能について調べたので、簡単に使い方をまとめたいと思います。

# View サイズに応じて TextSize を自動的に調整する

次のように TextView の autoSizeTextType を uniform に設定すると、
TextView の View サイズに応じて TextSize が自動的に調整されるようになります。

“`xml:activity_main.xml

元記事を表示

【Unity】これ以上セーフエリア対応で消耗しないためのアセットを作った【AutoScreen】

**[AutoScreen](https://github.com/su10/AutoScreen)(GitHub)**

![AutoScreen_01.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27863/00c476b7-adc2-a981-8136-ec8d35fd8f28.gif)
![AutoScreen_02.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27863/19666be0-5fd5-2966-300e-6886f7beaf1d.gif)

# はじめに
Unityにおけるセーフエリアの対応に関しては`Screen.safeArea`というAPIがあるのですが、ビルドして実機で呼ばないと端末ごとの値が取れない=エディタ上ではレイアウトの確認ができないという辛さがあります。

最近だとUnite Tokyo 2019でも紹介された[Device Simulator](https://docs.u

元記事を表示

Scoped Model を利用した場合の画面遷移でうまくいったコード例(Flutter)

最近Flutterをいじり始めました。Scoped Modelを利用するとスッキリ書けるので、そのコードを書いたときの画面遷移時に具体的にどうコードを書くとうまくいったかをレポートします。

# [Scoped Model 初めて聞いた方へ]Scoped Model とは

公式のパッケージサイトは下記です。

https://pub.dev/packages/scoped_model

基礎原理の解説について下記記事が参考になりました。

https://qiita.com/hayassh/items/690fa0d6528e056617b5

自分の言葉で書くと、数値や文字列の処理部分とデザインテンプレート部分をModel定義をすることで綺麗に分離ができます。あと、このパッケージは、GoogleのFlutter開発チームが提供してくれているVeggie Seasonsというアプリのコードにも採用されていたので、自分もやってみようと思いました。Veggie Seasonsのコードは以下です。

https://github.com/flutter/samples/tree/mast

元記事を表示

OTHERカテゴリの最新記事