Android工程师,如何简单高效的学会smali语法,原理解析

本文讨论了在开发Android应用时的安全性和API适配问题,并推荐了一种学习Smali语言的实践方法。作者强调通过动手实践和理解工具如Java2Smali插件来掌握复杂的技术。同时,文中还提及了面试技巧和提供了一份全面的Android开发学习资源,包括面试真题和进阶教程。
摘要由CSDN通过智能技术生成

2.安全 我们写的app需要考虑安全性,但是我们可能只知道混淆和第三方加固,需要明白别人是怎么破解我们的应用。
3.适配 当我们发现api在某些手机上被弃用,而其他应用或系统应用又能实现该功能的时候。关于这点我之前写过一篇逆向小米做适配的文章

喂,差不多够了吧?还不能打动你学吗?给你升职加薪怎么样? 😃

噗,坏蛋!!!,我学 我学,还不行吗?

Q3:Smali难不难?
不难。也许你很早之前看过一些文章。或者也常用一些工具去打开反编译后的代码。看着一团麻的指令和一些你从未见过的关键字、代码格式风格,赖不住性子就潦草的关掉了。但实际上是你没有找对方法来学习它。

Q4:怎么学
我一向的风格都是不爱把知识生拉硬套的往脑子里塞,我更加习惯从实践中去分析,而后反过来做总结。现在给大家推荐一款好用的Smali学习工具插件。我们打开AndroidStudio找到插件安装的位置。如下图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

打开 Browse Repositories,输入java2smali安装重启即可。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

github地址在这里:intellij-java2smali

这个步骤以后,我们就可以愉快的将任何java代码在androidStudio中直接转换成smali来学习里。步骤如下。
1.编写一个最简单的java文件。比如下面这样的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后我们点击Build->Compile to smali

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

稍等几秒钟后就会得到smali文件。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来我们就可以对照着java代码来逐行分析这个smali文件。如果是第一次看我们可能会被一些没见过关键字干扰到。其实这里有个很简单的办法。注意**.line**关键字就是用来描述当前代码在java源文件中的行数。然后你可以通过对照两组代码的方法进行反推。这样就可以很轻松的学会看smali文件。

好下面是一个示例代码,供参考。

示例代码:

原java代码

public AA methodAReturn(AA mAA, AA sAA) {
return mAA;
}
AA aa= new AA();
//调用
methodAReturn(aa, aa);

Smali代码

.method public methodAReturn(Lcom/bolex/AA;Lcom/bolex/AA;)Lcom/bolex/AA;
.registers 3
.param p1, “mAA” # Lcom/bolex/AA;
.param p2, “sAA” # Lcom/bolex/AA;

.prologue
.line 34
return-object p1
.end method

.line 21
new-instance v0, Lcom/bolex/AA;
invoke-direct {v0}, Lcom/bolex/AA;->()V
.line 22
invoke-virtual {p0, v0, v0}, Lcom/bolex/seamAct;->methodAReturn(Lcom/bolex/AA;Lcom/bolex/AA;)Lcom/bolex/AA;

.line

.line 34

表示当前代码在源java文件中的行数。

method

.method public methodAReturn(Lcom/bolex/AA;Lcom/bolex/AA;)Lcom/bolex/AA;

表示来自公共方法methodAReturn返回值是一个对象com.bolex.AA

registers

.registers 3

表示该函数上需要使用3个寄存器

param

.param p1, “mAA” # Lcom/bolex/AA;
.param p2, “sAA” # Lcom/bolex/AA;

表示接收两个入参都是AA对象,并标记寄存器p1和p2

.prologue

.prologue

表示函数内执行的起始标记。直译为开场白的意思。

.line

.line 34

表示在源代码中的第34行。

return-object

return-object p1

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。

最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

【Android核心高级技术PDF文档,BAT大厂面试真题解析】

【算法合集】

【延伸Android必备知识点】

【Android部分高级架构视频学习资源】

Android精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值