android - 区分NDK构建和Android构建

标签 android c android-ndk c-preprocessor

我有一个我构建的 native 库,需要在 Android 构建中构建,但也可以使用 NDK 构建。 如何使用预处理器区分 NDK 构建和 Android 构建。

#ifdef __ANDROID__

#ifdef NDK ??? // does ndk export some symbols I can use here ?

foo();

#else // Android tree build

foo2();

#endig

#endif // __ANDROID__

最佳答案

我会使用平台构建环境变量之一来区分两个构建。那可能是 DEVICE_NAME , TARGET_DEVICE , PLATFORM_VERSION或超出我项目范围的任何其他定义。而且,根据该环境变量,我会在项目的 Android.mk 中定义一个标志:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := foo

ifeq ($(DEVICE_NAME),)
    # no device name is defined, got to be an NDK build
    LOCAL_CFLAGS := -DANDROID_NDK
endif

然后在 foobar.c

#ifdef ANDROID_NDK
    foo();
#else
    foo2();

关于android - 区分NDK构建和Android构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17144982/

相关文章:

android - cmake 失败与 android ndk

Android - 动态单选按钮问题

c - 如何将多个 *argv 组合成一个 char* 类型的消息

c - 将按钮的寄存器标记为已读

c++ - 在c(或c++)中使用rb_define_singleton_method

Android NDK 不会构建库,因为缺少 Bitmap.h?

android - 启用语言后 CMake 错误 : CMAKE_C_COMPILER not set,

android - 不同语言的字体资源

android - 调用 Intent 过滤器

android - 禁用时 ActionBar 中的半透明图标 : only on my phone?