android 反编译打包出现java.lang.VerifyError错误的原因和解决

来源:互联网 发布:此网络受法律保护 编辑:程序博客网 时间:2024/06/05 20:33

在安卓开发中经常要用到逆向工程,所以需要反编译修改代码然后再重新打包。有时候会出现如下错误

java.lang.VerifyError: Rejecting class com.samsung.android.sdk.cup.Scup because it failed compile-time verification (declaration of 'com.samsung.android.sdk.cup.Scup' appears in


出现这种错误的原因是在smail文件中修改代码的时候把代码改错了,造成了语法不正确。

比如以下代码


 .line 282
    .local v9, "in":Ljava/io/InputStream;
    :try_start_0
    i
nvoke-virtual/range {p0 .. p0}, Lcom/example/shuowandemo/MainActivity;->getAssets()Landroid/content/res/AssetManager;


    move-result-object v15


    const-string v16, "db.jpg"


    invoke-virtual/range {v15 .. v16}, Landroid/content/res/AssetManager;->open(Ljava/lang/String;)Ljava/io/InputStream;


    move-result-object v9


    .line 283
    new-instance v13, Landroid/graphics/BitmapFactory$Options;


如果你想删掉上面红色部分的代码,那么你不能单单删除这部分代码。因为他的调用结果传给了v15,而且v15又在

invoke-virtual/range {v15 .. v16}, Landroid/content/res/AssetManager;->open(Ljava/lang/String;)Ljava/io/InputStream;

中被调用。所以要删除掉下面一大段


invoke-virtual/range {p0 .. p0}, Lcom/example/shuowandemo/MainActivity;->getAssets()Landroid/content/res/AssetManager;


    move-result-object v15


    const-string v16, "db.jpg"


    invoke-virtual/range {v15 .. v16}, Landroid/content/res/AssetManager;->open(Ljava/lang/String;)Ljava/io/InputStream;


    move-result-object v9

原创粉丝点击