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

如何在Mac终端基于Android.bp构建Android 12 DNSResolver APEX模块

如何在Mac终端基于Android.bp构建DNSResolver APEX模块

我已经下载了适用于Android 12的DNSResolver APEX模块,模块所需的密钥和清单文件都已准备妥当,对应的Android.bp文件内容如下:

package {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "packages_modules_DnsResolver_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["packages_modules_DnsResolver_license"],
}

apex {
    name: "com.android.resolv",
    updatable: true,
    manifest: "manifest.json",
    multilib: {
        first: {
             native_shared_libs: ["libnetd_resolv"],
        },
    },
    key: "com.android.resolv.key",
    certificate: ":com.android.resolv.certificate",

    // Use a custom AndroidManifest.xml used for API targeting.
    androidManifest: "AndroidManifest.xml",

    // Indicates that pre-installed version of this apex can be compressed.
    // Whether it actually will be compressed is controlled on per-device basis.
    compressible: true,

    // IMPORTANT: For the APEX to be installed on Android 10,
    // min_sdk_version should be 29. This enables the build system to make
    // sure the package compatible to Android 10 in two ways:
    // - build the APEX package compatible to Android 10
    //   so that the package can be installed.
    // - build artifacts (lib/javalib/bin) against Android 10 SDK
    //   so that the artifacts can run.
    min_sdk_version: "29",
}

apex_key {
    name: "com.android.resolv.key",
    public_key: "com.android.resolv.avbpubkey",
    private_key: "com.android.resolv.pem",
}

android_app_certificate {
     name: "com.android.resolv.certificate",
     // will use cert.pk8 and cert.x509.pem
     certificate: "testcert",
}

根据官方文档,只需基于这个Android.bp文件构建*.apex二进制文件,但我不清楚具体执行的命令;我知道需要Soong工具来解析并构建Android.bp文件,但不知道如何在Mac终端操作,网上也没找到相关方案。


解决步骤

1. 搭建Android源码构建环境

Soong是Android构建系统的核心组件,无法单独运行,必须依赖完整的Android源码环境:

  • 安装依赖:先安装Xcode Command Line Tools,再通过Homebrew安装repo、git、python3、openjdk-11(Android 12构建需要JDK 11)
  • 同步Android 12源码:使用repo init初始化源码仓库并指定Android 12分支,然后执行repo sync同步代码。如果已经单独下载了DNSResolver模块,将其放到源码路径的packages/modules/DnsResolver目录下即可。

2. 初始化构建环境

进入Android源码根目录,执行以下命令配置构建环境:

source build/envsetup.sh
lunch

执行lunch后,选择一个Android 12的目标设备(比如aosp_x86_64-eng,eng版本适合开发构建场景)。

3. 构建APEX模块

直接执行以下命令触发构建:

m com.android.resolv

或者使用等效的make命令:

make com.android.resolv

这两个命令都会调用Soong解析Android.bp并完成整个模块的编译、打包与签名流程。

4. 获取构建产物

构建完成后,生成的APEX文件可以在以下路径找到:

  • 主产物路径:out/target/product/<你的设备名称>/system/apex/com.android.resolv.apex
  • 中间产物路径:out/soong/.intermediates/packages/modules/DnsResolver/com.android.resolv/apex

注意事项

  • 确保模块的所有配套文件(密钥文件com.android.resolv.avbpubkey、com.android.resolv.pem,证书文件cert.pk8、cert.x509.pem,以及manifest.json、AndroidManifest.xml)都和Android.bp放在同一目录下。
  • 不建议尝试单独使用Soong构建,因为需要手动处理大量系统依赖,效率极低,完整源码环境是最可靠的构建方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:17:49