如何管理不同设计的代码以支持所有设备
How to manage code for different design to support all devices
我有一个应用程序,它已经为大型设备制作,例如 10 英寸平板电脑和自助服务终端。我为手机做了相同的设计,但看起来不太好,所以我想将移动设备移动到 material 设计,其余设备(平板电脑和信息亭)将保持不变。
我知道如何为不同的设备制作不同的布局,即普通、大型和超大型,但我担心代码。所以基本上以下是我的困惑....
- 判断我的应用程序在哪个设备上运行的最佳方法是什么运行在代码中,所以我必须运行在此基础上使用一些方法,因为我的普通设备正在跟随material 设计并包含一些平板电脑和信息亭设计中不存在的小部件,即 RecyclerView(出于某种目的)?
- 我已经为这个问题搜索了很多,得出的结论是有两种支持多设备的方法
1> 制作两个单独的 apk,2> 制作一个 apk 并签入代码以区分设备,但正如我在上面第 1 点所说# 1 我在普通设备上有 material 设计,并且在小部件和布局、片段甚至导航方面完全改变了设计,那么您建议什么是处理这个问题的最佳方法?
- 如果我制作 1 个 apk 并检查代码,那么我必须说我有大量的代码和资源,并且在任何一种情况下(如果设备是正常的和大的)一些资源和 类 永远不会使用并且会使 apk 大小变大那么解决此问题的最佳方法是什么?
我还通过 Whosebug 进行了搜索,只找到了这两个与我的问题接近的链接,但其余链接是关于不同布局的,而不是代码:
- Android app for phone and tablet: 1 or 2 apps?
- 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。
我有一个应用程序,它已经为大型设备制作,例如 10 英寸平板电脑和自助服务终端。我为手机做了相同的设计,但看起来不太好,所以我想将移动设备移动到 material 设计,其余设备(平板电脑和信息亭)将保持不变。
我知道如何为不同的设备制作不同的布局,即普通、大型和超大型,但我担心代码。所以基本上以下是我的困惑....
- 判断我的应用程序在哪个设备上运行的最佳方法是什么运行在代码中,所以我必须运行在此基础上使用一些方法,因为我的普通设备正在跟随material 设计并包含一些平板电脑和信息亭设计中不存在的小部件,即 RecyclerView(出于某种目的)?
- 我已经为这个问题搜索了很多,得出的结论是有两种支持多设备的方法 1> 制作两个单独的 apk,2> 制作一个 apk 并签入代码以区分设备,但正如我在上面第 1 点所说# 1 我在普通设备上有 material 设计,并且在小部件和布局、片段甚至导航方面完全改变了设计,那么您建议什么是处理这个问题的最佳方法?
- 如果我制作 1 个 apk 并检查代码,那么我必须说我有大量的代码和资源,并且在任何一种情况下(如果设备是正常的和大的)一些资源和 类 永远不会使用并且会使 apk 大小变大那么解决此问题的最佳方法是什么?
我还通过 Whosebug 进行了搜索,只找到了这两个与我的问题接近的链接,但其余链接是关于不同布局的,而不是代码:
- Android app for phone and tablet: 1 or 2 apps?
- 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。