将Android包* .APK拖放到AVD(Android虚拟设备)中会引发神秘错误:
The APK failed to install.
Error: Could not parse error string
允许使用未知来源
android.api = 24
android.minapi = 24
android.sdk = 24
答案 0 :(得分:16)
但是,如果我将同一个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
答案 1 :(得分:6)
我面临着同样的问题。问题是,如果在模拟器上已安装相同应用程序且具有相同版本,则它将不会更新/安装它,并且会引发与您相同的错误在做了。
尝试以下解决方案进行修复。
从仿真器中卸载旧的APK ,然后拖放新的APK,它将安装应用程序
按照@ Chuy47的建议从Build.gradle文件中更改版本号,构建新的APK并安装
希望有帮助。
答案 2 :(得分:5)
我必须用比当前安装的应用程序更高的VersionCode创建一个新的APK。
我的模拟器的版本为8,而当我尝试安装具有相同版本的新apk时,却出现了您提到的错误,因此解决方案是增加versionCode并生成一个新apk。
在build.gradle(模块:App)文件中执行
android {
defaultConfig {
versionCode 9 <---
versionName "1.1.0"
...
}
...
}
另一种解决方案是卸载当前应用并安装新的APK
答案 3 :(得分:3)
对于FLUTTER DEV
我从Android切换到Flutter,在发布之前,我的一个习惯就是将apk投向模拟器,以确保一切正常。但是使用Flutter,它不起作用。搜索后,我发现错误与x86体系结构有关,但是为什么我可以在x86上正常调试却无法安装?答案是Flutter仍支持x86进行调试,但不支持发布:https://github.com/flutter/flutter/issues/43005
如果您强制抖动,请构建x86:
build apk -t lib/env/main_stag.dart --flavor stag --target-platform android-arm,android-arm64,android-x64,android-x86
我将抛出错误:
Could not find io.flutter:x86_release:1.0.0
要仔细检查,只需执行以下步骤:
步骤1:
尝试通过终端安装应用程序:
adb install app_name.apk
您可能会看到:
adb: failed to install app_name.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries
第2步:
转到AVD Manager,检查仿真器CPU是否为x86
第3步:
使用x86_64创建一个新的仿真器,因此您可以安装apk并使用同一仿真器进行调试。
答案 4 :(得分:3)
在使用p4a
标志使用armeabi-v7a
构建apk之后,我花了相当长的时间自己经历了此问题,正如@Melquiades答案中概述的那样,我发现了问题,默认仿真器使用{ {1}}架构,因此当然不兼容。
解决方案是为x86
构建apk,您可以通过在x86
创建命令中使用arch标志-p4a
进行指定来完成。您可以在此处查看可用的选项:https://github.com/kivy/python-for-android/blob/master/pythonforandroid/archs.py
个人而言,使用--arch=x86
以外的任何标志运行python3crystax
ndk都找不到合适的二进制文件。对于所有架构,使用python3和android ndk运行同样失败。
如果您正在使用armeabi-v7a
,并且希望针对所有体系结构进行构建,则可以使用python3
。在buildozer
要求中指定python3crystax
,在buildozer.spec
行上链接ndk目录,并在该行上指定您选择的体系结构
android.ndk_path
按照本教程安装python 3.5:https://tecadmin.net/install-python-3-5-on-ubuntu/。您可能需要根据当前设置降级或升级# (str) The Android arch to build for, choices: armeabi-v7a, arm64-v8a, x86
android.arch = x86
版本。请注意,0.27和0.27.2均不适用于Kivy。我发现cython 0.25.2对我有用。您可以删除以前的版本并通过以下方式安装:
cython
当然,如果您在Ubuntu上运行:)
就在那里。您需要通过更改sudo pip3 install -U --force-reinstall cython=0.25.2
中的arch
选项并为每种体系结构运行buildozer.spec
来为不同体系结构创建多个apk。您仍然可以发布到Play商店,因为Google可以选择上传多个APK:https://developer.android.com/google/play/publishing/multiple-apks。
祝你好运; P
使用buildozer android debug
和SDK 20 / API 26 / NDK 15c / Python 3.7
的 EDIT python-for-android命令起作用。我没有亲自测试后者,但是可以在此python-for-android post中找到更多信息。经过测试前者,我可以验证它是否有效,但不支持SDK 20 / API 24 / NDK 14b / Python 3.7
。
答案 5 :(得分:2)
对我来说,在Android 9(API 28)模拟器系统映像上,从Play商店应用中禁用Google Play Protect可以解决问题,而且我能够摆脱解析错误。
禁用Google Play保护。打开“ Play Store”应用程序=>点击 在菜单按钮上=>选择“播放保护”选项=>禁用该选项 “扫描设备是否存在安全威胁”。
答案 6 :(得分:1)
确保在模拟器(Android虚拟设备)上尚未安装该应用程序。将新的.apk拖动或将一个版本发布到模拟器时,将出现错误:无法解析错误字符串。
1)从设备中删除现有应用程序
2)拖动以安装新的.apk
答案 7 :(得分:1)
查看 emulator-5554 unauthorized for adb devices 我发现您应该使用 Target Google APIs
而不是 Google Play
用于 Android 模拟器。
答案 8 :(得分:0)
这对我有用.....
答案 9 :(得分:0)
答案 10 :(得分:0)
您可以验证该应用的最低SDK版本吗?和您的虚拟设备android版本
AVD版本必须大于或等于应用程序的最低SDK版本
如果更好,请尝试启用USB调试
答案 11 :(得分:0)
这对我也是一个问题。 但是后来我发现我的运行代码没有经过签名的API。 您必须运行签名的api才能安装签名的API。
1。按Alt + F 转到项目结构See this box will open
点击“模块”并根据您发布的API更改签名配置
答案 12 :(得分:0)
从仿真器卸载应用程序不能解决此问题时,我要做的就是擦除仿真器的数据:在AVD管理器中,单击该仿真器最右边的向下箭头,然后选择“擦除数据”。
答案 13 :(得分:0)
apk安装失败,无法解析错误字符串
上述错误可能是由于:
祝你好运。
答案 14 :(得分:0)
我这样解决了;
我测试过的应用程序是本机应用程序。
答案 15 :(得分:0)
我设法通过重命名apk文件并确保执行以下操作来解决此问题:
希望它对您有帮助。
答案 16 :(得分:0)
如果您尝试安装新的api文件,请确保需要删除模拟器上的现有应用程序(如果有)。删除较旧的应用程序并安装应用程序文件对我来说有用
答案 17 :(得分:0)
从任务管理器中杀死Android模拟器,重新打开模拟器并运行APK对我有用。
答案 18 :(得分:0)
清除模拟器内存并重新启动模拟器,它将正常工作。
答案 19 :(得分:0)
执行以下操作似乎可以解决此问题:
buildozer.spec
中注释掉buildozer SDK设置(恢复为默认的SDK版本)(biuldozer不支持所有SDK)