将Android软件包* .APK拖放到AVD(Android虚拟设备)中会引发一个神秘的错误:
The APK failed to install.
Error: Could not parse error string
但是,如果我将这个相同的APK上传到我的实际Android设备,IT工作!它不仅安装,而且打开并运行我的应用程序,没有错误
这告诉我这可能是因为你的应用程序使用了与模拟器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
这对我有用.....
我面临同样的问题。问题是,如果在仿真器上已经安装了相同版本的相同应用程序,那么它将无法进行更新/安装。你会得到同样的错误。
请尝试以下解决方案来解决它。
希望能帮助到你。
我必须使用比当前安装的应用程序更高的VersionCode创建一个新的apk。
我的模拟器有版本8,当我尝试安装相同版本的新apk时,我得到你提到的错误,所以解决方案是增加versionCode并生成一个新的apk
在build.gradle(Module:App)文件中执行此操作
android {
defaultConfig {
versionCode 9 <---
versionName "1.1.0"
...
}
...
}
另一个解决方案是卸载当前的应用程序并安装新的apk
在使用p4a
标志使用armeabi-v7a
构建apk后,我花了相当长的时间来解决这个问题,我发现了问题,如@Melquiades回答中所述,默认模拟器使用x86
架构,所以当然它不兼容。
解决方案是为x86
建立你的apk,你可以通过使用arch flag - p4a
在--arch=x86
创建命令中指定这样做。你可以在这里看到可用的选项:https://github.com/kivy/python-for-android/blob/master/pythonforandroid/archs.py
就个人而言,用python3crystax
以外的任何标志运行armeabi-v7a
ndk都找不到合适的二进制文件。对于所有架构,使用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
按照本教程安装python 3.5:https://tecadmin.net/install-python-3-5-on-ubuntu/。您可能需要降级或升级cython
版本,具体取决于您当前的设置。请注意,0.27,0.27.2都不适用于Kivy。我发现cython 0.25.2对我有用。您可以删除以前的版本并安装选择:
sudo pip3 install -U --force-reinstall cython=0.25.2
如果你当然在Ubuntu上运行:)
你有它。您需要通过更改arch
中的buildozer.spec
选项并为每个体系结构运行buildozer android debug
来为不同的体系结构创建多个apks。您仍然可以发布到Play商店,因为Google可以选择上传多个apks:https://developer.android.com/google/play/publishing/multiple-apks。
祝你好运; P.
使用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
。
对我来说,在Android 9(API 28)模拟器系统映像上,从Play商店应用程序禁用Google Play Protect起了作用,我能够摆脱解析错误。
要停用Google Play Protect。打开“Play商店”应用程序=>点击菜单按钮=>选择“播放保护”选项=>禁用选项“扫描设备的安全威胁”。
确保您的仿真器(Android虚拟设备)上尚未安装该应用程序当您将新的.apk或释放一个应用程序拖到仿真器时,您将收到错误:无法解析错误字符串。
1)从设备中删除现有应用程序
2)拖动以安装新的.apk
你能验证该应用程序的最低sdk版本吗?和你的虚拟设备Android版本
AVD版本必须大于或等于应用程序的最小sdk版本
如果更大,请尝试启用USB调试
执行以下操作似乎解决了这个问题:
buildozer.spec
中评论buildozer SDK设置(恢复到默认SDK版本)(biuldozer不支持所有SDK)我设法通过RENAMING apk文件解决了这个问题并确保:
希望它能帮到你。