首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android NDK: Eclipse参数和javah

Android NDK: Eclipse参数和javah
EN

Stack Overflow用户
提问于 2012-02-16 22:39:06
回答 3查看 4.7K关注 0票数 2

我花了一小时又一小时的时间,没有向前移动一英寸。我已经重做了几次这个项目,没有留下任何其他的地方。希望这里的人能给我们一些启发,指出一些方向。

在Linux Eclipse IDE面板>运行>外部工具>外部工具配置中:

代码语言:javascript
复制
Name: Dev javah
Tab [main]:
* location: /usr/java/jdk1.6.0_25/bin/javah
* working directory: ${workspace_loc:/Dev/bin}
* Arguments: ??

我试过了:

代码语言:javascript
复制
* Arguments: -d ${workspace_loc:/Dev/jni} com.dev.DevActivity ${project_classpath:Dev} com.pkgpub.DevActivity

这给了我:

代码语言:javascript
复制
1 error
javadoc: error - Illegal package name: "/home/user/dev/Dev/bin/classes"

并且还尝试了:

代码语言:javascript
复制
* Arguments: -d ${workspace_loc:/Dev/jni} com.dev.DevActivity

这就给了..。

代码语言:javascript
复制
error: cannot access com.dev.DevActivity
class file for com.dev.DevActivity not found
javadoc: error - Class com.dev.DevActivity not found.
Error: No classes were specified on the command line.  Try -help.

类似于-

代码语言:javascript
复制
* Arguments: -d ${workspace_loc:/Dev/jni} com.pkgpub.DevActivity

这给了我:

代码语言:javascript
复制
error: cannot access com.pkgpub.DevActivity
class file for com.pkgpub.DevActivity not found
javadoc: error - Class com.pkgpub.DevActivity not found.
Error: No classes were specified on the command line.  Try -help.

但是当我运行的时候:

代码语言:javascript
复制
which javah
/usr/bin/which: no javah in (/usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/user/android-sdks/tools:/home/user/android-sdks/platform-tools:/opt/android/android-ndk-r7:/home/user/.local/bin:/home/user/bin:/home/user/android-sdks/tools:/home/user/android-sdks/platform-tools:/opt/android/android-ndk-r7:/home/user/android-sdks/tools:/home/user/android-sdks/platform-tools:/opt/android/android-ndk-r7)

问题是。项目没有编译是因为javah对Eclipse NDK是不可见的,还是由于参数详细说明缺少了什么?在这种情况下,如何修复它?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-16 22:52:38

尝试添加

-classpath库/类

作为javah的参数

票数 2
EN

Stack Overflow用户

发布于 2012-05-04 18:49:38

特别为Android设计:

在bin之后立即使用类,比如project_location/bin/classes,这对我在Linux Fedora上很有效

代码语言:javascript
复制
javah -d /var/www/project/jni/ -classpath /var/www/project/bin/classes/ com.android.TestClass
票数 1
EN

Stack Overflow用户

发布于 2012-02-17 04:48:05

@BlackBelt谢谢你的建议!

以下是工作的参数,解决了编译过程的javah端问题:

代码语言:javascript
复制
-d ${workspace_loc:/Dev/jni} com.pkgpub.Dev -classpath ${workspace_loc:/Dev/bin/classes/} com.pkgpub.Dev

其中pkgpub是包名,Dev是项目名。值得一提的是,该项目包含以下文件:\src\Dev.java;\jni\Dev.c;\jni\Dev.h;\bin...\pkgpub\Dev.class。

现在,它生成具有正确内容的文件jni/com_pkgpub_Dev.h。这太棒了!

然而,ndk-build仍然没有完全链接,并且不会生成com_pkgpub_Dev.c文件。因此,从Project > Project Build -来了一条消息:

代码语言:javascript
复制
**** Build of configuration Build (GNU) for project Dev ****
ndk-build 
make: *** No rule to make target `jni/com_pkgpub_Dev.c', needed by `obj/local/armeabi/objs/dev/com_pkgpub_Dev.o'.  Stop.
**** Build Finished ****

从这条消息看,/jni/Android.mk文件中似乎缺少一些参数:

代码语言:javascript
复制
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CFLAGS    := -DHAVE_INTTYPES_H
LOCAL_MODULE    := dev
LOCAL_SRC_FILES := com_pkgpub_Dev.c Dev.c
include $(BUILD_SHARED_LIBRARY) 

要解决这个问题,只需要创建丢失的文件"jni/com_pkgpub_Dev.c“。此文件内容应基于"jni/com_pkgpub_Dev.h“文件中包含的自动生成的代码手动生成。

现在,它起作用了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9313197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档