我在 Android 项目中使用编译为armeabi-v7 的本机库。我的项目以 Android SDK 8 为目标。当我尝试在拔掉手机电源的情况下运行它时,自动定位会选择 Android 2.2 (armeabi) 虚拟设备而不是 4.03 (armeabi-v7) 并尝试在该设备上安装它,但这会抛出异常一个
Failed to install apk on device 'emulator!
错误。
我找不到指定所需处理器架构的方法,考虑到您可以使用
<uses-configuration>
指定 Android SDK 版本、硬件要求(如硬件键盘)、更多硬件要求,甚至使用 <uses-feature>
指定 OpenGL 版本,这似乎很奇怪AndroidManifest.xml。
有办法指定吗?
不,没有办法做到这一点,这很奇怪,我同意。有一种指定架构的方法(在 Application.mk 中设置 APP_ABI :=armeabi-v7a),但这仅在构建本机库时考虑,而不是在选择适当的模拟器时考虑。
但请注意,当您将应用程序发布到 Google Play 时,目标架构将被视为市场过滤器,您可以在开发控制台上看到它们。
可以在构建gradle文件中设置:
https://developer.android.com/games/optimize/64-bit#android-studio-gradle
// Your app's build.gradle
android {
...
defaultConfig {
...
ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
同一件事的替代品: https://developer.android.com/ndk/guides/abis#gc
android {
defaultConfig {
ndk {
abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
}
}
}
您还可以将调试和发布中所需的内容放入“src/debug/jniLibs”和“src/release/jniLibs”文件夹中,如此处所示用于不同目的:
https://blog.dipien.com/stop-generate-the-buildconfig-on-your-android-modules-7d82dd7f20f1