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应该就可以了。
很久前写的东西。发上来给大家共享下,不过作用不是很大,有兴趣的朋友参考。欢迎指正。
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应该就可以了。
相关文章推荐
- Android:基于Eclipse编译调试系统级应用源代码
- 分享在Linux下编译Android源代码并修改调试系统自带应用的方法
- 分享在Linux下编译Android源代码并修改调试系统自带应用的方法
- Android中系统应用编译的目录设置方法
- Android:基于Eclipse编译调试系统级应用源代码
- 分享在Linux下编译Android源代码并修改调试系统自带应用的方法
- Android 应用, 手机调试 minSdk(API 23)> deviceSdk
- Android应用方法隐藏及反调试技术浅析
- Android系统扫描带广告应用的方法
- android系统调试方法
- Android系统安全之旅 第1章 编译Android程序的方法
- android 系统应用 开发 注意事项(该版本采用方法效率较高)
- 【转】eclipse 上调试android的自带应用方法
- 在Unix系统下编译Opencv源码生成android so库以及android-sdk
- Android第三方应用集成到Android系统的解决方法
- Ubutnu系统下用QT等IDE调用Caffe、SSD框架,编译Caffe实现分类检测等工程应用的方法
- Android Studio调试系统应用Launcher2
- Android系统移植与调试之安装apk时MTK命令和出现Failure [INSTALL_FAILED_DEXOPT]问题解决方法
- Android调用系统邮件类应用的正确实现方法