としおの読書生活

田舎に住む社会人の読書記録を綴ります。 主に小説や新書の内容紹介と感想を書きます。 読書の他にもワイン、紅茶、パソコン関係などの趣味を詰め込んだブログにしたいです。

タグ:Android

3753817_s

Flutterでカメラを使ったアプリを作ってみたところ、エミュレータでは正しく動作したのですが、実機で動かしてみたところカメラが起動しませんでした。

この問題に対する解決策を調べたので紹介します。

今回は、以下のサンプルコードを使ってカメラが動くことを確認しています。





実機でカメラを動かす方法


結論になりますが、実機でカメラを動かすためには、

android→app→src→main→AndroidManifest.xmlに

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>

の一行を入れてあげる必要がありました。これを追加しただけでカメラが起動するようになりました。

どこに入れればわからないという人もいると思うので、AndroidManifest.xmlのサンプルを以下に乗せておきます。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.camera_sample">-
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
<application
android:label="camera_sample"
android:icon="@mipmap/ic_launcher">
android:requestLegacyExternalStorage="true"
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<!-- Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual
gap between the end of Android's launch screen and the painting of
Flutter's first frame. -->
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>






AndroidManifest.xmlを変更する必要があった理由


AndroidManifest.xmlを変更する必要があった理由ですが、Android11以降でデバイスにアクセスする方法が変更されたことが原因みたいです。

Android11以前の端末なら、上記のような変更なしでもカメラにアクセスできるみたいですね。

Android10nまでの情報がWeb上に多く存在していたため、原因を突き止めるのになかなか苦戦してしまいました…。



まとめ


Android11以降ではカメラを使用するためには、AndroidManifest.xmlを変更する必要がありました。

同じことで悩んでいる人の参考になれば嬉しいです。





本記事ではAndroid Studioで作成したFlutterアプリを実機でデバッグする方法を紹介していきます。

例としてgoogle pixel 4a でFlutterのサンプルアプリを動かしていきますが、開発言語や端末が違う場合でも基本的に同じ方法で実行することができます。



Android端末を開発者設定に変更する


Android Studioで開発したアプリを実行するためには、Android端末の開発者設定をONにする必要があります。

やり方ですが、最初に設定→デバイス情報画面を開きます。

Screenshot_20210530-220644

次にデバイス情報画面をスクロールして一番下にある、ビルド番号を7回タップします。

Screenshot_20210530-220654

するとPINの入力が求められますのでPINを入力してください。

これで開発者設定をONにすることができました。



アプリを実行する


Android端末の設定ができたところでアプリを実行してみましょう。

今回はFlutterのサンプルプロジェクトを実行していくので、Android Studioを作って新規プロジェクトを作成します。

キャプチャ

新規プロジェクトが作成できたらUSBケーブルを使い、PCとandroid端末を接続します。

接続が成功したら、Debug端末の選択メニューに自身のAndroid端末の機種名が表示されるので、そのたんまつを選択してください。

今回の例ではgoogle pixel 4aを使用しているので、Pixel 4a(mobile)を選択します。

キャプチャ

端末を選択することができたら、実行ボタンを押下してください。

キャプチャ


すると自分の端末でアプリが実行されます。

Screenshot_20210530-233826





実行できない場合の対処法


上記の方法で実行できない場合の対象方を紹介していきます。


USBケーブルが充電専用でデータ転送ができない場合


充電しかできないようなUSBケーブルを使用している場合、実行することができません。

この場合は、データ転送ができるケーブルを買いなおすしか対処法がありません。

以下のケーブルはデータ転送にも対応しています。




USBデバッグ設定がOFFになっている


ケーブルはデータ転送用だが実行ができない場合、開発者向けオプションのUSBデバッグ設定がOFFになっている可能性があります。

この場合、設定→システム→詳細設定→開発者向けオプション設定画面を開き、USBデバッグ設定をONにしましょう。



まとめ


本記事では、自分が開発したAndroidアプリを実機で実行する方法を紹介しました。

エミュレータでのテストには限界があると思うのでぜひ実機でデバッグする方法をマスターしてください。







WindowsにFlutterとAndroid StudioをインストールしてAndroidアプリの開発環境を整える方法をまとめました。



Flutterアプリを実行


Flutter SDK releaseよりWindowsの最新版をダウンロートします。

キャプチャ

ダウンロードができたら任意の場所にzipファイルを展開します。

展開完了後 "flutter\bin" までのパスを通します。

今回はCドライブの直下に展開したので「C:\flutter\bin」のパスをとおします。



flutter doctorを実行する


PowerShellを起動して以下のコマンドを実行してみてください。

flutter doctor

futter doctorを実行することでFlutterを作成するための開発環境が整っているのかを確認することができます。

キャプチャ

Xの箇所が問題がある項目のようなのでこれらを解消していきます。

