Android源码APK剥离到eclipse调试运行教程

来源:互联网 发布:360n5手机怎么样 知乎 编辑:程序博客网 时间:2024/05/22 04:25

转载请注明出处多谢

废话不多说,简单介绍下流程有问题欢迎提问

1.首先把源码导入eclipse。

例如email,源码目录是package/app/email 这个文件夹拿出来,然后在eclipse中使用 file,import,existing Android code into workspace导入

这样工程导入了eclipse,会有很多错误,莫慌

2.观察Android.mk文件

源码中,app的src同级文件夹都会有Android.mk文件指导编译,打开观察

类似这样的,是需要一些资源文件,这样你就需要在源码找到对应的目录把src 删除,只保留res,然后作为Android library导入即可。

chips_dir := ../../../frameworks/ex/chips/res
unified_email_dir := UnifiedEmail
photo_dir := ../../../frameworks/opt/photoviewer/res ../../../frameworks/opt/photoviewer/appcompat/res

如何把一个工程作为Android library呢,如下,右键工程的property:


然后在需要调试的主工程右键property


这样之后需要的RES资源文件基本就没问题了。

接下来是需要的jar包。需要注意的是jar包中是不包含res 文件的所以需要上面的步骤。

需要导入哪些jar包也是在Android.mk文件:

Android.mk中如下的则是需要导入的jar包

LOCAL_STATIC_JAVA_LIBRARIES := android-common com.android.emailcommon guava
LOCAL_STATIC_JAVA_LIBRARIES += libphotoviewer_appcompat
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-appcompat
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-gridlayout
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v13
LOCAL_STATIC_JAVA_LIBRARIES += android-opt-bitmap
LOCAL_STATIC_JAVA_LIBRARIES += android-opt-datetimepicker
LOCAL_STATIC_JAVA_LIBRARIES += owasp-html-sanitizer

那么这些jar包可以到哪里找到呢,在源码的\out\target\common\obj\JAVA_LIBRARIES这里面找到对应的如android-support-v7-appcompat文件夹,进去的class.jar就是。

注意,源码需要编译过才有out目录

我们可以把他提取出来,重命名为android-support-v7-appcompat.jar

3.关联jar包及遇到问题

依旧右键工程,property 如下选择jar包存放的路径


问题:

把所有jar包都导入后,有可能会运行崩溃。这是因为有的包需要打包到APK里,不光编译时需要这些包,运行时也要。如下打钩,并且顺序也有影响,framework的包一般都要在最上面,包也不能随便打钩,需要具体自己试试。像framework是不需要打钩的。


另外还有可能遇到报错

Multiple dex files define 这种错误如下


这是因为有两个包都有 报错的Landorid/support/annotation/Animres,因此重复了。

可以直接在压缩的情况下打开jar包,看看哪些包有这个报错的文件,直接在压缩的状态下删除重复的包即可。

最后有一些系统APK,剥离出来也需要进行签名才能正常运行,这个要根据每个平台来了。

基本上就是这样,欢迎大家留言讨论,转载请注明出处

阅读全文
1 0
原创粉丝点击