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

Android编译后移除依赖:如何不将依赖打包进APK?

在Android Studio中实现编译依赖但不打包进APK的方案

核心思路

你需要将目标依赖设置为仅编译时有效——让Gradle在编译阶段识别该类以通过编译检查,但打包APK时自动排除该依赖,这样运行时缺少类时就能触发你预设的异常捕获逻辑。

具体实现步骤

1. 配置Gradle的compileOnly依赖

根据你拥有的依赖类型,选择对应的配置方式:

  • Jar包依赖:

    1. 将Jar包放入项目的app/libs目录
    2. 在模块的build.gradle(Groovy)或build.gradle.kts(Kotlin DSL)中添加:
    // Groovy语法
    dependencies {
        compileOnly files('libs/xposed-bridge.jar')
    }
    
    // Kotlin DSL语法
    dependencies {
        compileOnly(files("libs/xposed-bridge.jar"))
    }
    
  • 单个.class文件:
    将.class文件放到src/main/java下对应包路径(比如src/main/java/de/robv/android/xposed/),或者先把它打包成Jar再按上面的Jar包方式配置,后者更便于维护。

  • Maven仓库依赖(若可用):
    如果该类在Maven仓库有发布,直接添加:

    dependencies {
        compileOnly 'de.robv.android.xposed:api:82'
    }
    

2. 验证结果

  • 构建APK后,用解压工具打开APK,检查classes.dex中是否不存在de.robv.android.xposed.XposedBridge类
  • 在无Xposed环境的设备上运行应用,触发testUseClassDirectly方法,确认会正常捕获异常并返回false

关键说明

compileOnly是Gradle专为这类场景设计的配置:它仅在编译阶段提供类的引用以通过语法检查,完全不会将依赖打包到最终的APK或AAB中,完美匹配你需要的“编译依赖、运行不打包”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:42:41