uetool大战饿了么!

三精-大精wing 三精-大精wing     2022-11-01     418

关键词:

本文同步自wing的地方酒馆

本文仅供学习研究用,如有侵犯,联系作者立即删除。

饿了么最近新推出一款开源库叫做UETool,用来帮助设计师,程序员,测试人员来在APP上修改View的各项参数。可谓是十分好用。

BUT

他只能给自己的项目添加依赖。这样就局限了他的实力。

如果可以把它集成到其他App就好了。那么,今天的目标就是: 把UETool注入到饿了么APK内部。

先来看下效果图, 成品是UETool已经成功运行在了饿了么里面:

接下来,将一步步带领大家把UETool注入进去:

要注入一些代码进入apk,首先肯定是要先反编译咯,所以用apktool搞之:

java -jar apktool_2.3.3.jar d eliaome_252.apk

然后你就会发现,呃。。apktool报错了:

可能很多小伙伴就此打住了,觉得没法解决。没事,别慌。因为是最新版apktool,这一定可以解决的。
仔细看其中有一句:
Baksmaling assets/hack.dex…

很可疑,assets底下有一个hack.dex,不管是存放位置还是命名都很可疑。猜测这是一个格式错误的dex,用于防范反编译。遂,搞之。 解压删除hack.dex,顺便把签名也删掉。

再次使用apktool反编译。很好,我们想要的东西出来了:

那怎么注入呢? 很简单,我们把UETool的sample的apk也给反编译,把UETool的smali文件拷贝过来,直接放入eleme的smali文件夹即可。

因为这里UETool的包名和饿了么的包名一样,所以才可以这样做,如果报名不一样,需要对所有smali文件做改动。

放入smali的时候,注意文件夹位置。

这个时候,代码问题解决完了,还要解决资源问题。观察UETool开源库,他的资源文件都是uet开头的,这下就好说了。把UETool反编译之后的values/public.xml文件打开,查找uet开头的资源:

这些就是开源库里面需要的资源,将其复制到饿了么的public.xml,并且把对应的xml文件也复制到饿了么的对应资源文件下。

此时,用apktool回编译,你会发现会报错。这是因为资源id冲突。

在aapt生成的资源中,7f是系统预留的资源开头id,后面两位代表类型,如图:
layout为04
drawable为02
再往后四位是id编号,这里为了防止冲突,统一修改为99xx,按续递增。

再次回编译,发现报错,找不到id。

于是将报错的id加入到values/ids.xml文件里面。 此时再回编译。发现编译成功!

此时,打开饿了么还不能运行UETool。因为没有调用他的showMenu。于是我们想在饿了么APP oncreate的时候,就注入。所以我们在UETool的demo里面,加一个类,判断一下进程,因为他会开多个进程:

将它编译为smali后,考入饿了么的smali文件夹,并且在android.taobao.atlas.startup.AtlasBridgeApplication注入一句启动UETool的代码:

invoke-static p0, Lme/ele/uetool/UETool3PHelper;->showUETool(Landroid/content/Context;)V

这个时候,重打包apk。安装启动,发现打开会跳到UETool的辅助功能悬浮窗授权页面,说明代码已经生效了。

但是再进入页面,会崩溃,观察log日志:

查看相关UETool源码发现:

明明是添加到LinearLayout上,为什么会报CoordinatorLayout呢?
在深思熟虑了10分钟后,终于灵光一现,原来是忘记改UETool里R$id的数值,然后代码就用UETool的id去饿了么apk里索引,于是找到了CoordinatorLayout。。

所以在此修改R$id里面的对应的id值。具体的值从public.xml找即可。这里需要注意的是,所有引用到的id基本上都要改掉。比如一些通用的id名比如name,那么饿了么里面也会有,所以要找到饿了么本身的name的id值给到UETool的id值。

这下大功告成,直接重打包,签名,安装,UETool就出现在了饿了么上面。

整个过程就是这样,总结成文章没多长,但是整个踩坑过程还是很耗时的。可以学到很多东西,哈哈。

如果你觉得文章不错,欢迎点个赞。

欢迎加入qq群交流Android技术:425983695

面试大战5轮,我顺利当上饿了么总监!

作者| 程军来源| 军哥手记(ID:zxhy_cj)今天写一篇关于面试的。和三位总监轮流PK说起这事,时间要回到2015年3月的某一个下午2点左右,具体哪天是真的忘记了。我被接待的HR带到一个诺大的会议室,后... 查看详情

build失败可能因为版本(代码片段)

...题:我在buildapk时报的错。原因是我想试试饿了么的UEToolsdebugCompile'me.ele:uetool:1.0.14'切换到project结构下发现support都有两个版本,我项目的26.1.0,uetool最新版里27.1.1,所以这类的build失败基本都是版本冲突解决... 查看详情

build失败可能因为版本(代码片段)

...题:我在buildapk时报的错。原因是我想试试饿了么的UEToolsdebugCompile'me.ele:uetool:1.0.14'切换到project结构下发现support都有两个版本,我项目的26.1.0,uetool最新版里27.1.1,所以这类的build失败基本都是版本冲突解决... 查看详情

饿了么商家名字怎么加后缀

