[转+创]最新AS无源码级调试apk

本文介绍了如何通过Smaliidea插件和Apktool工具来动态调试Android APK的源码,包括下载安装插件、反编译APK、导入源码到Android Studio以及以调试或attach方式启动应用。在调试过程中,作者遇到了一个与uvcCamera相关的bug,最终通过动态调试定位到问题,并强调了解决问题时的责任归属和适配系统的必要性。
摘要由CSDN通过智能技术生成

原文:

AS无源码调试APK - lsgxeva - 博客园

看我blog的人都知道,我不会纯转。与时俱进(截止2022年3月12号为止)的使用方式一般都是我自己现版本摸索出来的。所以步骤如下:

1. 下载 smalidea

https://bitbucket.org/JesusFreke/smalidea/downloads

在Android studio的插件仓库中没有找到这个插件,需要下载本地安装

File -> Settings -> Plugins -> Install plugin from disk 选择下载的插件,重启后生效。

2. apktool 输出源码文件

Releases · iBotPeaches/Apktool · GitHub

java -jar apktool_2.2.0.jar d -f xx.apk -o xx

如果正常的将输出 smali 源码文件

3. Android Studio 导入源码

File -> New -> import project 选择刚才导出的xx文件夹

4. 以调试模式启动应用(非必须,你完全可以手工点开app,然后在as里以attach进程的方式调试).

adb shell am start -D -n aa.bb/.activity

如果你以调试方式启动,那你去看文章顶部的链接。反正我试了,我水平不到位,没有成功。

5. 以attach方式启动调试,直接下断点就了。

小提示:F8单步 F7步进 F9运行到断点

注意:系统或者apk必须可调试,以下方式必须有2个之中的一个

getprop | grep

ro.debug [ro.debuggable]: [1]

或者:

APK 中AndroidManifest.xml 的Application有这句 android:debuggable=true

后话:

为什么忽然想起来调试apk这个功能,是因为有个客户用的uvcCamera 拔掉摄像头后app会卡住。用户抵死不认是app的问题。当然,最后我确认是uvcCamera有bug。但是客户不愿意按我的补丁改,说改了以后容易不稳定。我曹,你试都没试,改都改不动,这个2015年到现在没更新的工程你也敢用?抵死要改系统,说别人家的就不会卡,行吧。我觉得改系统风险挺大的。

奇葩在于:我自己用自带的例子修改出来的uvcCamera预览例子不卡(系统无修改的情况下)。一度陷入扯皮僵局。这时候我肯定认为是app写的有问题阿。而客户有不肯给源码,哪怕去掉业务逻辑,只给camera预览的逻辑的源码也都不给。然后我就在framework层各种加堆栈打印,再次吐曹这种客户,连个调试信息都懒得加给我们,卡在什么调用都不说,讲真,系统加打印和调用堆栈是效率极低的行为。此处耗费3天,最后确认是某个调用卡住了。但不知道是什么调用,因为反编出来的是乱码。又僵住了。于是弃掉这个问题,去修改别的问题了。

过了几天,灵机一动,想起来apk可以动态调试,那不就知道卡哪个语句了吗?

最后各种调,果然是uvcCamera的stoppreview有问题。然并卵,我当然可以在uvc层改好,但人家不肯用(我修改过的疑似有bugso),只好在系统层解决。至于怎么解决的,商业机密,就不说了。

我只想说:这个问题属于uvcCamera的bug。再次奉劝,没有能力修改uvcCamera库的人,遇到了问题,不要赖系统。当你用一个你不熟悉的库,又遇到了一种用android api没有的bug。那就是你自己的问题。你应该请你的老板炒了你,而不是抱怨系统有问题。系统当然有很多bug,但能在app层自己解决的问题,为什么要系统来解决?系统是单单为你uvcCamera服务的吗?从来都是app适配系统,没有说系统适配app的。这也就是小厂的悲哀了吧。。此处无语3000字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值