Android ndk 如何在使用NDK时添加自定义宏?

Android ndk 如何在使用NDK时添加自定义宏?,android-ndk,Android Ndk,我需要一些自定义宏在我的NDK项目 然而,我没有理想的添加方法,也没有找到答案 有人能帮忙吗? 非常感谢 如果你理解正确,你就需要看看它是如何工作的 你有编写C/C++程序的经验吗?首先,对于应用程序的哪些部分是用本机代码编写的,您应该非常挑剔。此外,您需要记住,当涉及到内存分配等问题时,本机代码的行为将完全不同,因此这真的不是猜测的地方 花些时间了解C/C++,明智地设计应用程序,以便清楚地定义要用本机代码编写的部分,并且不会增加应用程序崩溃的机会。我猜大多数项目都可以不使用本机应用程序部分,

我需要一些自定义宏在我的NDK项目 然而,我没有理想的添加方法,也没有找到答案 有人能帮忙吗?
非常感谢

如果你理解正确,你就需要看看它是如何工作的

你有编写C/C++程序的经验吗?首先,对于应用程序的哪些部分是用本机代码编写的,您应该非常挑剔。此外,您需要记住,当涉及到内存分配等问题时,本机代码的行为将完全不同,因此这真的不是猜测的地方


花些时间了解C/C++,明智地设计应用程序,以便清楚地定义要用本机代码编写的部分,并且不会增加应用程序崩溃的机会。我猜大多数项目都可以不使用本机应用程序部分,因此如果您正在使用它,并且不知道自己在做什么,您应该真正重新评估这样做是否正确。

如果您想在编译NDK代码(jni)时添加特殊定义,请将以下内容添加到您的Android.mk中:

LOCAL_CFLAGS    := -DMYDEFINE
这将在c/c++代码中定义宏MYDEFINE。这里有一个例子

#ifdef MYDEFINE
// We build the project with this special macro
#else
// We build without setting the macro in the LOCAL_CFLAGS
#endif

如果你说的是android makefile宏,比如

$(呼叫我的目录)

它与GNU makefile语法完全相同

例如:

反向=$(2)$(1)

foo=$(反向调用,a,b)

$(警告$(foo))

结果:

b a

要定义marcro:

LOCAL_CFLAGS += -DYOUR_MACRO
要使用值定义宏,请执行以下操作:

LOCAL_CFLAGS += -DYOUR_MACRO='"string"'


就个人而言,我建议使用+=而不是:=以避免
本地\u CFLAGS
被覆盖。

我正在进行迁移,我是android的新手,谢谢你的建议!同意。我想补充一点,如果有人决定为Android应用程序混合Java和本机代码,请尽量减少跨越JNI边界。也就是说:尽量减少JNI调用,因为它们相对昂贵。IMHO,任何人发现自己处于高频JNI呼叫无法避免的情况下,应该认真考虑只使用java。如果不是出于性能原因,那么至少是为了防止JNI引起的头痛。很高兴它起了作用:P所以你可能会接受答案hehe:请从我的错误中吸取教训:不要错过
-DMYDEFINE
中的
D
LOCAL_CFLAGS += -DYOUR_MACRO=123