当前位置: 代码迷 >> Android >> 在eclipse中怎么运行hello-jni例子
  详细解决方案

在eclipse中怎么运行hello-jni例子

热度:54   发布时间:2016-05-01 12:05:27.0
在eclipse中如何运行hello-jni例子
环境我搭好了 工程名字叫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();
    
    
}

大概就是这个样子。

上次正忙,没仔细看。
  相关解决方案