工程建立好后,编辑 src/com/jpf/myjni/MyJNI.java 文件,内容如下:
package com.jpf.myjni;
import android.app.Activity;
import android.widget.TextView;
import android.os.Bundle;
public class MyJNI extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
TextView tv = new TextView( this );
tv.setText( stringFromJNI() );
System. out .println( "Here we go ..." );
setContentView(tv);
System. out .println( "Done!" );
}
public native String stringFromJNI();
static {
System.loadLibrary ( "myjni" );
}
}
需要说明的几点:
public native String stringFromJNI(); 这句申明,带有 native 关键字,说明该方法是本地方法。
System.loadLibrary ( "myjni" ); 这句就是用来加载我们的 c 动态库的。上面声明的方法,具体实现,就在我们加载的库中。
建立好工程,再次编译,在 cygwin 中运行 ndk-build ,结果 OK 。
Administrator@lenovo-0e47e162 /android/android-ndk-r4/samples/myndk
$ ndk-build
Compile thumb : myjni <= /android/android-ndk-r4/samples/myndk/jni/myjni.c
SharedLibrary : libmyjni.so
Install : libmyjni.so => /android/android-ndk-r4/samples/myndk/libs/armea
bi
我们看到,需要的共享库已经生成,并且安装好了。下面就可以生成 apk 了。
在 Cygwin 中进行工程的 build ,编译后,在工程的 bin 目录下,会看到我们的 apk 包。
好,我们试试看,能否正常运行。在 Eclipse 选择执行方式为 Android Application ,点击 run ,以下 console 的输出:
[2010-07-07 14:26:18 - MyJNI] ------------------------------
[2010-07-07 14:26:18 - MyJNI] Android Launch!
[2010-07-07 14:26:18 - MyJNI] adb is running normally.
[2010-07-07 14:26:18 - MyJNI] Performing com.jpf.myjni.MyJNI activity launch
[2010-07-07 14:26:18 - MyJNI] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'android21'
[2010-07-07 14:26:18 - MyJNI] WARNING: Application does not specify an API level requirement!
[2010-07-07 14:26:18 - MyJNI] Device API version is 7 (Android 2.1-update1)
[2010-07-07 14:26:18 - MyJNI] Uploading MyJNI.apk onto device 'emulator-5554'
[2010-07-07 14:26:18 - MyJNI] Installing MyJNI.apk...
[2010-07-07 14:26:24 - MyJNI] Success!
[2010-07-07 14:26:25 - MyJNI] Starting activity com.jpf.myjni.MyJNI on device
[2010-07-07 14:26:29 - MyJNI] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.jpf.myjni/.MyJNI }
上面的 warning ,是我们没有指定 API 的版本号。如下指定一下就没有这个 warning 了。
下图为执行的效果:
下图是我们查看 LogCat 的输出:
可以看到我们的输出 MYJNI : MyJNI is called !
摘自:http://blog.csdn.net/L____J/article/details/5787759
分享到:
相关推荐
Android开发手记一_NDK编程实例Android开发手记一_NDK编程实例Android开发手记一_NDK编程实例
Android开发手记--环境配置.pdf
Android开发手记--环境配置[收集].pdf
开发网页看 网页开发手记 htmlcss js 大家可以看看
Android应用开发精解 pdf 作 者: 高磊,杨诚,元凯 编著 ...本书适合有一定Java基础并且想要自学Android开发的编程爱好者、想要转行从事Android领域开发的程序员,以及正在从事Android的初学者阅读。
资源名称:网页开发手记.HTML.CSS.JavaScript实战详解内容简介:《网页开发手记:HTML CSS Javascript实战详解》,本书学习的三大技术是web标准的主要组成部分,并且在javascript部分以实例方式介绍了...
网页开发手记:486 个JavaScript 网页特效详解.pdf
一本描述网页开发的书,很全,希望大家能喜欢
网页开发手记htmlcssjavascript实战详解 电子工业出版社 叶青 孙亚南 孙泽军编著
网页开发手记:486个JavaScript网页特效详解_光盘源文件
同人游戏开发手记-附件(2.2.2-2.2.6) 具体说明见我的博客(http://blog.csdn.net/fosly) 一如既往的骗5个积分, 积分不够的请留个Email, C屌相信总会有不缺分儿的人出现的, 所以坚决不免分
JavaEye3.0开发手记
AndroidStudio开发环境搭建手记[归纳].pdf
在Windows下安装与配置Android开发环境,使用Eclipse
码农近5年的Android应用优化 手记,从性能:稳定性、内存、流畅度等处理方案,到应用包大小 及安全 方方面面,很全面,希望对你有大用
Jfreechart开发手记(一) 一个完整的柱状图的实现方法 含数据下钻的实现方法
iReport&JasperReport;开发手记(一)+List报表开发与发布
网页开发手记:HTML+CSS+JavaScript实战详解,初学看看