求助:这段smali代码转Java的翻译是否合理,错漏请指正
你的转译存在以下几处错误:
- 返回值类型错误:smali中返回值签名
Z对应Java基础类型boolean,不是包装类Boolean - 遗漏核心逻辑:smali中
invoke-direct {p0}, Lcom/battlebot/dday/SplashActivity;->init()V是调用当前实例的私有init()方法,对应Java代码this.init(),你完全遗漏了这行逻辑 - 变量重复定义错误:smali里
.locals 1代表整个方法仅分配1个局部寄存器v0,寄存器是可复用存储的,你直接转成两个同名变量v0的定义,违反Java同作用域不可重复定义同名变量的规则,会直接编译报错 - 缺失return语句:方法声明了返回值,你最后没有写return逻辑,同时smali中
const/4 v0, 0x1结合返回值为Z类型,是返回布尔值true,不是赋值int类型的1 - 多余修饰符:smali代码没有标注该字符串变量为final,你额外加的
final属于无依据的多余修饰
正确的转译结果:
public boolean Start() { String v0 = "ABC"; System.loadLibrary(v0); this.init(); return true; }
内容的提问来源于stack exchange,提问作者Mtoklitz113
相关产品推荐
相关产品推荐

