web-dev-qa-db-ja.com

APKのインストールに失敗しました。エラー:エラー文字列を解析できませんでした

Android Package * .APKをAVD(Android Virtual Device)にドラッグアンドドロップすると、不可解なエラーがスローされます。

The APK failed to install.
Error: Could not parse error string
  • 最新のAPI(28)と自分の電話に一致するAVD(Nougat 7.0)でAVDを試しました
  • APKはpython buildozerで構築されたKivy APKです
  • 私はAndroid開発です。これをデバッグする場所はわかりません。より良いログはありますか?
  • ファイルマネージャーを介してAVDにAPKをアップロードし、インストールしても失敗します。
  • ただし、この同じAPKを実際のAndroidデバイスにアップロードすると、動作します!インストールするだけでなく、エラーなしでアプリを正常に開いて実行します
  • 不明なソースが許可されています

    (int)Android使用するAPI

    Android.api = 24

    (int)最低限必要なAPI

    Android.minapi = 24

    (int)Android使用するSDKバージョン

    Android.sdk = 24

    (str)Android使用するNDKバージョン

    Android.ndk = 9c

enter image description here

The APK failed to install. Error: Could not parse error string

8
Jonathan

ただし、この同じAPKを実際のAndroidデバイスにアップロードすると、動作します!インストールするだけでなく、エラーなしでアプリを正常に開いて実行します

これは、エミュレーターのCPUアーキテクチャーと一致しないネイティブライブラリをアプリが使用しているためである可能性があることを示しています(これを参照してください question

より詳細なエラーメッセージを取得するには、ターミナルからアプリをインストールします。

adb install path_to_your_app/name_of_your_app.apk

これを見るかもしれません:

adb: failed to install name_of_your_app.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries

9
Melquiades

現在インストールされているアプリよりも高いバージョンコードで新しいapkを作成する必要がありました。

私のシミュレータにはバージョン8があり、同じバージョンで新しいapkをインストールしようとしたときに、言及したエラーが発生したため、解決策はversionCodeを増やして新しいapkを生成することでした

Build.gradle(モジュール:アプリ)ファイルで行います

Android {
    defaultConfig {
        versionCode 9          <---
        versionName "1.1.0"    
        ...
    }
    ...
}

別の解決策は、現在のアプリをアンインストールして新しいapkをインストールすることです

5
Chuy47

私は同じ問題に直面していました。問題は、エミュレータで同じアプリケーションが既にインストールされている with 同じバージョンである場合、更新/インストールされず、あなたと同じエラーがスローされることですそれを得る。

次の解決策を試して修正してください。

  1. 古いAPKをアンインストールする Emulatorから新しいAPKをドラッグアンドドロップすると、アプリケーションがインストールされます

  2. @ Chuy47が示唆するようにBuild.gradleファイルからバージョン番号を変更し、新しいAPKをビルドしてインストールする

それが役に立てば幸い。

5
Bilal

私にとっては、On Android 9(API 28)エミュレーターシステムイメージ、PlayストアアプリからGoogle Playプロテクトを無効にすると、トリックが機能し、解析エラーを取り除くことができました。

Google Playプロテクトを無効にします。 「Playストア」アプリケーションを開く=>メニューボタンをタップ=>「Playプロテクト」オプションを選択=>「セキュリティの脅威についてデバイスをスキャン」オプションを無効にします。

1
Qasim

p4aフラグを使用してarmeabi-v7aを使用してapkを構築した後、自分でこの問題にかなり長い時間を費やした後、@ Melquiadesの回答で概説されているように、デフォルトのエミュレーターはx86アーキテクチャを使用しているため、もちろん互換性がありません。

解決策は、x86のapkをビルドすることです。これは、Archフラグ-p4aを使用して、--Arch=x86作成コマンドでapkを指定することで実行できます。ここで利用可能なオプションを見ることができます: https://github.com/kivy/python-for-Android/blob/master/pythonforandroid/archs.py

個人的に、python3crystax ndkをarmeabi-v7a以外のフラグで実行すると、適切なバイナリが見つかりませんでした。 python3とAndroid ndkを使用して実行すると、同様にすべてのアーキテクチャで失敗しました。

python3を使用していて、すべてのアーキテクチャ用にビルドしたい場合は、buildozerを使用できます。 python3crystax要件でbuildozer.specを指定し、Android.ndk_path行でndkディレクトリをリンクし、選択したアーキテクチャを行で指定します

# (str) The Android Arch to build for, choices: armeabi-v7a, arm64-v8a, x86
Android.Arch = x86

install python 3.5このチュートリアルの後に: https://tecadmin.net/install-python-3-5-on-ubuntu/ 。ダウングレードするか、現在の設定に応じて、cythonバージョンをアップグレードします。0.27、0.27.2はどちらもKivyでは動作しないことに注意してください。cython0.25.2が機能していることがわかりました。で選択:

Sudo pip3 install -U --force-reinstall cython=0.25.2

もちろん、Ubuntuで実行している場合:)

そして、あなたはそれを持っています。 buildozer.specArchオプションを変更し、各アーキテクチャに対してbuildozer Android debugを実行することにより、異なるアーキテクチャ用に複数のapkを作成する必要があります。 Googleには複数のapkをアップロードするオプションがあるため、Playストアにリリースできます: https://developer.Android.com/google/play/publishing/multiple-apks

がんばろう; P

[〜#〜] edit [〜#〜]SDK 20 / API 26 / NDK 15c / Python 3.7およびSDK 20 / API 24 / NDK 14b / Python 3.7を使用するpython-for-Androidコマンドが機能します。私は後者を個人的にテストしていませんが、詳細についてはこちらをご覧ください python-for-Android post 。前者をテストした結果、動作することは確認できましたが、sqlite3をサポートしていません。

1
TellMeWhy

次のことを行うと、それが修正されたようです。

  • 仮想ボックス上のkivy仮想マシン (buildozerはすべてのビルドマシンをサポートしていません)を介したビルドへの切り替え
  • 次に、buildozer.specでbuildozer SDK設定をコメントアウトします(デフォルトのSDKバージョンに戻します)(biuldozerはすべてのSDKをサポートしません)
0
Jonathan

これを試してみてください:これは私にとってより良い仕事です。

enter image description here

ステップ1。クリーンプロジェクト

ステップ2。プロジェクトを再構築

ステップ3。アプリを実行

それがあなたのお役に立てば幸いです。

0

この問題を解決するには、apkファイルの名前を変更し、次のことを確認しました。

  1. スペースがありません。
  2. 数字で始まらない

お役に立てば幸いです。

0
Atef Farouk

これは私のために働いた.....

  • Playストアを開く
  • メニューに移動
  • 再生保護をタップします
  • セキュリティの脅威に対してスキャンデバイスを無効にする
0
cHAuHaN

そのアプリの最小SDKバージョンを確認できますか?そして、あなたの仮想デバイスAndroidバージョン

AVDバージョンは、アプリの最小SDKバージョン以上である必要があります

大きい場合は、USBデバッグを有効にしてみてください

0
Eldhopj