2013-01-04 223 views
59

當運行NDK-build命令我碰到下面的錯誤:NDK找不到應用程序目錄

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 
+0

有同樣的問題只需要添加'export ANDROID_NDK_HOME = [我的NDK文件夾路徑]'到我的'.bash_profile'。之後,我可以從我的項目文件夾運行該命令。 – Yves

回答

23

NDK_PROJECT_PATH是一個環境變量,這樣你就不必在包括文件。在項目目錄中啓動了nkd-build

欲瞭解更多信息的NDK文件夾閱讀文檔在哪裏docs/HOWTO.html我讀

Starting with NDK r4, you can simply place the file under $PROJECT/jni/ and launch the 'ndk-build' script from your project tree.

If you want to use 'ndk-build' but place the file to a different location, use a GNU Make variable override as:

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

問題是我只有C源文件,沒有Android Java項目。解決方案是將所有文件放在名爲'jni'的文件夾中,然後運行ndk-build命令。它終於奏效了! 但是,感謝您的快速回答:) –

+1

是的,當運行** ndk-build **命令時,指向具有Application.mk的目錄至關重要。 –

21

您可以使用下面的命令

ndk-build -C your_project_path 

希望這會回答你的問題。

0

設置你的ndk構建器的工作目錄可以解決你的問題,因爲我得到了同樣的問題,並以這種方式解決它。

路徑:項目屬性 - >建築工地 - > - >首頁 - >工作目錄

4

遵循以下步驟:

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]} 

完成!

+0

謝謝你解決了我的問題。 – astackdummy

2

您需要按照下面的步驟:

1.Go到文件夾包含Android.mk

2.Assign的Android的NDK路徑$ NDK_PROJECT_PATH。例如:export NDK_PROJECT_PATH =/home/android-ndk-r8b。

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

16

我還沒找到滿意的答案,這可能取決於您是在嘗試構建現有的應用程序,是否創建新的應用程序,或者您是否正在移植某個現有的本機應用程序。這些指導方針適用於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 
+9

除了創建所有這些文件外,我還在命令行上使用了'ndk-build NDK_PROJECT_PATH = $(pwd)APP_BUILD_SCRIPT = $(pwd)/ Android.mk'。你的回答幫我弄清楚了。 – GrandAdmiral

+1

我錯過了一個「jni」文件夾。這是一個很好的工作。 –

+0

順便說一下,GrandAdmiral的捷徑工作...直到我得知定義APP_STL的唯一方法是在Application.mk中。出於某種原因,APP_STL無法在Android.mk中定義。所以tonylo的解決方案就是我最終使用的解決方案。 –

3

這爲我工作。沒有環境變量也沒有設置。轉至您NDK解壓縮命令行和運行NDK-build命令根目錄:

ndk-build NDK_PROJECT_PATH=path to your project

樣品看起來像這樣在我的dev的機器:

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 
11

你需要指定三件事。

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建造使用

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

在Application.mk添加

APP_BUILD_SCRIPT := /path/to/Android.mk 
13
ndk-build NDK_APPLICATION_MK=path\to\your\src\main\jni\Application.mk NDK_PROJECT_PATH=path\to\your\module\src\main 
+0

其工作正常 –

8

這是我用的,cd到項目目錄並執行:

ndk-build NDK_PROJECT_PATH=. 

enter image description here

+1

做到這一點,再加上你的文件在一個名爲jni的子文件夾。 – BuvinJ

3

-C爲我工作。

enter image description here

您也可以使用Mac終端做到這一點。

相關問題