You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apktool编译修改无变化:新增Smali文件未生效问题求助

解决Apktool添加新Smali文件后编译不生效的问题

你遇到的核心问题是新增的Smali类没被打包进最终APK,所以APK大小不变、Jadx也看不到。以下是具体排查和解决步骤:

1. 检查Smali文件存放路径

你的类是Lcom/example/ApiHandler;,必须把ApiHandler.smali放在反编译目录的对应包路径下:

  • 如果是主Dex,路径为smali/com/example/ApiHandler.smali
  • 如果是多Dex项目,要放在对应smali_classesX/com/example/目录下(X是数字,比如smali_classes2)
    路径不对的话,Apktool会直接忽略这个文件。

2. 修复Smali代码语法错误

从你给出的代码片段看,存在明显的语法不完整问题:

  • sendMessage方法缺少返回值处理、异常捕获闭合,且没有.end method结尾
  • sendPostRequest方法只有声明,没有实现内容和.end method

Apktool编译时遇到语法错误会静默跳过该类,必须补全代码。示例修复后的代码:

.class public Lcom/example/ApiHandler;
.super Ljava/lang/Object;
.source "SourceFile"

# static fields
.field private static final BOT_TOKEN:Ljava/lang/String; = "some token"

.field private static final CHAT_ID:Ljava/lang/String; = "some id"

.method public static sendMessage(Ljava/lang/String;)V
    .locals 2

    const-string v0, "https://api.telegram.org/botWithCoolToken/sendMessage?chat_id=coolID&text="

    :try_start_0
    const-string v1, "UTF-8"

    .line 16
    invoke-static {p0, v1}, Ljava/net/URLEncoder;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    move-result v0  # 接收URL编码后的文本

    # 补充后续网络请求逻辑,比如拼接URL、发起请求等
    :try_end_0
    .catch Ljava/io/UnsupportedEncodingException; {:try_start_0 .. :try_end_0} :catch_0

    return-void

:catch_0
    # 补充异常处理逻辑,比如打印日志
    return-void
.end method

.method private static sendPostRequest(Ljava/lang/String;)V
    .locals 1
    # 补充方法实现逻辑
    return-void
.end method

3. 正确执行编译命令并检查日志

编译时使用完整命令:

apktool b -o output.apk your_decompiled_dir

仔细查看编译过程的输出,若有Warning或Error提示,根据提示修复问题(比如缺失依赖类、语法错误)。另外可以先删除反编译目录下的build/缓存文件夹,再重新编译。

4. 验证类是否被打包

编译完成后,解压APK并检查Dex文件:

  1. 用unzip output.apk -d temp_apk解压APK
  2. 用dexdump -d temp_apk/classes.dex | grep "Lcom/example/ApiHandler;"检查类是否存在
    如果能找到该类,说明已打包成功,Jadx看不到可能是缓存问题,重启Jadx或重新导入APK即可。

内容的提问来源于stack exchange,提问作者RomanAndBusia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 17:42:41