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

如何在定制Android编译版本中集成AWS客户端

定制Android系统集成AWS CLI编译方案

AWS CLI v2基于Python实现,无法直接按原生C/C++项目规则编译,需要依托AOSP的Python编译规则完成集成,步骤如下:

前置准备

  • 将获取到的AWS CLI源码放置到AOSP源码树的external/aws-cli/目录,这是AOSP约定的第三方外部组件存放路径
  • 确认你的AOSP版本已预置Python 3.8+运行时,AWS CLI v2最低要求该Python版本,若未预置需要先完成Python 3的系统分区适配
  • 提前准备好AWS CLI的所有Python依赖库:botocore、s3transfer、pyyaml、urllib3、six、python-dateutil、jmespath,同样放到external对应目录,后续统一纳入编译

编译配置编写

Android 10及以上版本(使用Soong构建系统,配置文件为Android.bp)

在external/aws-cli/目录下新建Android.bp文件,内容如下:

// AWS CLI核心Python库模块
python_library {
    name: "aws-cli-core",
    srcs: ["awscli/**/*.py", "bin/*"],
    version: "2.15.0", // 替换为你实际拉取的AWS CLI版本号
    installable: true,
    libs: [
        "python3",
        "py-botocore",
        "py-s3transfer",
        "py-pyyaml",
        "py-urllib3",
        "py-six",
        "py-python-dateutil",
        "py-jmespath",
    ],
}

// 系统可执行入口,对应/system/bin/aws命令
python_binary_host {
    name: "aws",
    srcs: ["bin/aws"],
    main: "bin/aws",
    libs: ["aws-cli-core"],
    required: ["python3"],
    relative_install_path: "bin",
}

如果依赖的Python库使用预编译whl包,可以通过python_prebuilt_library规则引入,不需要单独从源码编译:

python_prebuilt_library {
    name: "py-botocore",
    whl: "prebuilt/botocore-1.35.0-py3-none-any.whl",
}

Android 9及更早版本(使用Make构建系统,配置文件为Android.mk)

在external/aws-cli/目录下新建Android.mk文件,内容如下:

LOCAL_PATH := $(call my-dir)

# 编译AWS CLI核心Python库
include $(CLEAR_VARS)
LOCAL_MODULE := aws-cli-core
LOCAL_SRC_FILES := $(call all-subdir-python-files, awscli)
LOCAL_MODULE_CLASS := PYTHON_LIBRARIES
LOCAL_REQUIRED_MODULES := python3 py-botocore py-s3transfer pyyaml urllib3 six python-dateutil jmespath
include $(BUILD_PYTHON_LIBRARY)

# 编译aws可执行命令到系统bin目录
include $(CLEAR_VARS)
LOCAL_MODULE := aws
LOCAL_SRC_FILES := bin/aws
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_REQUIRED_MODULES := aws-cli-core python3
LOCAL_MODULE_PATH := $(TARGET_OUT)/bin
include $(BUILD_PYTHON_BINARY)

配套适配

  • 配置SELinux规则:给shell域添加执行aws命令、访问网络、读写对应存储路径的权限,否则运行时会被SELinux拦截报错
  • 补全Python依赖:如果运行时提示Python标准库缺失(如ctypes、sqlite3等),需要调整Python3的编译配置,打开对应标准库的编译开关重新编译Python组件
  • 不要直接使用Linux平台预编译的AWS CLI二进制:这类二进制依赖glibc,和Android系统的bionic libc不兼容,必然运行失败

编译验证

  • 在AOSP根目录执行source build/envsetup.sh,lunch选择对应的目标产品
  • 执行mmm external/aws-cli/单独编译AWS CLI模块,确认无编译报错
  • 将编译生成的系统镜像刷入设备,或通过adb push将编译产物推送到设备对应分区,进入shell执行aws --version,正常输出版本信息即代表集成成功

注意:如果你的定制系统对系统分区大小有严格限制,可以考虑将AWS CLI安装到product分区,修改对应配置里的安装路径即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:09:29