android4.4相比android4.2/4.3除了一些网上说的15个新功能的变化之外,其实源码上也有许多变化。
其中之一是代码位置的变化,比如多了Launcher3,Launcher2基本没用了,或者Keyguard不再放在frameworks的policy里面了已经单独移到frameworks的packages包里与SystemUI等作为一个apk的存在。当然今天我要说的不是这些,要说的是前几天在移植4.2/4.3上的一个功能到4.4上遇到的新问题,相信之后会有很多人遇到。所以在这列出来,减少大家查找错误的时间,为广大手机系统开发者做点贡献(哈哈其实我没这么伟大,只是经常看别人博客上的东西,看得多了心理过意不去,也写点东西给后来者看看)
废话不多说,我在移植完后编译发生找不到:Phone.java,PhoneFactory.java,GeminiPhone.java这三个类的错误,查看导包等情况后,发现都有正常的导包,路径之类都没错,可总是报这个错误。
后来发现是因为4.2/4.3上使用的mk文件在4.4上行不通 了:
4.2/4.3上如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
# Build all java files in the java subdirectory
LOCAL_SRC_FILES := $(call all-java-files-under, src)
# Name of the APK to build
LOCAL_PACKAGE_NAME := xxxx...
LOCAL_CERTIFICATE := platform
# Tell it to build an APK
include $(BUILD_PACKAGE)
后来加了几句:
LOCAL_JAVA_LIBRARIES := telephony-common \
mediatek-framework \
LOCAL_STATIC_JAVA_LIBRARIES :=android-support-v4 \
android-support-v13 \
LOCAL_AAPT_FLAGS := --auto-add-overlay --extra-packages com.mediatek.gemini.simui
发现就不再报找不到Phone.java,PhoneFactory.java,GeminiPhone.java这三个类的错误了,不过又报了找不到许多方法的错误,如下一下方法:
TelephonyManager.java
1.getDeviceIdGemini(int simId)
2.getCellLocationGemini(int simId)
3.enableLocationUpdatesGemini(int simId)
4.getNeighboringCellInfoGemini(int simId)
....
GeminiPhone.java
getDeviceIdGemini(int simId)
....
等和Gemini相关获取其中一个sim卡相关状态的方法在4.4上都被丢弃了没写,所以若应用里有调用这些方法都会发生找不到的错误。
这些都是因为4.4上电话接口里面发生变化而导致的。所以如果你的应用里有用的这几个类,那就得重新获取相关状态了。。。。。。。
其中之一是代码位置的变化,比如多了Launcher3,Launcher2基本没用了,或者Keyguard不再放在frameworks的policy里面了已经单独移到frameworks的packages包里与SystemUI等作为一个apk的存在。当然今天我要说的不是这些,要说的是前几天在移植4.2/4.3上的一个功能到4.4上遇到的新问题,相信之后会有很多人遇到。所以在这列出来,减少大家查找错误的时间,为广大手机系统开发者做点贡献(哈哈其实我没这么伟大,只是经常看别人博客上的东西,看得多了心理过意不去,也写点东西给后来者看看)
废话不多说,我在移植完后编译发生找不到:Phone.java,PhoneFactory.java,GeminiPhone.java这三个类的错误,查看导包等情况后,发现都有正常的导包,路径之类都没错,可总是报这个错误。
后来发现是因为4.2/4.3上使用的mk文件在4.4上行不通 了:
4.2/4.3上如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
# Build all java files in the java subdirectory
LOCAL_SRC_FILES := $(call all-java-files-under, src)
# Name of the APK to build
LOCAL_PACKAGE_NAME := xxxx...
LOCAL_CERTIFICATE := platform
# Tell it to build an APK
include $(BUILD_PACKAGE)
后来加了几句:
LOCAL_JAVA_LIBRARIES := telephony-common \
mediatek-framework \
LOCAL_STATIC_JAVA_LIBRARIES :=android-support-v4 \
android-support-v13 \
LOCAL_AAPT_FLAGS := --auto-add-overlay --extra-packages com.mediatek.gemini.simui
发现就不再报找不到Phone.java,PhoneFactory.java,GeminiPhone.java这三个类的错误了,不过又报了找不到许多方法的错误,如下一下方法:
TelephonyManager.java
1.getDeviceIdGemini(int simId)
2.getCellLocationGemini(int simId)
3.enableLocationUpdatesGemini(int simId)
4.getNeighboringCellInfoGemini(int simId)
....
GeminiPhone.java
getDeviceIdGemini(int simId)
....
等和Gemini相关获取其中一个sim卡相关状态的方法在4.4上都被丢弃了没写,所以若应用里有调用这些方法都会发生找不到的错误。
这些都是因为4.4上电话接口里面发生变化而导致的。所以如果你的应用里有用的这几个类,那就得重新获取相关状态了。。。。。。。