[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函数才能正常生成和使用。


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

相关文章推荐

手机开发过程中的问题和解决方法

  • 2010年11月29日 00:19
  • 8.09MB
  • 下载

android开发中genymotion安装过程详解(包括安装过程中一些问题的解决方法)

一、genymotion的简介 Genymotion是一套完整的工具,它提供了Android虚拟环境。如果你没有物理机器,又不想忍受官方模拟器的折磨,Genymotion会是你非常不错的选择, 它简...

在学习Android过程中遇到的各类问题以及解决方法

这是我在Android学习之路上碰到的一些问题,以及解决方法。由于是初学者,一定有诸多错误和不准确之处,敬请谅解。...
  • pomony1
  • pomony1
  • 2017年01月15日 17:18
  • 221

android ndk 编译运行过程中易出现的问题,解决方法

第一种:    新建编译器:右键项目---Properties:如    图一                                                       ...

Android Studio安装过程中出现一些问题的解决方法(都已解决)

Android Studio安装过程中出现一些问题的解决方法(都已解决)        大家都知道Google已经宣布将会很快停止对Eclipse Android开发工具的一切支持,转向Andr...

java开发过程中对于乱码问题的解决方法

最近在做项目的时候由于要用到一个日志的功能,然后将操作日志写到文件中,最后定时从日志中读取文件写到数据库中,由于在定时任务中用到了RandomAccessFile记录日志的增量部分,所以产生了在用Ra...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Android源码开发] Android 4.3的代码迁移到4.4的过程中遭遇的种种问题及解决方法
举报原因:
原因补充:

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