今回の場合、VS CodeやAndroid Studioをすでにインストールしていたため、Android toolchainしか問題が発生していませんが、他の問題の解決方法も書いておきます。


[!]Android toolchain


Androidのライセンスが確認できないという項目です。

一般的には、以下のコマンドを実行することで解決することができるみたいです。

flutter doctor --android-licenses

ただ私がこのコマンドを実行してみたところ以下のエラーがでました。

Android sdkmanager tool not found (C:~~\Local\Android\sdk\tools\bin\sdkmanager).
Try re-installing or updating your Android SDK,
visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions.

このエラーについて調べてみたところ、Android StudioでAndroid SDK toolsがインストールされていないことが原因みたいです。

Android Studioの設定 → 外観&振る舞い → システム設定 → Android SDK → SDKツールの画面を開いて廃止パッケージを隠すのチェックをはずして、Android SDK Toolsにチェックを入れることで解決することができます。

キャプチャ


[!]Android Studio


Android Studioをインストールして、Flutterのプラグインをインストールすることで解決できます。

Android Studioのインストールは公式サイトからインストーラをダウンロードして行いましょう。

Flutterのプラグインのインストールは、Android Studioを起動し、
設定  → プラグイン画面からインストールすることができます。

キャプチャ


[!]VS Code


VSCodeをインストールして、拡張機能からFlutterをインストールすることで解決することができます。

Android Studioで解決を行う場合、無理に解決を行わなくても大丈夫です。

キャプチャ


以上で開発環境の作成は終わりです。



サンプルアプリを動かしてみる


開発環境ができあがったところで、実際にFlutterを使用して簡単なアプリを作成してみましょう。


Flutterプロジェクトの作成


まずは、Android Studioを起動して、新規のFlutterプロジェクトを作成します。

キャプチャ

Flutterアプリケーションを選択して、次へを押下します。

キャプチャ

Flutter SDK パスにはFlutterを展開した場所のパスを入力してください。

キャプチャ

完了をクリックします。

キャプチャ

以上でデモアプリが作成されました。


仮想デバイスの作成


デモアプリが作成できたら、アプリを実行するための仮想デバイスを追加してあげましょう。

ツールメニューからAVDマネージャーを選択します。

キャプチャ

仮想デバイスの作成を押下します。

キャプチャ

好きなデバイスを選択して次へを押します。

キャプチャ

好きなシステムイメージをダウンロードして次へを押下します。

今回はQをダウンロードしました。

キャプチャ

完了を押下します。

キャプチャ

エミュレータが作成できたので実行ボタンを押下して起動しましょう。

キャプチャ

起動すると以下のような画面が立ち上がります。

キャプチャ


Flutterアプリを実行


仮想デバイスが起動できたら、実行ボタンを押下してアプリを起動します。

キャプチャ

エミュレータに以下のような画面が現れたら実行成功です。

キャプチャ


以上で環境構築完了です。

これでアプリ開発に取り組めますね。


Ryzen環境でAndroid Studioで作成したアプリを仮想環境で実行するのに苦戦したため、手順をまとめておきます。





環境

実行環境は以下の通りです。
・Windows10 Home
・AMD Ryzen 7 3700X
・Android Studio 3.6.3


『Windows ハイパーバイザープラットフォーム(WHPX)』のインストール

Android Studioは、デフォルトではインテルが配布しているHardware Accelerated Execution Manager(以下HAXM)を使用してAndroidのエミュレータを高速で動かすように設定されています。
このHAXMはintel製のCPUでしか使用できません。

そのため、RyzenなどのAMD製のCPUを使っている場合、HAXMの代わりにWindowsハイパーバイザープラットホーム(以下WHPX)をインストールする必要があります。

以下にWHPXのインストールの手順を記します。



①コントロールパネルの起動
windows + Rを押すと「ファイル名を指定して実行」のボックスが起動するので「control」と入力してOKを押します。
4
②プログラムをクリック
1
③Windowsの機能の有効化または無効化をクリック
2
④Windowsハイパーバイザープラットホームにチェックを入れる
3
⑤PCを再起動する
PCを再起動する際に以下で示す、BIOSの設定も同時に行いましょう


BIOSの設定

WHPXを使用するためにはBIOS画面からCPUの仮想化に関する設定を有効にする必要があります。

BIOSはマザーボードのメーカによって手順が変化しますが、一例としてASUSのマザーボードで行う手順を紹介します。


①F2起動画面でを押してBIOS設定画面に移動する
メーカによってBIOS設定への入り方が異なるので注意


②詳細 → CPU設定を選択する
IMG_20200428_161746
③SVN ModeをEnableに変更する
IMG_20200428_161756
④変更を保存してリセットを選択してBIOS設定を終了
IMG_20200428_161814



以上の設定が終わるとAndroid Studioで仮想端末を作成することができ、作成したアプリの動作確認を行うことができます。



↑このページのトップヘ