您的位置:首页 > 移动开发 > Android开发

Android在sdk上编译调试系统原生应用的方法

2011-11-12 17:30 537 查看
转自:http://www.devdiv.com/forum.php?mod=viewthread&tid=63134&extra=page%3D2%26filter%3Ddigest%26digest%3D1%26digest%3D1

很久前写的东西。发上来给大家共享下,不过作用不是很大,有兴趣的朋友参考。欢迎指正。

1、 这里以Music应用为例,首先将package/apps/Music目录全部拷贝到Eclipse workspace下;

2、 新建Android项目,选择"Create project from existing source",并指定项目的路径,如下图



选择好sdk版本,点finish,此时项目中会有很多错误;

3、 重名包名避免与系统默认的包名冲突,在src/com.android.Musicr上点击右键,"Refactor" -> "Rename...",名字可以自定义(我这里改成com.test.launcher),点击ok,如下图:



4、 导入Android类库 ,这个需要一个编译好的Android源码所生成的对应的jar包,这里要导入两个包,路径分别是out\target\common\obj\APPS\Music_intermediates\classer.jar和out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes.jar,分别对应music和framework:

1) 新建一个User Library :

在项目上右键,“Build Path” -> “Add Libraries...”,选择"User Library","Next";

在弹出的新界面,点选右侧的"User Libraries",在弹出的界面上点击new创建一个framework的lib,然后选择add jars将framework的jar添进来;

2) 添加User Library:

3) 确定后,打上"framework"前面的小勾,点finish;

4) 调整类库加载次序:

点击order and export,将"framework"调整到最上(项目右键,"Build Path"->"Configure Build Path...")。

此时重新build一下项目,错误会少很多。

这里主要还有两块地方的错误:

1. manifest.xml文件下,将com.android.music修改为刚才修改的包名com.test.music

2. 由于music应用用到了aidl,而aidl文件的路径必须是com.android,所以这里要把项目中的aidl文件删除,即删除IMediaPlaybackService.aidl文件,因为之前导入了Music_intermediates\classer.jar,然后在所有用到ImediaPlaybackService类的地方import com.android.music.ImediaPlaybackService即可。

改到这里基本上都没什么错误了(有的话可以自己修补一下,无非就是一些@hide的变量之类的,自己可以修改成常量),点击build即可生成apk,发个截图:





有可能编译生成的apk打开会报错,这里自己看一下log找原因吧。

其他的应用也差不多是这样处理即可,要注意的是@hide的api和变量还是无法访问的,如果需要调用@hide方法或变量,去掉@hide重新编译生成classes.jar应该就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: