デバイスに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に問題があるのでしょうか?
AndroidManifest.xml
を変更する必要があるようですAndroid:testOnly="true"
をAndroid:testOnly="false"
に変更するか、この属性を削除します。
属性Android:testOnly
をtrue
として保持したい場合は、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
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を作成する必要があります。
私の場合、この間違いは不安定なgradleバージョンにありました。安定版のgradleを使用するだけです(アルファ版でも、ベータ版でもありません)。そして、それは私のために修正されました
以下のスクリーンショットのように、-t
インストールフラグを追加します。
終日検索してブラウジングした後、唯一の作品は追加です
Android.injected.testOnly=false
gradle.propertiesファイルへ
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'
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
この行を「gradle.properties」に追加します
Android.injected.testOnly=false
私の場合は、APKをアップロードすることでした。APKは本番証明書で署名され、リリースバリアントでしたが、Androidスタジオの再生ボタンを実行して生成されました。 GradleまたはBuild APKメニューオプションからAPKを生成した後、問題が解決しました。
Apkをテストする場合は、-t
コマンドラインオプションを追加するだけです。
コマンド例:
adb install -t .\app-debug.apk
これを解決する最も簡単な方法は、古いgradleバージョンに戻すことなく、実行構成に「-t」オプションを追加することです(pmインストールの場合)。
testOnly = 'false'はまったく効果がありませんでした。エラーは、デバッグAPKを「テスト専用」にするgradleプラグインのアルファ版が原因です。 -tオプションを使用すると、このようなAPKをインストールできます。実行構成で設定すると、通常どおりAPKが自動的にインストールされます。
これは私のために動作しますadb install -t myapk.apk
以前の投稿では、私の問題を解決できませんでした。これが私に起こっていることです:
通常、[実行]ボタンをクリックして、Android studioからアプリを読み込みます。これを行うと、Androidは、デバッグには適しているがインストールには適さないアプリを作成します。以下を使用してインストールしようとした場合:
adb install -r yourapk
次のようなメッセージが表示されます:
失敗[INSTALL_FAILED_TEST_ONLY]
この場合、まずビルドをクリーンアップしてapkを再構築し、次に[ビルド]-> [APKのビルド]を選択する必要があります。以下の画像をご覧ください。
このAPKは、adb installコマンドまたはその他の方法でインストールする準備ができています
お役に立てれば
デビッド
誰かに役立つかどうかはわかりませんが、安定した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生成であるためです。
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
次のように、Android Studioからディストリビューション.apkをビルドします
ビルド->ビルドApk(s)(署名なしビルドの場合)ビルド->署名付きAPKの生成(署名付きビルドの場合)
これらのオプションは、Android:testOnly = "false"オプションを使用してAPKをビルドします。これにより、commondによってAPKをデバイスに明示的にインストールできます。
adb install yourBuilT.apk
私にとっては、Gradleタスク「クリーン」を実行し(:appの下、Gradleペインで、通常は右側にあります)、プロジェクトを再度実行しました。
複数のapkを使用して外部プロジェクトを試しました。
スタジオからのコマンドは、次のように見えました
adb install-multiple -r ....
解決策-
-t
を使用したasteコマンド最初に不安定版を削除します:
adb uninstall
問題のあるパッケージ名
;その後、apkを再インストールします。
ドキュメント で述べたように:
[実行]をクリックすると、Android Studioはこの属性を自動的に追加します
したがって、adb install <path to apk file>
でapkをインストールするには、ターミナルからビルドをアセンブルする必要があります:./gradlew assembleDebug
およびadbでインストールします。または、./gradlew installDebug
を実行して、デバイスのビルドとインストールを同時に行います。