android中的应用程序取决于智能手机的类型?

时间:2013-07-28 13:55:56

标签: android

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

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

2 个答案:

答案 0 :(得分:2)

  

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

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

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

除此之外,每个vendoe都添加了它添加到操作系统(如三星触摸Weis界面..),除此之外 - 三星(例如)实际上是为了自己的目的修改令人兴奋的组件(如ListView)(这样的界限当滚动顶部..)

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

那是在所有定制的ROMS之前由谁知道...(三星没有提供JB 4.2.2的官方版本给samsung galaxy s1)

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

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

  

凭借强大的力量,带来了极大的责任感

android是在几千种不同的设备上运行的非常好的操作系统,但如果你想确保你的应用程序在每一个(或至少大多数)上运行良好,你将不得不进行QA测试来自不同供应商/不同构建数/屏幕尺寸类别的至少10个不同设备。

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

答案 1 :(得分: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是创建所需内容的实例的方法。