下面分析解决以上问题:
A. 关于找色失灵问题统一分析解决:
a. 首先,出现这个问题的根源是因为使用了模拟器。如果截图和使用都是在真机上时,不会存在上述前三个问题。
b. 模拟器给我们的开发和测试带来了很大的方便,但随之也带来了需要我们不得不去考虑的一些问题(多一个成员多一个问题,这也符合情理)。
也就是说,当我们借助了模拟器去截图也好测试也罢,我们要考虑的坐标体系就不再是【TC坐标体系 <-----> 手机安卓界面坐标体系】这两者间的关系了,
而是【TC坐标体系 <-----> 模拟器坐标体系 <-----> 模拟器内的安卓界面坐标体系】这三者之间的关系。而在这三者中,让坐标体系产生混乱的正是模拟器的坐标体系。
c. 我们都知道所谓安卓模拟器,仅仅是能够搭载安卓系统运行在WINDOWS操作系统上的框架而已。我们想让安卓系统在WINDOWS上跑起来,所以才有了模拟器这个框架。
d. TC坐标体系和安卓界面坐标体系大家都知道,那什么是模拟器坐标体系?其实很简单,就是这个框架在内部搭载安卓系统时,是框架自己旋转还是自己不动仅让安卓界面旋转的问题。
e. 也就是说,当我们在模拟器上设置某个分辨率后,是这个框架本身去适应内部安卓界面所需要的大小,还是框架本身大小不变仅让安卓界面来自适应框架,还是它俩根据分辨率动态去适应的问题。
f. 模拟器的这种适应分辨率的方式,是由模拟器开发人员定的。所以,不是说只要是模拟器它的适应分辨率的原理都相同。
g. 模拟器框架我们可以理解为是手机真机的物理框架。不同的是,手机框架大小不会自己变,但模拟器有会的也有不会的。
h. 上述,只是让我们一起来了解了模拟器有自己去适应安卓界面的,也有让安卓界面来适应自己的。那么它俩有什么不同呢? 这才是重点,也是出现坐标体系混乱的源头。也就是谁旋转的问题。
I. TC安卓版所识别的是安卓系统的坐标体系(也就是分辨率)。
综上:
a. 假设,当前模拟器在屏幕上显示的是横着的,并且分辨率是 1280 x 720 的横屏;
b. 当我们在模拟器上把分辨率设置为 720 x 1280 时,模拟器肯定会立起来。问题是在竖屏的过程中,是谁的分辨率变了? 不同的模拟器会对它有不同的定义设计;
c. 如果是改变了安卓分辨率,模拟器框架仅是去适应了这个分辨率,那么TC安卓版所获取到的当前安卓分辨率会是 720 x 1280 ,这也是我们想要的;
d. 而要是模拟器自身改变了坐标体系,让内部的安卓界面通过屏幕旋转来适应自己了呢? 那么TC安卓版所获取到的当前安卓分辨率会是 1280 x 720 ,这不是安卓开发人员所想要的结果。
(因为安卓系统不会因为屏幕旋转了一下分辨率就会变,正如我们的真机不会因为屏幕旋转一下手机分辨率就会变,一个道理)
虽然这对一般用户,对用模拟器来打游戏的用户毫无影响,但对于开发脚本的人员来说带来了两方面的麻烦:
其一,开发过程中要额外注意坐标体系问题;
其二,想让自己的脚本即能适用于真机又能适用于所有模拟器的话,同种分辨率下至少要把截图横竖翻过来取两次坐标(或找图找色找字),再根据获取到的用户机分辨率进行分支。
e. 遇到坐标体系问题的童鞋,换一个模拟器开发虽说也是种方法,至少你自己开发时是不会出现任何问题的。但这么做的结果是,你的脚本在其它类型的模拟器中不会正常工作。
没遇到坐标体系问题的童鞋,其实也有必要了解一下。你只是恰好在使用着不会出现坐标体系问题的模拟器,那么使用其它类型模拟器的潜在用户呢?
B. 关于打包成APK之后,安装到手机不能用的问题:
a. 99%的原因是,你的本地 JDK 版本过高。JDK是向上兼容,向下不兼容的。 在高版本JDK中打包的脚本,无法在低版本JDK环境中运行。
b. 剩下1%就是你的RP问题了。