您的位置:首页 > 移动开发 > Android开发

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

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

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