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