smali如何修改?

smali如何修改?,第1张

smali文件对比java文件:

.class:类名

.super:父类

.source:源文件名

.implements:继承的接口

.field:类成员变量

.method:类液猜脊方法

.parameter :函数参数 p1,p2...

.locals x:局部变量(个数)

const/16 v0, 0x64:int v0 = 0x64

const/high16 v0, 0x7f03:高16赋值

const-wide v0, 0x4024051eb851eb85L

const-string v0, "1111":字符串

add-int v0, p0, p1:v0 = p0 + p1(static函数参数 从p0 开始)

sub-int v0, p1, p2:v0 = p1 + p2(普通成员函数参数从 p1 开始)

mul-int v0, p1, p2:v0 = p1 * p2

div-int v0, p1, p2:v0 = p1 / p2

add-int/2addr v0, v1:v0+v1放到 v0所在的地址

sub-int/2addr v0, p2:v0-p2放到 v0所在的地址

if-ne:if(x != y)

iput-object v0, p0, Lcom/xyz/smali/SmaliActivity->string:Ljava/lang/String :成员变量 v0 = string

iget-object v0, p0, Lcom/xyz/smali/SmaliActivity->mBtn:Landroid/widget/闹渗Button:关联成员变量

sput v0, Lcom/xyz/smali/SmaliActivity->OK:I:sput 给static变量赋值

sput-wide v0, Lcom/xyz/smali/SmaliActivity->dou:D:sput-wide 给static的宽字节变量赋值

sput-object v0, Lcom/xyz/smali/兆数SmaliActivity->sss:Ljava/lang/String

sget v1, Lcom/xyz/smali/SmaliActivity->OK:I:关联static变量

invoke-super {p0, p1}, Landroid/app/Activity->onCreate(Landroid/os/Bundle)V: this.super.onCreate()

invoke-static {p1, p2}, Lcom/xyz/smali/SmaliActivity->add(II)I:调用静态函数 add(p1, p2)

invoke-virtual {v0, p0}, Landroid/widget/Button->setOnClickListener(Landroid/view/View$OnClickListener)V:调用虚函数

move-result v0:前面调用函数后,把结果放到 v0

move-result-object v0:前面调用函数返回的对象给 v0

check-cast v0, Landroid/widget/Button :强制类型转换 mBtn = (Button) findViewById(R.id.btn)

return-void :return

先确定导航仪是否支持SD卡。如果是支持的,那么就找一个多功能读卡器,把SD卡插上去。然后接到电脑上读一下,先确定是SD卡的问题还是车载导航仪的问题。

将SD卡重新默认格式化一下(FAT32),再拷贝试下。

SD卡不干净,SD卡的金属区域会沾有尘埃或油污,造成卡槽接触不良,有时无法读取的状况。将SD卡金属区域擦干净试试。

卡槽金属丝生锈。现在的SD卡都支持热插拔,频繁的抽插SD卡会造成卡槽金属丝过度弯曲或生锈。仔细检查卡槽金属丝是不是弯曲或生锈,若是弯曲,用针将金属丝下挑若是生锈,清理即可。

如果是手机导航仪无法识别SD卡,大家可以试试下面的方法。以凯立德导航为列:

一、一般凯立德安装程序会按手机系统默认的存储位置寻找地图数据,如果找不到,就会按内置的一些绝对路径来寻找,假如这些绝对路径也不包含你的手机SD卡路径,那么就会出现“手机导航仪无法识别SD卡”这一问题。因此,很简单,我们要做的就是在安装程序的配置文件里添加你的手机SD卡存储绝对路径,让软件可以顺利找到地图数据。

二、修改安卓的APK文件。流程是:将原安装包反编译、修改保存、编译、签名打包。可以使用集成工具ApkTool。

三、先根据你的电脑系统选择下载并安装JAVA运行环境,解压上述工具到ApkTool文件夹,将需要修改的凯立德的apk文件复世没制到apktool文件夹下,并改名为123.apk,然后运行APKtool.cmd文件,选择1进行反编译,完成后会产生一个新的apk文件夹,对于凯立德v4.0,里面可以找到“smali\cld\navi\mainframe”文件夹,将其中的Navipath.smali文件用记事本打开,找到第一句路径语句

四、然后把你的手机SD卡路径覆盖上去锋拆就好了,保存这个文件。如图(注意:图中修改的路径是红米1s电信版手机,不同手机SD卡路径有不同):

对于凯立德v5.0,是修改smali\cld\custom里的AppConfig文件,方法类似。

五、怎样确定自己的手机SD卡绝对路径呢?如果你安装了微云,就很简单:打开微云,选择上传文件,就会出现选择路径,一个是内置存储路径,另一个是外置SD卡存储路径。下图示例为红米1移动版,/storage/sdcard0就是SD卡的绝对路径。而红米1s电信版的SD卡路径是:/storage/sdcard1。

六、再次运行APKTool.cmd,选择3将修改好的文件编译并签名成新的apk。完成后会在APK文件夹下新建一个Build文件夹,里面有编译并已签名的apk文件,这个就是适用于你的手机的凯立德导航安装包,使用它安装到你的手机后,就可以正常读取存在SD卡上的地图数据了。

总结:虽然上面的例子只是其中一类导航,但都可以适用于其他类型的,另外我们事先要排除SD卡本身是否有问题,再去考虑导航无法识别的问银返枣题,反正就是用排除法多试试。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12259536.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存