我正在尝试从sources构建android adb工具。由于显示了文件Android.mk,因此我正在运行ndk-build工具进行构建。但不幸的是,我遇到以下错误:

/Users/user/Documents/dev/tmp/adb/jni/Android.mk:95: /softdev/android-ndk-r10c/build/core/build-host-static-library.mk: No such file or directory
/Users/user/Documents/dev/tmp/adb/jni/Android.mk:183: /softdev/android-ndk-r10c/build/core/build-host-executable.mk: No such file or directory
Android NDK: Trying to define local module 'adbd' in /Users/user/Documents/dev/tmp/adb/jni/Android.mk.
Android NDK: But this module was already defined by /Users/user/Documents/dev/tmp/adb/jni/Android.mk.
/softdev/android-ndk-r10c/build/core/build-module.mk:34: *** Android NDK: Aborting.    .  Stop.


由于某些原因,我检查了文件(build-host-*-*.mk)的缺失。我已经在某人的git repo中找到了它们,但这是用于Windows的。将build-host-*-*.mk复制到本地ndk文件夹后,出现另一个错误:

Android NDK: /Users/user/Documents/dev/tmp/adb/jni/Android.mk:adb: Unknown LOCAL_MODULE_CLASS value: HOST_STATIC_LIBRARY
/softdev/android-ndk-r10c/build/core/build-module.mk:29: *** Android NDK: Aborting    .  Stop.


因此,仅复制该文件似乎还不够。我该如何建造它?

最佳答案

adb是一个主机工具(在您的PC上而不是在Android设备上运行),并且NDK不支持构建主机可执行文件。它确实提供了一些存根,但从未完全实现该功能。

您链接到的git repo不是官方的NDK r7b,而是添加了主机目标支持的修补版本。这不仅包括单个文件,还包括完整的diff here

您将需要将此补丁应用(或将所有已修改的脚本复制)到本地NDK设置。如果您正在运行R7b以外的NDK版本,则可能需要进行一些其他修改。

另请参阅我的question,我基本上遇到了相同的问题。

关于android - 如何使用Android NDK构建主机静态库?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29912804/

10-13 03:41