如何更新/订购“ Android.mk”文件?

时间:2018-06-20 10:50:05

标签: java android c++ android-ndk native

我开始研究从Eclipse导入的“ Android Studio”项目。在这个项目中,我有两个.c文件,这些文件使我遇到很多问题:

D:\ AndroidProjects \ AndroidApp \ SDK \ src \ main \ jni \ ip \ ip.c D:\ AndroidProjects \ AndroidApp \ SDK \ src \ main \ jni \ nativeinterface \ native.c

我正在更新此文件的代码,并且每进行几次编译(Build ---> Build Project),就会出现以下错误:

“此文件不是项目的一部分。请将该文件包含在适当的构建文件(build.gradle,CMakeLists.txt或Android.mk等)中,并同步项目”

我尝试执行Build --->“刷新链接的C ++项目”,有时可以,有时不能,并且如果可以,则稍后编译会返回错误。

我认为该问题与文件有关:

D:\ AndroidProjects \ AndroidApp \ SDK \ Android.mk

,您可以在下面看到。我对此有5个主要问题:

  1. 我在此文件中看到一些* .mk,*。mk.swp和* .so文件,可以吗?该文件应该在那里吗?

  2. 在我的文件路径中,我使用斜杠“ \”,但是在互联网的某些示例中,我看到了此斜杠“ /”,哪个是正确的?真的有关系吗?

  3. 我可以在此文件中看到两个主要部分:

LOCAL_SRC_FILES

LOCAL_C_INCLUDES

是否应该在两个部分中都将路径添加到“ ip.c”和“ native.c”文件中?还是只有其中之一?

  1. 在项目中,我看到了更多的“ Android.mk”文件(较短),它们是否也应该与主“ Android.mk”文件不同?

例如,这是“ ip.c”文件文件夹中的“ Android.mk”:


LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES:= \
     ip.c

LOCAL_LDLIBS := -llog

LOCAL_MODULE := ipAndroidApp

LOCAL_CFLAGS += -O3

include $(BUILD_SHARED_LIBRARY)

这是“ native.c”文件文件夹中的“ Android.mk”:


LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES := native.c
LOCAL_MODULE    := native

include $(BUILD_STATIC_LIBRARY)  

  1. LOCAL_C_INCLUDES部分以+=开头,可以吗?还是第一行必须以:=开头?

谢谢。

这是我的主要“ Android.mk”文件:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := app
LOCAL_LDFLAGS := -Wl,--build-id
LOCAL_SRC_FILES :=

    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\.Application.mk.swp \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\Android.mk \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\Application.mk \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\ip\Android.mk \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\ip\ip.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\ipd\Android.mk \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\ipn\Android.mk \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_orig\core.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_orig\descriptor.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_orig\io.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_orig\os\linux_usbfs.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_orig\os\threads_posix.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_orig\sync.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_orig\__Android.mk \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\Android.mk \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\core.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\core_original.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\descriptor.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\descriptor_original.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\hotplug.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\hotplug_original.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\io.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\io_original.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\libusb-1.0.def \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\libusb-1.0.rc \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\Makefile.am \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\os\android_netlink.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\os\android_usbfs.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\os\darwin_usb.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\os\linux_netlink.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\os\linux_udev.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\os\linux_usbfs.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\os\netbsd_usb.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\os\openbsd_usb.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\os\poll_posix.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\os\poll_posix_original.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\os\poll_windows.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\os\threads_posix.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\os\threads_windows.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\os\wince_usb.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\os\windows_usb.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\strerror.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\sync.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\libusb_saki4510t\libusb\sync_original.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\nativeinterface\Android.mk \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\nativeinterface\native.c \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\prebuilt\Android.mk \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\prebuilt\armeabi\libDropboxSync.so \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\prebuilt\armeabi\libipandroidapp.so \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\prebuilt\armeabi\libopentok.so \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\prebuilt\armeabi\librs.androidappsdk_ipd.so \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\prebuilt\armeabi\librs.androidappsdk_ipn.so \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\prebuilt\armeabi\librs.androidappsdk_rgb2yuv.so \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\prebuilt\armeabi\libusbandroidapp.so \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\prebuilt\armeabi-v7a\libDropboxSync.so \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\prebuilt\armeabi-v7a\libipandroidapp.so \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\prebuilt\armeabi-v7a\libopentok.so \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\prebuilt\armeabi-v7a\librs.androidappsdk_ipd.so \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\prebuilt\armeabi-v7a\librs.androidappsdk_ipn.so \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\prebuilt\armeabi-v7a\librs.androidappsdk_rgb2yuv.so \
    D:\AndroidProjects\AndroidApp\SDK\src\main\jni\prebuilt\armeabi-v7a\libusbandroidapp.so \

LOCAL_C_INCLUDES += D:\AndroidProjects\AndroidApp\SDK\src\main\jni

LOCAL_C_INCLUDES += D:\AndroidProjects\AndroidApp\SDK\src\release\jni

include $(BUILD_SHARED_LIBRARY)

1 个答案:

答案 0 :(得分:0)

惯例是将 .mk 文件中的begin()+size()用作路径分隔符。如果您曾经想在Linux上使用此项目,这将是真正的帮助。

对于您而言,/可能无关紧要,因为您的 jni 目录中没有C文件。

您应该清理'main' jni / Android.mk 文件。假设子目录中的 .mk 文件正确,则可以使用(LOCAL_C_INCLUDES)。例如,我希望 libusb / Android.mk public version on GitHub不太远,并且不要编译Windows特定的源代码,例如 wince_usb.c

这是一个合理的第一次迭代:

include

我无法确定您是否需要像 libDropboxSync.so 这样的预构建库以及其他库,但这些库在 jni / prebuilt / Android.mk 中列出。