我想知道应用程序是否取决于智能手机的类型,而不仅仅是安装的andorid版本。
我的意思是如果一个应用程序可以安装在运行JB 4.2.2的Nexus 4上,并且无法在运行相同JB 4.2.2的Samsung Galaxy 1上安装。
答案 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是创建所需内容的实例的方法。