参考技术A饿了么美团店加特符号,就是有你起名时约符号,直接按复制,复制后在游戏里改名添加,按你约爱好设就... 参考技术B饿了么美团店加特符号,就是有你起名时约符号,直接按复制,复制后在游戏里改名添加,按你约... 查看详情

饿了么账户异常怎么解决?

饿了么账户异常有以下几种解决方法:先退出登录,然后在登录试试。一般来说账号在其他地方登录次数过多才会这样。2.不行的话可以用账号申诉,看看自己账号有没有被盗用。3.设置好密保问题,保护好自己账号。也有肯能... 查看详情

饿了么订单记录怎么删除

...我们饿的时候已经不需要再自己动手做饭了,只需要点开饿了么就可以解决吃饭的问题。饿了么的出现给我们生活带来了很大的方便,但是很多朋友一直不知道怎么删除订单记录,今天就让我来教教大家吧。1、打开饿了么,我... 查看详情

饿了么业务井喷时,订单系统架构这样演进

...师(深圳)峰会上的演讲整理而成。老司机简介石佳宁,饿了么后台支撑研发部负责人,目前任职于饿了么,现任平台研发中心-后台支撑部门负责人,主要负责饿了么外卖订单、统一客服系统、BD销售以及管理工具、代理商管理平... 查看详情

饿了么交易系统5年演化史(代码片段)

作者介绍:杨凡,花名挽晴,饿了么高级架构师,2014年加入饿了么,2018年随饿了么被阿里巴巴收购一同加入阿里巴巴,4年团队管理经验,4年主要从事饿了么交易系统建设,也曾负责过饿了么账号... 查看详情

饿了么骑手审核不通过怎么办

参考技术A扣钱。饿了么会不定时的抽检骑手,骑手没有通过抽检会扣除骑手的钱,是无法申诉的,饿了么是2008年创立的本地生活平台,主营在线外卖、新零售、即时配送和餐饮供应链等业务。 查看详情

阿里饿了么?复盘马云102年商业大思维

2018年2月26日,突然传来阿里可能以95亿美元全资收购饿了么的传闻,阿里巴巴官方随后表示对“市场传言”不予置评。2016年8月,阿里巴巴和蚂蚁金服一起向饿了么投资12.5亿美元,2017年又进一步增持饿了么。2017年8月,饿了么宣... 查看详情

饿了么cto张雪峰:允许90后的技术人员“浮躁“一点

编者按:今年4月,饿了么正式加入了阿里新零售战队,进一步加速其在本地生活市场的扩张速度。在创业9年的时间中,饿了么在外卖领域经历了真正的“从0到1”,尤其是在外卖平台的技术升级方面,越过了一个又一个的无人... 查看详情

饿了么cto张雪峰:允许90后的技术人员“浮躁“一点

编者按:今年4月,饿了么正式加入了阿里新零售战队,进一步加速其在本地生活市场的扩张速度。在创业9年的时间中,饿了么在外卖领域经历了真正的“从0到1”,尤其是在外卖平台的技术升级方面,越过了一个又一个的无人... 查看详情

饿了么分布式服务治理及优化经验(含ppt)

饿了么分布式服务治理及优化经验(含PPT)导读:高可用架构7月30日在上海举办了『互联网架构的基石』专题沙龙,进行了闭门私董会研讨及对外开放的四个专题的演讲,期望能促进业界对互联网基础架构的建设及发展,本文是... 查看详情

饿了么:三招错旗让先行者惨败2016

站在互联网变局的风口,饿了么创始人张旭豪又一次感冒了。2016年的初冬,饿了么开始了一场声势浩大的“冬季战役”:高额补贴、冲GMV、从竞争对手挖人等等,一系列的动作,使沉寂已久的外卖O2O市场,再起波澜。让人颇感有... 查看详情

饿了么商家版登录显示开店信息

...是自动显示的。开店步骤如下:1、在软件商店里搜索“饿了么商家版”,然后点击“安装”。2、进入饿了么商家版点击右上角的“我要开店”。3、这时需注意查看要准备的资料,如果确保自己都已经准备好后则点击下面“准备... 查看详情

饿了么付款时出现设备信息异常怎么解决?

账户异常的解决方法:1、账户异常的话那就得到饿了么里面绑定下,密保要设置好,激活下qq邮箱,或者绑定下你的手机号码。可以解决问题。2、如果还是异常也有可能是软件得情况,卸载掉这个软件,重新下载下,到同步推... 查看详情

仿饿了么首页导航栏(viewpager)

1、需求分析在饿了么首页中我们能看到这样的布局(如下图)。红框内是一个可以左右滑动的页面,每一个页面类似于九宫格,都有可供点击图标。对于这样的布局,我在网上找了很久都没有找到相关的名称,所以我这里暂时... 查看详情

支付宝饿了吗怎么删除订单(支付宝饿了吗怎么删除历史订单怎么删除)

支付宝饿了么里的订单是可以删除的,具体操作如下:演示所用支付宝版本为10.2.961、打开支付宝以后,点开上方的搜索框。2、在输入框输入“饿了么”,等待自动搜索结束后,点击“饿了么”。3、点击打开小程序“饿了么”... 查看详情