【问题标题】:Android Studio: How to run a single test on x86Android Studio:如何在 x86 上运行单个测试
【发布时间】:2014-10-31 19:54:39
【问题描述】:

我为两种不同的架构使用两种不同的风格,因为我有非常大的本机库,并且我想要更小的二进制文件。

当我点击“运行”图标时,Android Studio 总是会构建和部署我们产品的“Arm”风格。如果我在 x86 模拟器上运行它,它会失败,因为它没有适用于 x86 的库。

有人知道如何说服 Android Studio 为特定的模拟器部署正确的版本吗?

【问题讨论】:

  • 我不确定“我为两种不同的架构使用两种不同的风格,因为我有非常大的本机库,并且我想要更小的二进制文件”是什么意思。除了您正在为两种不同的架构进行开发外,这几乎没有告诉我任何信息。当您设置运行或调试配置时,您需要选择目标。你选择了正确的目标吗?如果您将其设置为针对 Arm 目标运行,则没有理由期望它为 x86 构建。
  • 在设置运行或调试配置时不必选择目标。您可以将其保留为“提示”设置,以提示您在哪个设备上运行。此外,将“首选”目标设置为 x86 目标仍会构建和安装 Arm 版本。

标签: android android-studio


【解决方案1】:

尝试在 build.gradle 中使用 abiFilter 属性。

This post 解释了如何在不同架构中使用原生库:

为每个架构构建一个 APK,并且做得很好!一章中说:

通过使用 abiFilter 属性,使用风味非常容易地为每个架构构建一个 APK。

尝试将其添加到您的 gradle.build

android{
  ...
  productFlavors {
        x86 {
            ndk {
                abiFilter "x86"
            }
        }
        mips {
            ndk {
                abiFilter "mips"
            }
        }
        armv7 {
            ndk {
                abiFilter "armeabi-v7a"
            }
        }
        arm {
            ndk {
                abiFilter "armeabi"
            }
        }
        fat
    }
}

您可能只需要armx86

在此之后,使用 gradle 文件同步项目

Tools > Android > Sync Project with Gradle Files

现在您应该能够在构建变体之间切换,并且应该会生成一个按体系结构的 APK。

选择左下角的Build Variants。您应该能够在 Build Variant 下拉菜单中切换不同的架构。

希望这会有所帮助。

【讨论】:

  • 我已经有了。这就是我获得多个 APK 的方式。我想知道的是,有没有办法告诉 Android Studio“运行”或“调试”按钮要构建和部署哪个变体。
  • 也就是说,点击“运行”按钮时如何“在构建变体之间切换”?
  • 您可以在左下角选择不同的架构/BuildVariants。有一个 BuildVariant 视图。或者你已经尝试过了?只需构建项目并将其部署到设备上?
  • 谢谢丹尼斯!那就是我要找的面板!您可以将此作为“答案”发布,以便我检查一下吗?
【解决方案2】:

首先,现在有一种更简单的方法来分发到不同的 ABI,而无需使用风味 - 这是 Android gradle 的新功能0.13.0 (2014/09/18) - http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits

上面写着:Using the new Split mechanism, building a hdpi, and an mdpi version of the same app will share a lot of the tasks (like javac, dx, proguard). Additionally, it will be considered a single variant and the same test app will be used to test every multi-apk.

也许这会帮助您更轻松地管理测试

【讨论】:

  • 这肯定是有用的信息。我会考虑修改我的 gradle 构建以利用它,但我仍然认为 Android Studio 会在这里做错事。如果是这种情况,我会在我完成对拆分的转换后通知您。
猜你喜欢
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 2013-11-22
  • 1970-01-01
  • 1970-01-01
  • 2015-05-04
  • 1970-01-01
  • 2014-11-11
相关资源
最近更新 更多