很抱歉问这样一个noob问题,但NDK文档错了(r7b):
如果您使用ADT在Eclipse中进行开发,请使用“新建项目向导” 使用“导入”为每个示例创建一个新的Android项目 来自“现有来源”选项并从中导入来源
<ndk>/apps/<app_name>/project/
。然后,如有必要,设置AVD 在模拟器中构建/运行应用程序。
没有“apps”文件夹,示例中不包含“project”文件夹。那么...运行样本的正确方法是什么?
另外,我可以配置Eclipse自动构建代码的C ++部分吗?
答案 0 :(得分:5)
.project
文件中的字符串。没有使用此名称创建文件或文件夹,并且输出二进制文件似乎不包含此名称。<uses-sdk>
或default.properties中的“target”行获取此信息。我也不知道为什么两者可能不同(例如在位图等离子体样本中,target=android-9
但<uses-sdk android:minSdkVersion="8"/>
。)Eclipse不会自己构建本机代码,但它会自动部署本机代码(例如libplasma.so)如果它知道它。在命令行上构建本机代码后,例如:
C:\...\android-ndk-r7b\samples\bitmap-plasma>..\..\ndk-build
Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup : libs/armeabi/gdb.setup
Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi-v7a/gdbserver
Gdbsetup : libs/armeabi-v7a/gdb.setup
"Compile thumb : plasma <= plasma.c
SharedLibrary : libplasma.so
Install : libplasma.so => libs/armeabi/libplasma.so
"Compile thumb : plasma <= plasma.c
SharedLibrary : libplasma.so
Install : libplasma.so => libs/armeabi-v7a/libplasma.so
右键单击您的项目并选择“Refresh”,否则Eclipse在启动模拟器时可能无法上载本机代码。
最后,要运行该示例,请右键单击该项目,然后选择“运行方式” Android应用程序。 See here关于选择使用哪个模拟器。
See here关于配置Eclipse以自动构建本机代码。
我很好奇为什么NDK会为每个ABI生成两个大小不同的* .so文件,例如:它创建libs/armeabi-v7a/libplasma.so
(15 KB),但也创建obj/local/armeabi-v7a/libplasma.so
(63 KB)。有人知道区别吗?
答案 1 :(得分:1)
而不是长途跋涉(经验丰富的程序员喜欢它 - 但对初学者而言)。有一种方法可以在Eclipse和NDK中构建本机库。
1&GT;首先,您需要确保Windows中的NDK路径正确 - &gt;偏好 - &gt; (标签)Android - &gt; NDK - 如果未设置 - 将其指向ndk目录。
2 - ;假设您已按上述方式导入项目(新建|项目|从现有代码创建) - 右键单击项目并转到“Android工具 - >添加本机支持...”。如果设置了路径,它将构建示例。然后,您可以通过按播放按钮将其部署到设备或AVM。
答案 2 :(得分:0)
我正在使用Eclipse ADT和Android ndk 5b。我正确的项目路径是android-ndk-5b / samples / project
从现有来源导入时,您必须选择正确的目标,我使用的是Android 2.3.3。
之后,我从命令行更新了我的项目,看看这个链接,http://developer.android.com/sdk/ndk/overview.html 从示例路径写:android update project -p。 -s和$ Your_Path_Android_ndk / ndk-build
最后,只在Eclipse中作为Android应用程序运行并且已经完成
答案 3 :(得分:0)
似乎使用Eclipse Juno,您现在可以
从这里,Eclipse可以自动检测jni并找到项目。
如果这不起作用,请转到终端或命令提示符并导航到项目根目录(您可以在其中看到jni文件夹)。然后输入
android update project -p . -t <your target level>
这应该是,例如,android-9
在此之后,再次尝试初始步骤。