Android 2.1 MPRC 移植
有关google自带的电子市场和市面上的各种山寨电子市场的对比:
http://digi.tech.qq.com/a/20101201/001441.htm
首先从已有的娱乐终端上把电子市场相关的固件扒出来(网上也有下载);
然后将相应的app、lib、jar、etc放到对应的system目录。
关于相关的服务介绍,以前有过研究:
http://blog.csdn.net/fengkehuan/archive/2011/02/24/6205963.aspx
第一次启动必须要登录gmail账户。wifi连接上之后,怎么也登不上。后来发现是
TelephonyManager.java@unicore_src/frameworks/base/telephony/java/android/telephony一个函数返回异常
public String getDeviceId() { 186 187 //Modified by FKH 188 return "pkunote"; 189 /*try { 190 return getSubscriberInfo().getDeviceId(); 191 } catch (RemoteException ex) { 192 return null; 193 } catch (NullPointerException ex) { 194 return null; 195 }*/ 196 }
然后我直接返回一个DeviceId,注释掉try catch。账户成功等上。
点进电子市场,看得到游戏列表,但是无法点击下载,弹出“电子市场意外终止”。
I/ActivityManager( 4911): Starting activity: Intent { act=android.intent.action.VIEW typ=vnd.android.cursor.dir/vending_games cmp=com.android.vending/.TabbedAppBrowser (has extras) } W/ResourceType( 5161): Failure getting entry for 0x7f020029 (t=1 e=41) in package 0: 0xffffffb5 D/AndroidRuntime( 5161): Shutting down VM
这种错误信息以前遇到过:主要是因为我们的小本没有触摸屏,应用程序找不到相应资源。应用程序会根据设备的情况来选择相应的资源文件
关于应用如何寻找资源的文章,网上很多:http://www.eoeandroid.com/thread-2558-1-1.html
对于我们的小本,如果应用中的图片资源文件夹名包含finger关键字,应该有相应的notouch拷贝。通过WinRar打开Vending.apk
可以看到带有finger的资源文件夹,所以,对于我们没有触摸屏的终端设备,必须有相应的notouch拷贝。
·直接在apk里面新建文件夹并命名,drawalbe-hdpi-notouch和drawable-mdpi-notouch
·找Vending源码
·修改源码,找到判断是否有触摸屏的地方,注释掉,强制返回有触摸屏。
第一种方法,错误依旧。原因是,虽然我将对应的notouch加到res中去了,但是并没有编译到resources.arsc中去。虽然我试着去改resources.arsc,修改还可以但是添加就难了。然后我又想了一大堆办法去搞,结果都无疾而终。
第二种方法,google不提供源码给我们。其实有源码就好办了。以前我们在跑Calendar和Contact等都遇到过。
第三种方法,没有必要,后来我想了想。花大力气去修改源码没有必要,因为我们后面的产品肯定有触摸屏。
这个问题准备放弃,搞清楚了就好。唉,说了半天废话。
然后我就下载了其他的山寨电子市场。
还是不能下载,出现的问题是我们的小本没有SDcard,没办法,找了个U盘,模拟成SDcard设备。可以正常下载安装。