环境我搭好了 工程名字叫HelloJni, java代码如下:
package com.example.hellojni;
import android.app.Activity;
import android.os.Bundle;
import android.app.AlertDialog;
public class HelloJni extends Activity {
static
{
System.loadLibrary("hello-jni");
}
public native void dispHelloJni();
public static void main(String[] args) {
new HelloJni().dispHelloJni();
}
}
我将ndk中的jni目录拷贝到HelloJni工程目录下了,然后将输出稍改了一下, 代码如下:
#include <string.h>
#include <jni.h>
/* This is a trivial JNI example where we use a native method
* to return a new VM String. See the corresponding Java source
* file located at:
*
* apps/samples/hello-jni/project/src/com/example/HelloJni/HelloJni.java
*/
jstring
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
jobject thiz )
{
return (*env)->NewStringUTF(env, "Hello fr ffjdeopaji!");
}
工程参数什么的我也配置好了,libhello-jni.so也生成了
问题是我该则么运行这个程序呢, 我运行java文件,什么也没输出出来,模拟器倒是启动起来了
我该怎么做呢 是改程序还是什么地方配置的不对呢, 请大家指教 多谢
------解决方案--------------------
http://blog.csdn.net/liu_zhen_wei/article/details/6975986
这是个android jni demo.写的很详细,包括java代码那部分。
------解决方案--------------------
关于Android的activity起点是main但是不是通常意义的java的main方法,给你个链接网站:http://developer.android.com/reference/android/app/Activity.html
你仔细看下Activity的生命周期图,详细你很快就能明白了
------解决方案--------------------
坑爹了!当时没想就贴上 main 了!!这个要输出可以用 Log.i(); Log.m(); 等。或者把获得的参数更新到界面上,比如一个 TextView 。
public class HelloJni extends Activity {
static {
System.loadLibrary("hello");
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText( stringFromJNI() );
setContentView(tv);
}
public native String stringFromJNI();
}
大概就是这个样子。
上次正忙,没仔细看。