Androidのスタジオで作成したアプリをadbで直接インストールするときに、下記ガトインエラーが発生し、インストールが出来ない場合があります。 失敗の理由は、Apk、テストの目的で作られたため、一般的なインストールのコマンドでインストールすることができません。このようなアプリをTestOnlyアプリと呼びます。
$ adb install 'app-release.apk'
adb: failed to install app-release.apk: Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]
TestOnlyアプリで作成されると、以下のよう -t
オプションを与えてインストールする必要があります。
$ adb install -t 'app-release.apk'
TestOnlyアプリで作成されると、フレームワークレベルで権限なく、特定の部分をデバッグするなどの支援を受けることができます。 代わりにリリースアプリで使うことができません。
Android Studioは、apkを作成するときにAndroidManifest.xmlで testOnly
属性を見てTestOnly apkをビルドするかを決定します。以下のようにtrueに設定すると、TestOnly apkにビルドがされます。
<application
android:testOnly="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
問題は、私のアプリで、このような設定をしていなかったと、自動的にTestOnly apkに生成されるという点です。その理由は、スタジオが自動的に testOnly=true
に設定するからです。
この値をfalseに設定する方法は、 gradle.properties
ファイルで、次の項目をfalseに設定すると、testOnlyがfalseに設定されます。
android.injected.testOnly=false
今ビルドをすると、一般的なapkが生成がされ、adbで -t
オプションなしでインストールすることができます。
まとめ
アンドロイドスタジオの基本的testOnly = "true"に設定されている場合は、TestOnly apkが生成されます。
adbの -t
オプションを与えて、インストールをしたり、gradle.properties
ファイルでtestOnlyオプションをoffして、一般的なapkを作成することができます。
Related Posts
- Android - FusedLocationProviderClientに位置情報を取得する
- Android - GPS、Network位置情報を取得する(LocationManager)
- Android - adbコマンドでActivity実行
- アンドロイド - MediaStoreにメディアファイルを保存する方法
- Android - Runtime permissionリクエスト方法と例(kotlin)
- Android11 - Storage(ストレージ)の変更まとめ
- Jetpack Compose - RowとColumn
- Android 13 - 細かいメディアファイルの権限
- Android 13でNotification権限をリクエスト、通知を表示する
- エラー解決:android gradle plugin requires java 11 to run. you are currently using java 1.8.
- Query method parameters should either be a type that can be converted into a database column or a List
- Android - TabLayoutの実装方法(+ ViewPager2)
- Android - adbコマンドで特定のパッケージのプロセスの終了
- Android - adb push、pullでファイルのコピー、ダウンロード
- Android - adbコマンドでsettings value確認、変更、
- Android 12 - IntentFilterのexported明示的な宣言
- Android - adb logcatコマンドでログ出力
- Android - ACTION_BOOT_COMPLETEDイベント受信
- Android - Foreground Service実行
- Android - ファイル入出力の例(Read、Write、内部、外部ストレージ)
- Android - アプリの権限を確認(Permission check)
- Android - adbで実行中のプロセス、スレッドリスト及びメモリ情報の確認
- Android - Broadcast Receiver登録およびイベントの受信方法
- Android - Cleartext HTTP ... not permitted例外解決方法
- Androidのビルドエラー - Calls to Java default methods are prohibited in JVM target 1.6
- アンドロイド - Assetsでファイルを読み取る方法
- アンドロイドのさまざまなNotification種類と実装方法
- アンドロイド - INSTALL_FAILED_TEST_ONLYエラー解決方法
- Android EspressoのCustom Matcher実装方法
- Android Espressoを使用してUIをテストする方法(3)
- アンドロイド - CTS hostsideをgradleで構築する方法
- Androidのアプリのデータフォルダーのパスと内部/外部ストレージ説明
- アンドロイド - 最初のApp作成
- Androidをインストールする方法(Windows)