为 arm/arm64 构建 android sdk 工具(aapt、adb 等)

Jon*_*Jon 0 android android-source

我目前对为 ARM-v7a 和 ARM64-v8a 架构构建 Android SDK 工具(aapt、adb 等)感兴趣,以便它可以直接在 Android 设备上运行。这可能吗?

我能够按照文档轻松地为 x86/x86_64 构建 Android SDK 工具。

https://source.android.com/setup

为此,我执行了以下步骤。

  mkdir ~/WORKING_DIRECTORY
  cd ~/WORKING_DIRECTORY

  repo init -u https://android.googlesource.com/platform/manifest -b master -g all,-notdefault,tools
  repo sync

  . build/envsetup.sh
  lunch sdk-eng
  make sdk
Run Code Online (Sandbox Code Playgroud)

如上所述,这将为 x86/x86_64 构建 android SDK 工具。我只是不确定如何为其他架构构建工具。

我知道您可以为 make 目标指定所需的架构。例如,“make aosp_arm-eng”将为 arm 环境构建映像。但是,当我尝试“make sdk_arm-eng”时,它告诉我目标不存在。

任何帮助将不胜感激。

编辑:

看起来 Debian 在这里有用于 aapt 和其他 android 工具的 arm/arm64 包。

https://packages.debian.org/buster/aapt

但是,由于依赖关系,这些似乎无法在实际的 android 设备上运行。

/android-sdk/ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-readelf -a aapt | grep Shared

  Type:                              DYN (Shared object file)
 0x0000000000000001 (NEEDED)             Shared library: [libaapt.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libutils.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [ld-linux-aarch64.so.1]
Run Code Online (Sandbox Code Playgroud)

正如我们在下面看到的,它需要 libgcc libstc++,它没有与 android 一起打包。

Jon*_*Jon 7

我最终只是从 AOSP 源代码中自己构建了 aapt。这比我最初想象的要容易得多。为此,我修改了构建脚本,为“目标”架构而不是“主机”架构构建二进制文件。

https://android.googlesource.com/platform/frameworks/base/+/master-soong/tools/aapt/Android.bp

内置的二进制文件在这里,以防其他人需要它们。

https://github.com/thejunkjon/android-tools

  • 嗨@RamAshishPal,我上传了补丁文件以进行更改。希望这可以帮助。https://github.com/thejunkjon/android-tools/blob/master/patch/android-9.0.0_r33/frameworks/base/%2B/tools/aapt/Android.bp.patch (2认同)