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

Android项目中如何在Kotlin里读取其他目录的APK文件?

获取APK文件路径的Kotlin实现

针对你的场景,分两种常见情况处理:

1. 本地单元测试(运行在本地JVM)

和你在Node.js中用process.cwd()的逻辑完全一致,Kotlin可以通过System.getProperty("user.dir")获取项目根目录,再拼接APK的相对路径:

class TestUtils {
    // 获取项目根目录,对应Node.js的process.cwd()
    private val projectRoot = System.getProperty("user.dir")
    // 拼接APK完整路径
    val apkFile = File("$projectRoot/app/build/outputs/apk/debug/name-app-debug.apk")
}

这个方式和你熟悉的Node.js逻辑对齐,只要项目目录结构不变,路径就会保持正确,适合本地运行的单元测试场景。

2. 仪器化测试(运行在真机/模拟器)

如果你的TestUtils.kt是放在androidTest目录下的仪器化测试代码,设备上无法直接访问电脑的build目录,需要额外处理:

  • 先通过Gradle任务将APK复制到测试模块的assets目录
  • 然后在测试代码中通过AssetManager读取文件:
class TestUtils {
    fun getApkFile(context: Context): File {
        val assetManager = context.assets
        val inputStream = assetManager.open("name-app-debug.apk")
        // 将assets中的文件复制到设备本地存储
        val outputFile = File(context.cacheDir, "name-app-debug.apk")
        inputStream.copyTo(FileOutputStream(outputFile))
        return outputFile
    }
}

对应的Gradle配置(在app模块的build.gradle.kts中添加):

tasks.register<Copy>("copyApkToTestAssets") {
    from("build/outputs/apk/debug/name-app-debug.apk")
    into("src/androidTest/assets")
}
// 让测试任务依赖这个复制任务
tasks.named("connectedAndroidTest") {
    dependsOn("copyApkToTestAssets")
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:05:19