web-dev-qa-db-ja.com

INSTALL_FAILED_TEST_ONLYでADBのインストールが失敗する

デバイスにapkをインストールする際に問題が発生しています。

adb install <.apk>

上記のコマンドを使用すると、次が返されます。

5413 KB/s (99747 bytes in 0.017s)
        pkg: /data/local/tmp/AppClient.TestOnly.App3.apk
Failure [INSTALL_FAILED_TEST_ONLY]

この問題の原因は何か?

デバイスを確実に認識します。 apkに問題があるのでしょうか?

149
evve

AndroidManifest.xmlを変更する必要があるようです
Android:testOnly="true"Android:testOnly="false"に変更するか、この属性を削除します。

属性Android:testOnlytrueとして保持したい場合は、pm installコマンドで-tオプションを使用できますが、butapkを最初にデバイスにPushする必要があります。

$ adb Push bin/hello.apk /tmp/
5210 KB/s (825660 bytes in 0.154s)

$ adb Shell pm install /tmp/hello.apk 
    pkg: /tmp/hello.apk
Failure [INSTALL_FAILED_TEST_ONLY]

$ adb Shell pm install -t /tmp/hello.apk 
    pkg: /tmp/hello.apk
Success

同じ問題を再現することができ、上記で解決しました。

APKがデバイスの外部(デスクトップ上)にある場合、以下のコマンドで実行できます。

$ adb install -t hello.apk
194
Saurabh Meshram

Android Studio 3.0.0 Beta 7でも同様の問題が発生し、Playストアに公開できなくなりました。

ここで述べたように: https://developer.Android.com/studio/run/index.html

注:[実行]ボタンはtestOnly = "true"でAPKを構築します。つまり、APKはadb(Android Studioで使用)経由でのみインストールできます。ユーザーがadbなしでインストールできるデバッグ可能なAPKが必要な場合は、デバッグバリアントを選択し、[ビルド]> [APKのビルド]をクリックします。

リリースビルドについても同様です。Android Studio 3を使用すると、Build > Build APK(s)にアクセスして、ストアに送信できるテスト不能なリリースAPKを作成する必要があります。

79
Gabriel Morin

私の場合、この間違いは不安定なgradleバージョンにありました。安定版のgradleを使用するだけです(アルファ版でも、ベータ版でもありません)。そして、それは私のために修正されました

54
Eugene Voronoy

以下のスクリーンショットのように、-tインストールフラグを追加します。

answer is in the red box

54
sunqi228

終日検索してブラウジングした後、唯一の作品は追加です

Android.injected.testOnly=false

gradle.propertiesファイルへ

28
Linyun Liu

Eliseyに同意します。 2.4プレビューでプロジェクトを開き、Android Studio 2.3で同じプロジェクトを開いた後、この同じエラーが発生しました

Build.gradleのこの行を次のように変更することで問題を修正しました

classpath 'com.Android.tools.build:gradle:2.4.0-alpha5'

classpath 'com.Android.tools.build:gradle:2.3.1'
28
Patrick Maroney

Android Studio 3.0はテスト専用APKを生成します。

「Android:testOnly」プロパティをAndroidマニフェストのタグに追加することで問題を解決しました。

 <application
    .....
    Android:testOnly="false"
    Android:theme="@style/AppTheme">

次に、Android studio3.0メニュー:APK-> Build APK(s)でAPKを生成しました。

詳細:https://commonsware.com/blog/2017/10/31/Android-studio-3p0-flag-test -only.html

13
Hardian

この行を「gradle.properties」に追加します

Android.injected.testOnly=false
9
nick lee

私の場合は、APKをアップロードすることでした。APKは本番証明書で署名され、リリースバリアントでしたが、Androidスタジオの再生ボタンを実行して生成されました。 GradleまたはBuild APKメニューオプションからAPKを生成した後、問題が解決しました。

9
lujop

Apkをテストする場合は、-tコマンドラインオプションを追加するだけです。

コマンド例:

adb install -t .\app-debug.apk
9
Louis CAD

受け入れられた答えが表示されますが、実際にapkをプッシュしてから、-tフラグを使用してadb Shell direct adb installでコマンドを実行する必要はありません

adb install -t "urコンピューターのapkへのパス"

参考のためにスクリーンショットを添付 enter image description here

4
amIT

これを解決する最も簡単な方法は、古いgradleバージョンに戻すことなく、実行構成に「-t」オプションを追加することです(pmインストールの場合)。

testOnly = 'false'はまったく効果がありませんでした。エラーは、デバッグAPKを「テスト専用」にするgradleプラグインのアルファ版が原因です。 -tオプションを使用すると、このようなAPKをインストールできます。実行構成で設定すると、通常どおりAPKが自動的にインストールされます。

3
3c71

これは私のために動作しますadb install -t myapk.apk

