|
4.2不能运行凯立德,一直都有这个困扰。
百度求解竟然发现机锋已经有大神解决了。
原帖地址:http://bbs.gfan.com/android-5703460-1-1.html
4.2.1下可运行的凯立德导航apk(下载后请解压,里面有Apk文件)下载地址:本帖隐藏的内容http://pan.baidu.com/share/link?shareid=240865&uk=2063770163
地图下载:本帖隐藏的内容http://bbs.gfan.com/forum.php?mod=viewthread&tid=5651268
若下载不了,用这个地图地址本帖隐藏的内容http://kuai.xunlei.com/d/KBFOWQVYGEPN?p=124870
/////////////////////////////////新增无破音版//////////////////////////////////////////////////
基础版本:2012夏季C2433-A7A07-2921J0B语音豪华旗舰安卓版
更新方法:1、下载以上地图包,若已下好则略过。
2、下载补丁包本帖隐藏的内容http://kuai.xunlei.com/d/KRATLIFJMNUY?p=124870
,解压后覆盖原地图目录。
3、下载Apk,卸载原来的重装。apk地址:本帖隐藏的内容http://pan.baidu.com/share/link?shareid=242751&uk=2063770163
说明: 更新之后初步测试无破音,无手写漂移,已无语音识别,可控制音量,但GPS搜星未测。若有问题,请返回之前版本。
破音解决参考自本帖隐藏的内容http://bbs.gfan.com/android-5293773-1-1.html
////////////////////////////////////////////////////////////////////////////////////////////////////
注意:若遇到破音、声音小或其他问题,这是原始凯立德版本的问题,与本人修改的无关。本人只是修复了4.2.1下地图加载出错而FC的问题。可以使用以下方法修复别的版本的凯立德apk。
声明:
此程序仅提供手机学习测试,不承担任何技术及版权问题,非法传播或用于商业用途,自负法律责任。请在下载后24小时内删除,请支持购买正版。
自从刷了mike1986的4.2.1,凯立德不能用了,开车不能用不爽。
自己研究了下,搞了一个能运行的版本,目前加载地图正常,GPS搜星正常。
不能运行的的原因初探,
“Buffer not large enough for pixels at android.graphics.Bitmap.copyPixelsFromBuffer”这是问题是因为Android以前的版本copyPixelsFromBuffer不会改变buffer位置所以都是固定从位置0开始但现在Android 4.2 copyPixelsFromBuffer做完会将buffer位置更新所以就发生悲剧了... 解法就是把buffer移回来啰: buffer.position(0)。引用自本帖隐藏的内容http://tw.m.wretch.yahoo.com/blog/JohnDX/15769572?current_page=1&pageSize=20
以此为依据,以下是反编译修改方法,抛砖引玉。
原始apk实用doapk反编译,记事本打开“\smali\cld\navi\mainframe\MainView.smali”, 找到copyFromBuffer方法,原始应该这样: - .method public copyFromBuffer(Ljava/nio/Buffer;)I
- .locals 1
- .parameter "buffer"
- .prologue
- .line 138
- iget-object v0, p0, Lcld/navi/mainframe/MainView;->mDrawBitmapandroid/graphics/Bitmap;
- invoke-virtual {v0, p1}, Landroid/graphics/Bitmap;->copyPixelsFromBuffer(Ljava/nio/Buffer;)V
- .line 139
- const/4 v0, 0x0
- return v0
- .end method
复制代码
用以下字符串覆盖所有的copyFromBuffer方法 - .method public copyFromBuffer(Ljava/nio/Buffer;)I
- .locals 1
- .parameter "buffer"
- .prologue
- .line 138
- iget-object v0, p0, Lcld/navi/mainframe/MainView;->mDrawBitmapandroid/graphics/Bitmap;
- invoke-virtual {v0, p1}, Landroid/graphics/Bitmap;->copyPixelsFromBuffer(Ljava/nio/Buffer;)V
- .line 138
- const/4 p0, 0x0
- invoke-virtual {p1, p0}, Ljava/nio/Buffer;->position(I)Ljava/nio/Buffer;
- .line 139
- const/4 v0, 0x0
- return v0
- .end method
复制代码
保存后重新编译签名即可。
其他版本的凯立德应该都可以这样修改。若有需求,请按以上方法修改。
从java源码来看,原始的为: - public int copyFromBuffer(Buffer paramBuffer)
- {
- this.mDrawBitmap.copyPixelsFromBuffer(paramBuffer);
- return 0;
- }
复制代码
加一行,修改为: - public int copyFromBuffer(Buffer paramBuffer)
- {
- this.mDrawBitmap.copyPixelsFromBuffer(paramBuffer);
- paramBuffer.position(0);
- return 0;
- }
复制代码
|
|