[Android源码开发] Android 4.3的代码迁移到4.4的过程中遭遇的种种问题及解决方法

原创 2015年11月21日 00:45:04

更新至20151121


======== 编译过程 ========


错误一:API不匹配

错误信息:

You have tried to change the API from what has been previously released in

an SDK.  Please fix the errors listed above.


错误原因:

current.txt中的API与源码不符。


解决方法:

make update-api

仍然报错,好像libcore和dalvik中修改的API并没有更新,手动更新这些API。再make,成功。


错误二:java版本修改不彻底

错误信息:

忘记记录了。。


错误原因:

java版本修改不完整,只修改了java和javac.


解决方法:

sudo update-alternatives --config javah #javap, javadoc jar等都需修改 


错误三:文件权限不足

错误信息:

dalvik/tools/dex-preopt: Permission denied


错误原因:

文件权限不足,无执行权限。

不过感觉好奇怪啊,为什么会没有执行权限?可能与这些代码是从其他机器复制过来的有关?


解决方法:

chmod u+x dex-preopt


======== 运行过程 ========


错误一:无法注册native函数

错误信息:

Unable to register: not native: Ljava/lang/Double; .doubleToLongBits:D(J)


错误原因:

/libcore/luni/src/main/native文件夹下增加了java_lang_Double.cpp,相关内容与/dakvik/vm/native/java_lang_Double.cpp不匹配。


解决方法:

修改/libcore/luni/src/main/native/java_lang_Double.cpp文件的相应部分


错误二:找不到native函数的实现

错误信息:

No implementation found for native Ljava/lang/String;.fastIndexOf:(II)I


错误原因:

原本/libcore/luni/src/main/java/java/lang/String.cpp文件在4.4中不存在,相应内容被存储在了/libcore/libarm和/libcore/libdvm的相应位置。因此native函数的相关实现不匹配。


解决方法:

修改/libcore/libarm和/libcore/libdvm中的相应文件。


关于native函数的小结

native函数的相关信息大多被存储在/dalvik/vm/native文件夹下,/libcore/luni/src/main/java下和/libcore/luni/src/main/native下,三者必须匹配。而4.4较4.3新增了两个文件夹,分别为/libcore/libarm和/libcore/libdvm,可以看出似乎是将/libcore/luni中的部分类和函数拆分成了arm和dvm两种实现,分别存储在了这两个文件夹中。类似的,相应文件中的内容必须匹配,native函数才能正常生成和使用。


版权声明:本文为博主原创文章,未经博主允许不得转载。

android 制作倒计时遇到的问题小结

android 倒计时 小结: android倒计时常用几种方法如下: 1、自定义倒计时控件 2、android系统控件countDownTimer 3、Timer和Handler共同操作完成 4、直...
  • h183288132
  • h183288132
  • 2015年06月28日 20:36
  • 839

从Eclipse迁移到Android studio(还有遇到的各种问题)

1,第一步,Eclipse还是要有滴,并且adt 得在22以上,我相信大家adt肯定在22以上了吧,不然还开发个毛。    (1) 在Eclipse中,选择Flie->Export-->Androi...
  • bruce_hei
  • bruce_hei
  • 2016年03月27日 09:30
  • 915

开发过程中遇到问题解决方法

自定义cell 时获取到的width 总是320: https://my.oschina.net/ioslighter/blog/390880 dyld: Library not load...
  • u013410274
  • u013410274
  • 2017年04月25日 09:46
  • 228

对象关系映射中的一些问题及对策

(一)   ORM简介1.1             ORM的技术背景对象---关系映射(ORM)是一种为了解决面相对象与关系数据库存在的互不匹配的现象的技术。简单的说,对象---关系映射(ORM)是...
  • zhou198806
  • zhou198806
  • 2010年05月02日 12:04
  • 374

ORM解决的主要问题是什么?

今天楼主分享一道经典Java面试题: ORM解决的主要问题是什么? 经过从网上查阅相应的资料,得到这些知识分享给大家: 一、ORM简介          对象关系映射(Object Relat...
  • qq_32575047
  • qq_32575047
  • 2018年01月09日 21:45
  • 67

eclipse项目迁移到android studio上

都这么久了才开始做这个,感觉真是落伍了,项目已开始使用的ec,所以平时也基本用的ec,自己写demo才用用as,现在想把项目迁移到as上来,以前迁移过很多坑,但最近正好有时间莫,就来填填。我个人感觉吧...
  • vpractical
  • vpractical
  • 2016年07月28日 12:31
  • 699

WEB开发过程中遇到的各种问题及解决方法总结

Q:The user specified as a definer ('root'@'%') does not exist A:只要给root用户再添加一个对全部host都有可以访问的权限  ...
  • happyflyingave
  • happyflyingave
  • 2014年05月06日 08:59
  • 3506

Android 4.4.2 bluetooth解析(一)

由于开发项目的关系,最近一直在对android4.4的bluedroid
  • lansefeiyang08
  • lansefeiyang08
  • 2014年05月27日 10:10
  • 10505

代码调试过程中容易遇到的问题

前两天身体有些不舒服,也没写啥新文章,昨天下了一天的雨,今天阳光明媚,空气也很新鲜,心情大好。 继翻译为什么输出是String而不是Object,今天先写一下调试方面的东西。java中自带的函数调试...
  • u012859193
  • u012859193
  • 2014年05月11日 15:06
  • 1699

Android项目从Eclipse迁移到Android Studio的过程和一些问题汇总

您的回帖,是我继续努力的动力。谢谢! 来公司一段时间了,从进公司至今,使用的开发环境一直是Eclipse和svn,国庆假期后,Android开发小组按照计划将开发环境迁移到Studio上面。项目中的开...
  • sdjzyuxinburen
  • sdjzyuxinburen
  • 2015年10月10日 21:20
  • 992
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Android源码开发] Android 4.3的代码迁移到4.4的过程中遭遇的种种问题及解决方法
举报原因:
原因补充:

(最多只允许输入30个字)