3
Vardaan Sharma

以前の投稿では、私の問題を解決できませんでした。これが私に起こっていることです:
通常、[実行]ボタンをクリックして、Android studioからアプリを読み込みます。これを行うと、Androidは、デバッグには適しているがインストールには適さないアプリを作成します。以下を使用してインストールしようとした場合:

adb install -r yourapk

次のようなメッセージが表示されます:

失敗[INSTALL_FAILED_TEST_ONLY]

この場合、まずビルドをクリーンアップしてapkを再構築し、次に[ビルド]-> [APKのビルド]を選択する必要があります。以下の画像をご覧ください。

build Android apk

このAPKは、adb installコマンドまたはその他の方法でインストールする準備ができています

お役に立てれば

デビッド

2
us_david

誰かに役立つかどうかはわかりませんが、安定したAndroid Studioバージョン('gradle:2.4.0-alpha5'ではなく、テストgradleプラグイン(2.3)バージョンでプロジェクトを誤ってビルドしてインストールしようとすると、以前にダウンロードしてインストールした2.4 preview 5バージョン)。

間違いに気付いたとき、プレビューAndroid Studioバージョンを起動し、問題なくプロジェクトをビルドしてインストールしました。

私の発見は以下の通りです。 Android Studio UIを使用してコンパイルし、APKが生成された場合、

adb install <xxx.apk>

Failure [INSTALL_FAILED_TEST_ONLY]を生成します

私はgradle、つまり./gradlew app:assembleReleaseを使用してコンパイルする必要があります。次に、生成されたapkのみがインストールされます。

これは、Android Studio UIコンパイルが特定のデバイスのテストapkのみを生成する一方で、./gradlew app:assembleReleaseコマンドがすべてのデバイスにインストールされる(およびプレイストアにアップロードする)実際のapk生成であるためです。

1
Elye

私のために働いたのは、右メニューのGradleツールバーからRefresh all Gradle projectsを実行することです。

Android StudioからスクリーンショットをPFBします。

  1. 右側のメニューからGradleツールバーを選択します。
  2. Refreshアイコンを選択します

これで問題は解決しました。

Screenshot from Android Studio

1
sunil

Saurabhの答えは他のほとんどの人に有効だと確信していますが、apkをインストールするために必要な追加の手順を特定したかったのです。

次の結果でデバイスにプッシュしようとしました:

? adb Push AppClient.TestOnly.App3.apk \tmp\
failed to copy 'AppClient.TestOnly.App3.apk' to '\tmp\': Read-only file system

ファイルシステムのRWパーミッションを変更するために周りを見回した後、次のコマンドを実行することになりました。

? adb Shell
255|Shell@Android:/ $ su
Shell@Android:/ # mount -o remount,rw /
mount -o remount,rw /

もう一度プッシュしようとしたときにこれを取得しました:

? adb Push AppClient.TestOnly.App3.apk /tmp
failed to copy 'AppClient.TestOnly.App3.apk' to '/tmp': Permission denied

私はSDカードにプッシュすることができました:

? adb Push AppClient.TestOnly.App3.apk /sdcard/
3178 KB/s (99747 bytes in 0.030s)

その時点で、Saurabhのコマンドを実行できました。

Shell@Android:/ # pm install -t /sdcard/AppClient.TestOnly.App3.apk
pm install -t /sdcard/AppClient.TestOnly.App3.apk
        pkg: /sdcard/AppClient.TestOnly.App3.apk
Success
1
evve

次のように、Android Studioからディストリビューション.apkをビルドします

ビルド->ビルドApk(s)(署名なしビルドの場合)ビルド->署名付きAPKの生成(署名付きビルドの場合)

これらのオプションは、Android:testOnly = "false"オプションを使用してAPKをビルドします。これにより、commondによってAPKをデバイスに明示的にインストールできます。

adb install yourBuilT.apk

1
Abhinandan

私にとっては、Gradleタスク「クリーン」を実行し(:appの下、Gradleペインで、通常は右側にあります)、プロジェクトを再度実行しました。

1
jbourne

複数のapkを使用して外部プロジェクトを試しました。

スタジオからのコマンドは、次のように見えました

adb install-multiple -r ....

解決策-

  • コンソールを選択
  • -tを使用したasteコマンド
0
Stoyan Mihaylov

最初に不安定版を削除します:

adb uninstall問題のあるパッケージ名

;その後、apkを再インストールします。

0
Pnemonic

ドキュメント で述べたように:

[実行]をクリックすると、Android Studioはこの属性を自動的に追加します

したがって、adb install <path to apk file>でapkをインストールするには、ターミナルからビルドをアセンブルする必要があります:./gradlew assembleDebugおよびadbでインストールします。または、./gradlew installDebugを実行して、デバイスのビルドとインストールを同時に行います。

0
ultraon