【问题标题】:NDK can't find the application directoryNDK 找不到应用目录
【发布时间】:2012-12-18 20:37:27
【问题描述】:

运行 ndk-build 命令时出现以下错误:

Android NDK: Could not find application project directory !    
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.

我的 Android.mk 文件的内容:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := FRE
LOCAL_SRC_FILES := FlashRuntimeExtensions.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := NativeQCAR
LOCAL_SRC_FILES := main.c
LOCAL_SHARED_LIBRARIES := FRE
include $(BUILD_SHARED_LIBRARY)

添加以下行没有帮助:

NDK_PROJECT_PATH = C:/Users/Wessel/Dropbox/workspace/eclipse/NativeQ

【问题讨论】:

  • 遇到同样的问题,只需将export ANDROID_NDK_HOME=[PATH TO MY NDK FOLDER] 添加到我的.bash_profile。之后我可以从我的项目文件夹中运行命令。
  • 要使用 ndk-build 构建源代码,那么您的源代码必须在 jni 文件夹下,因为 ndk-build 默认设置为 $LOCAL_PATH/jni 是 NDK_PROJECT_PATH。如果你想改变 NDK_PROJECT_PATH,以 ndk-build NDK_PROJECT_PATH= $(pwd) 为例。

标签: android-ndk makefile


【解决方案1】:

您可以使用以下命令

ndk-build -C your_project_path

希望这能回答你的问题。

【讨论】:

  • @SergBurlaka 文件夹有“Application.mk”。
  • 你应该是 ndk-build 的路径,我认为文件夹并不重要。
  • 我喜欢这种方法。这个对我有用。至少它减少了创建 NDK_PROJECT_PATH 环境变量的一步。
【解决方案2】:

NDK_PROJECT_PATH 是一个环境变量,因此您不必包含在Android.mk 文件中。 nkd-build是在项目目录下启动的吗?

有关更多信息,请阅读我阅读的 NDK 文件夹中 docs/HOWTO.html 中的文档

从 NDK r4 开始,您可以简单地将文件放在 $PROJECT/jni/ 下 并从您的项目树中启动“ndk-build”脚本。

如果您想使用“ndk-build”但将文件放置到其他位置, 使用 GNU Make 变量覆盖:

ndk-build NDK_APPLICATION_MK=/path/to/your/Application.mk

【讨论】:

  • 问题是我只有 C 源文件,没有 Android Java 项目。解决方案是将所有文件放在一个名为“jni”的文件夹中,然后运行 ​​ndk-build 命令。它终于奏效了!但是感谢您的快速回答:)
  • 是的,在运行 ndk-build 命令时指向具有 Application.mk 的目录至关重要。
【解决方案3】:

我还没有找到一个让我满意的答案,也许这取决于您是尝试构建现有应用程序、创建新应用程序,还是移植一些现有的本机应用程序。这些指南适用于 android-ndk-r9b,但应该适用于最近的几个版本

ndk-build 使用的makefile build-local.mk 会对应用程序makefile 的位置进行一些猜测。

默认情况下,NDK 似乎旨在让您将 NDK 应用程序 Application.mkAndroid.mk 文件存放在名为 jni 的子目录下。这很好用,你可以使用命令行:

$ ndk-build

如果您不想拥有jni 子目录,例如,也许您正在将一个 linux 命令行工具移植到 Android,以下可能适合您:

创建一个空的AndroidManifest.xml 文件

现在创建一个Application.mk 文件,内容如下:

APP_BUILD_SCRIPT := Android.mk

然后创建一个Android.mk文件,例如:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := foo.c
LOCAL_MODULE := foo
include $(BUILD_EXECUTABLE)

要构建应用程序,请使用:

$ ndk-build NDK_APPLICATION_MK=`pwd`/Application.mk

