如何管理不同设计的代码以支持所有设备

How to manage code for different design to support all devices

我有一个应用程序,它已经为大型设备制作,例如 10 英寸平板电脑和自助服务终端。我为手机做了相同的设计,但看起来不太好,所以我想将移动设备移动到 material 设计,其余设备(平板电脑和信息亭)将保持不变。

我知道如何为不同的设备制作不同的布局,即普通、大型和超大型,但我担心代码。所以基本上以下是我的困惑....

我还通过 Whosebug 进行了搜索,只找到了这两个与我的问题接近的链接,但其余链接是关于不同布局的,而不是代码:

  1. Android app for phone and tablet: 1 or 2 apps?
  2. Creating different layout for android phone and tablet

我希望我的问题很清楚,请用一些真实的理由和链接回答我的这些问题。

Multiple apks for a single app 在 Google Play 中受支持。但是,除非您的应用非常大(大于 100MB),否则他们建议您为所有设备发布一个 apk。

因此您需要在 运行 时检查屏幕尺寸。你可以这样做 by category, by device independent pixels, or even in inches。然后,如您所说,您将相应地加载适当的布局和片段。

即使您要使用不同的 apk,您也可能会以类似的方式进行操作,因为您可能想要共享一些代码。

在 Gradle 中,您将为每个 apk 创建 productFlavors,以及一个定义构建的变量,如下所示:

productFlavors {
    bigtablet {
        buildConfigField "String", "deviceType", "\"bigtable\""
    }
    smalltablet {
        buildConfigField "String", "deviceType", "\"smalltable\""
    }
}

然后在 运行 时,您将使用 BuildConfig.deviceType 驱动与屏幕尺寸在 one apk 方法中完全相同的逻辑。使用此方法 Gradle 将从每个 apk 中删除所有未使用的代码。

最后一个选项是为每个 apk 创建完全不同的项目。将所有共享代码推送到库中。

您现在始终可以将所有内容放在一个 apk 中,如果 apk 变得太大,则切换到多个 productFlavors。由于逻辑相似,因此切换起来并不难。希望这有帮助。

支持库旨在最大程度地减少您检测运行应用的 Android 版本差异所需的工作量。例如,支持库中提供了 RecyclerView。在此文件夹和 layout-xxx 文件夹之间,您通常可以为所有 API 级别和设备外形构建一个 APK。