13

我正在尝试为一个简单的 NDK 项目创建一个 .h 头文件。使用 cygwin 我浏览到myprojectDIR\jni目录,然后执行以下命令:

javah -o com_myproject_MyActivity.h -classpath  myprojectDIR\bin\classes com.myproject.MyActivity

然后出现此错误消息:

Error: cannot access android.app.Activity
class file for android.app.Activity not found

我在类中有一个本地方法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)

提前致谢

4

5 回答 5

21

尝试添加到您的类路径:

-classpath <android-sdk-location>/platforms/android-8.jar
于 2012-05-14T04:29:11.383 回答
14

我找到了,事情是这样的:

javah -o com_myproject_MyActivity.h -classpath <android-sdk-location>/platforms/android-8.jar;myprojectDIR\bin\classes com.myproject.MyActivity
于 2012-05-18T14:24:50.877 回答
4

在 Eclipse 中尝试以下操作,

转到 > 运行 | 外部工具| 程序下的外部工具配置通过单击小图标创建新配置。

命名它。

位置是:C:\Program Files\Java\jdk1.7.0_04\bin\javah.exe

工作目录将是: ${workspace_loc:/My_First_NDK/bin/classes} 和

参数是:-classpath ${workspace_loc:/My_First_NDK/bin/classes} -bootclasspath "C:\adt-bundle-windows-x86-20140624\sdk\platforms\android-19\android.jar" -v -d $ {workspace_loc:/My_First_NDK/jni} com.mypackage.ndk.HelloNDK

在此处输入图像描述

于 2014-09-23T07:21:06.067 回答
0

为了生成本机头文件javah需要:

  • 你的课(通常在 下build/intermediates/classes
  • Android 类(通常在 下$ANDROID_HOME/platforms/android-%ver%/android.jar

-classpath所以你只需在参数中传递它们

对我来说主要的挑战基本上是通过它们 - 你必须:用作分隔符并且路径必须是绝对的。
请参阅Oracle 文档

因此,您最终可能会得到这样的结果:
javah -classpath <full path to app>build/intermediates/classes/debug:<full path to sdk>/platforms/android-26/android.jar com.myproject.MyActivity

于 2018-03-18T08:47:42.740 回答
-1

我找到了,事情是这样的:

   E:\workspeaceResearch\DAMMADARJNI\src>javah -classpath "E:\Software\sdk\platform
   s\android-19/platforms/android-8.jar"; -jni com.dammadar.jni.Home_Screen
于 2014-10-10T08:51:22.717 回答