【发布时间】:2017-09-18 20:01:06
【问题描述】:
我正在开发一个旧应用程序(我在 4.0 上启动它),在将我的 nexus 5x 升级到 Oreo (8.0) 后我遇到了一些问题。
我的 Nexus 5x 是 x86 设备,每次我尝试为调试 porpuses 安装此 apk 时,都会收到所谓的错误“INSTALL_FAILED_NO_MATCHING_ABIS”。我以前从未遇到过这个问题,所以我开始寻找信息,我发现唯一有用的是:
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
在我的 build.gradle 文件中。
但这不起作用,为了确保问题出在 8.0 而不是另一个外部因素,我用 Nougat (7.1) 创建了一个虚拟 nexus 5x,它运行正常,但是当我将虚拟设备升级到8.0 我面临同样的 ABI 错误。
我的应用没有充分利用等级(真的很旧),但我有这个版本的插件:
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
}
}
我当前的 Android Studio 版本是 2.3.3,我还没有更新到 3.0,因为它处于测试阶段。
我还安装了 Intel x86 Emulator Accelerator(HAXM 安装程序)v 6.2.1
任何迹象都会被欣赏
提前致谢
【问题讨论】:
-
您是否尝试将 arm64-v8a 添加到您的包含列表中?
-
@WoogieNoogie 我刚刚尝试过,结果相同:(
-
我不明白,你说“我的 Nexus 5x 是 x86 设备”,这是模拟器还是真正的物理设备?物理设备有一个 Qualcomm Snapdragon 808,它是 arm v8 处理器。我的理解可能是在您更新到 Oreo 之前,该设备正在应用兼容性逻辑并使用
armeabi-v7a编译代码,一旦更新它可能会失去此功能,现在强制执行您的代码未编译的arm64-v8a,因此错误。现在对于模拟器,如果您使用的是 Android Nougat 的 x86_64 映像,可能与它没有被编译的情况相同。 -
好的,我看到@ahasbini,很抱歉造成误解,我认为我的设备(物理设备)是 x86 设备,因为模拟器创建了一个虚拟设备(Nexus 5x)并且它是 x86 设备(根据android studio),这就是为什么我认为我的设备具有相同的架构。然而,仿真设备和物理设备都无法运行应用程序。我将尝试再次使用 arm68-v8a,并再次运行一些测试。谢谢
-
@ahasbini 我曾尝试使用 arm64-v8a,但它仍然无法正常工作。我不明白为什么我在使用 android SDK 时必须指定 ABI(我查看了 apk 并且任何地方都没有 .so 文件......)
标签: android android-studio abi