2013-03-13 6 views
6

私はアンドロイドActivityクラスにいくつかのネイティブメソッドを追加しました。今はclassのヘッダファイルを作成したいと思います。アンドロイドアクティビティクラスのヘッダファイルを作成する

コマンドラインからヘッダファイルを作成する際に、次のエラーが発生します。

C:\AndroidProjects\JniTest\bin\classes>javah -classpath .; 
C:\adt-bundle-windows-x86\sdk\platforms\android.jar com.example.jnitest.JniTest 
Error: cannot access android.app.Activity 
class file for android.app.Activity not found 

基本的にjarからアクティビティクラスにアクセスすることはできません。

アドバイスをしてください。 (Windowsのcmdを使用しながらの使用バックスラッシュ(\)、代わりにスラッシュ(/))コマンドは次のようになります

+3

参照[チュートリアル:Android JNI](http://blog.edwards-research.com/2012/04/tutorial-android-jni/)ここでは、JNIヘッダーを作成するためのステップバイステップガイドを見つけることができます。 –

+0

ありがとうございました...とにかく...私は自分でidを手に入れました。これはこうです: C:\ AndroidProjects \ JniTest \ bin \ classes> javah -classpath C:\ adt-bundle-windows-x8 6 \ sdk \プラットフォーム\ android-8 \ android.jar; com.example.jnitest.JniTest – amj

+0

@amj - あなたの発見を回答として投稿し、それを受け入れてください。 – Perception

答えて

1

javah -bootclasspath $ANDROID_SDK_ROOT/platforms/android-17/android.jar -classpath bin/classes com.example.jnitest.JniTest 

あなたはandroid.jar再実装Java Class Libraryいるので、代わりに-classpath-bootclasspathを使用する必要があります。

仮定:

  • あなたの現在のディレクトリは、次のとおりです。C:\AndroidProjects\JniTest
  • あなたのAndroid SDKは$ANDROID_SDK_ROOT(Windowsの場合は%ANDROID_SDK_ROOT%)にインストールされています。
  • ターゲットAPIレベルはandroid-17です。

コマンドを適宜変更してください。

2

Eclipseで以下を試してください。

移動先|外部ツール|外部ツール構成プログラムの下に小さなアイコンをクリックして新しい構成を作成します。

名前を付けてください。

場所は次のようになります。C:\ Program Files \ Javaの\ jdk1.7.0_04 \ビン\のjavah.exe

作業ディレクトリは次のようになります。$ {workspace_loc:/ My_First_NDK/binに/クラス}と

引数は次のようになります。-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

enter image description here

関連する問題