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

Android Studio 3.1构建定制AOSP插桩测试APK遇阻求助

解决方案:Android M AOSP定制项目的插桩测试构建问题

我之前在定制Android M(API 23)的AOSP项目时,也碰到过Gradle和JDK版本不兼容的坑,下面针对你的三个问题逐一给出可行方案:

a)Gradle方案:修复JDK版本冲突与「未知属性」错误

这个问题核心是Android Gradle Plugin(AGP)版本、JDK版本和API 23的兼容性不匹配:AS 3.1+默认的AGP 3.x系列要求JDK 8,但Android M的AOSP构建依赖JDK 1.7,直接设置sourceCompatibility会因为AGP版本过高而报错。可以按以下步骤修复:

  • 降级AGP到兼容版本:在项目根目录的build.gradle中,将AGP版本改为支持JDK 7的2.x系列,比如:
    buildscript {
        repositories {
            google()
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.3.3' // 完美兼容API 23和JDK 7
        }
    }
    
  • 明确配置JDK与编译参数:在模块的build.gradle中,指定正确的编译参数:
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.3" // 匹配API 23的build tools版本
    
        defaultConfig {
            applicationId "your.package.name"
            minSdkVersion 23
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
        }
    
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_7
            targetCompatibility JavaVersion.VERSION_1_7
        }
    }
    
  • 指定AS使用JDK 7:打开File > Project Structure > SDK Location,将JDK location手动指向你本地安装的JDK 1.7路径,不要用AS默认的JDK 8。
  • 清理冲突依赖:如果项目中有Kotlin或其他第三方插件,要降级到支持JDK 7的版本(比如Kotlin 1.2.x及以下),避免强制拉取JDK 8依赖。

完成以上配置后重新同步Gradle,「未知属性」的错误应该就能解决了。

b)Gradle不可行时:使用AOSP原生Makefile构建测试APK

如果Gradle的兼容性问题实在无法解决(比如定制的AOSP模块有大量原生依赖,Gradle难以适配),完全可以用AOSP自带的Makefile构建测试APK——这是AOSP项目的原生构建方式,适配性更强:

  • 进入AOSP源码根目录,先执行环境初始化:
    source build/envsetup.sh
    lunch your_target_product # 示例:lunch aosp_arm64-userdebug
    
  • 构建单个测试模块:如果测试APK对应独立模块,进入模块目录后执行:
    mm
    
    或者在根目录指定模块路径:
    mmm path/to/your/test/module
    
  • 构建所有测试包:如果需要批量构建所有测试APK,执行:
    make test-packages
    

构建完成的APK会输出在out/target/product/[your_device]/system/app/或out/target/product/[your_device]/data/app/目录下。

c)Makefile构建后:依然支持插桩测试功能

用Makefile构建的测试APK完全可以正常使用插桩功能,AOSP的Instrumentation测试本身就支持原生构建后的执行,有两种常用方式:

  1. 通过ADB手动运行:
    • 先安装主APK和测试APK:
      adb install out/target/product/[your_device]/data/app/YourMainApp/YourMainApp.apk
      adb install out/target/product/[your_device]/data/app/YourTestApp/YourTestApp.apk
      
    • 执行插桩测试:
      adb shell am instrument -w your.test.package/android.support.test.runner.AndroidJUnitRunner
      
  2. 在Android Studio中运行:
    • 确保AS已连接到运行定制AOSP的设备/模拟器;
    • 打开Run > Edit Configurations,添加「Android Instrumented Tests」配置,指定测试包路径;
    • 直接点击运行按钮,AS会识别已安装的测试APK并执行插桩测试。

如果是系统级插桩测试,还可以用AOSP自带的cts或vts框架,通过make cts构建后运行,同样支持插桩逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:34:50