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

2024-01-20 02:38

本文主要是介绍Android源码APK剥离到eclipse调试运行教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载请注明出处多谢

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

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,剥离出来也需要进行签名才能正常运行,这个要根据每个平台来了。

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

这篇关于Android源码APK剥离到eclipse调试运行教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/624559

相关文章

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思