【讨论】:

  • 我没有创建所有这些文件,而是在命令行上使用ndk-build NDK_PROJECT_PATH=$(pwd) APP_BUILD_SCRIPT=$(pwd)/Android.mk。你的回答帮助我弄清楚了。
  • 我缺少一个“jni”文件夹。这是一个很好的解决方法。
  • 顺便说一句,GrandAdmiral 的捷径奏效了……直到我了解到定义 APP_STL 的唯一方法是在 Application.mk 中。由于某种原因,无法在 Android.mk 中定义 APP_STL。所以我最终使用了tonylo的解决方案。
  • 这是最好的答案,因为它解决了根本问题:将您的 Android.mk 放在 jni 目录中。
  • 我需要在哪里调用这个命令??? $ ndk-build NDK_APPLICATION_MK=pwd/Application.mk
【解决方案4】:

你需要指定 3 件事。

NDK_PROJECT_PATH - the location of your project
NDK_APPLICATION_MK - the path of the Application.mk file
APP_BUILD_SCRIPT - the path to the Android.mk file

这些是覆盖构建脚本的默认值所需要的,它期望东西在 jni 文件夹中。

调用ndk-build时使用

ndk-build NDK_PROJECT_PATH=/path/to/proj NDK_APPLICATION_MK=/path/to/Application.mk

在 Application.mk 中添加

APP_BUILD_SCRIPT := /path/to/Android.mk

【讨论】:

    【解决方案5】:
    ndk-build NDK_APPLICATION_MK=path\to\your\src\main\jni\Application.mk NDK_PROJECT_PATH=path\to\your\module\src\main
    

    【讨论】:

    • 我需要在哪里写这个?
    【解决方案6】:

    这是我用的,cd进入项目目录并做:

    ndk-build NDK_PROJECT_PATH=.
    

    【讨论】:

    • 执行此操作,并将您的文件放在名为 jni 的子文件夹中。
    【解决方案7】:

    按照以下步骤操作:

    1)Right on your project
    2)Go to properties
    3)Go to C/C++ Build
    4)Go to Builder Settings
    5)Go to Build Location
      Add build directory
    6)Click on Workspace
    7)Select your project folder
    

    你应该看到类似

    的东西
    ${workspace_loc:/[Your Project_Name]}
    

    完成!!

    【讨论】:

      【解决方案8】:

      这对我有用。没有环境变量,也没有设置。转到您在命令行上解压缩 ndk 的根目录并运行 ndk-build 命令:

      ndk-build NDK_PROJECT_PATH=项目路径

      我的开发机器中的示例如下所示:

       C:\adt-bundle-windows-x86-20140321\android-ndk-r9d>ndk-build NDK_PROJECT_PATH=D: /workspace/naruto  
       Android NDK: WARNING: APP_PLATFORM android-19 is larger than android:minSdkVersi on 9 in D:/workspace/naruto/AndroidManifest.xml
       [armeabi] Compile thumb  : ndkfoo <= ndkfoo.c 
       [armeabi] SharedLibrary  : libndkfoo.so 
       [armeabi] Install        : libndkfoo.so => libs/armeabi/libndkfoo.so
      

      【讨论】:

        【解决方案9】:

        -C 为我工作。

        您也可以使用 mac 终端来执行此操作。

        【讨论】:

        • 您好,不幸的是,我的 ndk-bundle 不包含任何名为 ndk build 的文件夹,对此有何建议?
        【解决方案10】:

        您需要按照以下步骤操作:

        1.转到包含Android.mk的文件夹

        2.将 android-ndk 路径分配给 $NDK_PROJECT_PATH。例如:导出 NDK_PROJECT_PATH =/home/android-ndk-r8b。

        3. 将 NDK 添加到 $PATH。例如:export PATH=$PATH:/home/android-ndk-r8b。

        【讨论】:

          【解决方案11】:

          设置您的ndk builder的工作目录可以解决您的问题,因为我遇到了同样的问题并以这种方式解决了。

          路径:项目属性 -> 构建器 -> -> 主目录 -> 工作目录

          【讨论】:

            猜你喜欢
            • 2015-12-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-10-03
            • 1970-01-01
            • 2021-02-22
            • 1970-01-01
            • 2012-09-11
            相关资源
            最近更新 更多