利用APKTool反编译apk
下载ApkTool
然后用jar包来反编译
反编译NDKDemo,默认创建的NDK
java -jar apktool_2.6.1.jar d xxxxxx.apk -o output_dir
在这个放jar包的地方输入自己的apk名字然后-o 输出到output_dir里面。output_dir会自己建的。
java2smali
将java语言转为smali的方法。
idea也有插件
构建的地方可以转过去
现在不会写smali所以看着书写。
在
move-result-object v0后面加上
const/4 v1,0x1
invoke-static {p0,v0,v1},
Landroid/widgt/Toast; ->makeText ( Landroid/content/Context; Ljava/lang/CharSequence;I)
Landroid/widgt/Toast;
move-result-object v1
invoke-virtual {v1}, Landroid/widget/Toast; ->show()V
以及在onCreate更改局部变量
# virtual methods
.method protected onCreate(Landroid/os/Bundle;)V
.locals 2
就可以在一开始创建的NDKDemo里创建Toast了
//一开始不严谨报错了几次,看了其他的代码改好了。如果出错apktool还会指出来在第几行非常好用
重新编译指令
java -jar apktool_2.6.1.jar b output_dir -o hello_world_unsigned.apk
然后创建jks文件 在Android Studio中的Build里可以Generate Signed APK
详情
java -jar apksigner.jar sign -verbose --ks 111.jks --v1-signing-enabled true --v2-signing-enabled true --ks-pass pass:(密码) --ks-key-alias key0 --out hello_world_signed.apk hello_world_unsigned.apk
然后就可以了
但是打不开不知道为什么。难道是虚拟机的事?