1

我想知道该应用程序是否取决于智能手机的类型,而不仅仅是安装的 andorid 版本。

我的意思是如果一个应用程序可以安装在运行 JB 4.2.2 的 Nexus 4 上,并且不能安装在运行相同 JB 4.2.2 的三星 Galaxy 1 上。

4

2 回答 2

2

我的意思是如果一个应用程序可以安装在运行 JB 4.2.2 的 Nexus 4 上,并且不能安装在运行相同 JB 4.2.2 的三星 Galaxy 1 上。

您认为它是“相同的 JB 4.2.2”的假设是不正确的。
是的,它基于相同的 android 4.2.2 源代码,但在这个版本中肯定有些东西会有所不同,而不是 UI 差异。

事实是,每个运行完全不同操作系统的设备至少为硬件二进制文件(驱动程序......)进行了修改,使其在特定硬件中工作。

除此之外,每个供应商都将其添加到操作系统(如三星触摸 Weis 界面..),除此之外 - 三星(例如)实际上正在修改令人兴奋的组件(如 ListView)以用于他们自己的目的(如滚动顶部时的边界。 .)

和后记 - 从 AT&T 等移动运营商处购买相同的设备时,您通常会进行更多修改。

那是在谁知道制作的所有自定义ROM之前......(三星没有向三星galaxy s1提供正式版的JB 4.2.2)

我确信 如果您的代码不够通用,所有这些修改通常会导致一些崩溃或异常......(有时只是因为用户在没有正确实现的糟糕 ROM 上运行您的应用程序......)

我还在我的三星 Galaxy S1 定制 JB 4.2 ROM 上安装了,并尝试运行 Whatssap 应用程序(最好的应用程序之一,在稳定性和支持所有设备和操作系统版本方面也是如此),但它运行不佳!粉碎,没有回应......如果Whatssap可以处理这个糟糕的自定义ROMS - 那么我想没有人可以......

权力越大,责任越大

android 是一个非常棒的操作系统,可以在数千个不同的设备上运行,但是如果你想确保你的应用在每一个设备(或至少大多数设备)上都运行良好,你必须至少对 10 个设备进行 QA 测试来自不同供应商/不同版本号/屏幕尺寸类别的不同设备。

有些问题你只能这样检测。

于 2013-07-28T14:08:24.560 回答
0

您可以在构建中引入风味。这是如何在 Gradle http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants

在风味中添加 BuildConfig 类的特定变体,它将保留对替代实现的引用

在 build.gradle

android {
....

  productFlavors {
    flavorNexus {
        buildConfig "public final static MyAbstractClassFactory CLASS_FACTORY = new NexusFactory();"
    }

    flavorSamsung {
        buildConfig "public final static MyAbstractClassFactory CLASS_FACTORY = new SamsungFactory();"
    }
  }
}

然后在您需要特定实现时在代码中

BuildConfig.CLASS_FACTORY.getInstance();

其中 getInstance 是创建您需要的任何实例的方法。

于 2013-07-28T14:32:40.687 回答