我开始研究从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个主要问题:
我在此文件中看到一些* .mk,*。mk.swp和* .so文件,可以吗?该文件应该在那里吗?
在我的文件路径中,我使用斜杠“ \”,但是在互联网的某些示例中,我看到了此斜杠“ /”,哪个是正确的?真的有关系吗?
我可以在此文件中看到两个主要部分:
LOCAL_SRC_FILES
LOCAL_C_INCLUDES
是否应该在两个部分中都将路径添加到“ ip.c”和“ native.c”文件中?还是只有其中之一?
例如,这是“ 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)
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)
答案 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 中列出。