我正在尝试为简单的NDK项目创建一个.h头文件.使用cygwin我浏览到myprojectDIR\jni
目录,然后执行以下命令:
javah -o com_myproject_MyActivity.h -classpath myprojectDIR\bin\classes com.myproject.MyActivity
Run Code Online (Sandbox Code Playgroud)
然后出现此错误消息:
Error: cannot access android.app.Activity
class file for android.app.Activity not found
Run Code Online (Sandbox Code Playgroud)
我在MyActivity
类中有一个本机方法,所以我尝试创建一个名为NativeAccess
(不扩展android SDK中的任何类)的新类,它工作正常,.h文件创建,ndk-build和测试设备成功!
所以我的问题是我需要在我创建的android活动和服务中使用我的本机方法,但我不能这样做因为Javah
命令无法从android-sdk本身访问类.请注意我正在使用(Windows-7 x64),我有这些环境变量:
ANDROID_NDK : C:\Android\android-ndk-r7b
ANDROID_SDK : C:\Android\android-sdk
ANT_HOME : C:\ANT\apache-ant-1.8.3
JAVA_HOME : C:\Program Files\Java\jdk1.7.0_02
PATH : %JAVA_HOME%\bin;%ANDROID_SDK%\tools;%ANDROID_SDK%\platform-tools;%ANDROID_NDK%;%ANT_HOME%\bin; (other unrelated stuff)
Run Code Online (Sandbox Code Playgroud)
提前致谢
我打算编写一个Java服务器/客户端应用程序,其中客户端实际上不是客户端(它没有主服务器),但它是一个库.
另外,我必须开发一个需要与服务器交互的C模块(保险丝驱动程序),因此需要调用客户端的功能.
我已经创建了许多从Java应用程序调用的C函数的例子,但没有我需要的.
你能给我一个建议或一些提示吗?
编辑
因为有人无法理解我需要什么,我想要更清楚:我有一个服务器,程序只能使用用Java编写的库与它交互.真正的客户端是用C编写的,它必须能够调用库的功能,所以在CI中必须调用java方法