工程建立好后,编辑 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编程实例 #### 一、开发环境的搭建 在开始具体的NDK编程之前,首先需要确保开发环境已经被正确地搭建起来。对于初次接触Android NDK开发的朋友来说,拥有一个良好的环境配置是至关重要的...
Android 开发手记 -- 环境配置 Android 开发手记是基于 Linux 内核的手机系统,使用 MyEclipse + Windows XP 作为开发工具,当然在 Linux 下开发是更好的选择。以下是 Android 开发环境配置的步骤: 第一步:下载 ...
这篇“Android开发手记--环境配置”主要介绍了如何在Windows XP环境下,利用MyEclipse进行Android开发的初始设置。 首先,你需要下载Android SDK。SDK(Software Development Kit)是Android开发的基础,包含了开发...
Android应用开发精解 pdf 作 者: 高磊,杨诚,元凯 编著 ...本书适合有一定Java基础并且想要自学Android开发的编程爱好者、想要转行从事Android领域开发的程序员,以及正在从事Android的初学者阅读。
在Android开发领域,创建第一个应用程序是每个初学者的必经之路。这个过程涵盖了基础的环境配置、项目构建、布局设计以及程序逻辑编写等关键步骤。本文将基于"Android学习手记:第一个应用程序!"这一主题,结合源码...
ADT (Android Development Tools) 是Eclipse的一个插件,用于提供集成的Android开发环境。 ##### 在线安装 1. 打开Eclipse。 2. 通过菜单栏中的“Help”->“Install New Software...”打开安装新软件界面。 3. 在...
首先,源码的理解是Android开发中的关键。阅读和理解开源库或系统的源码,可以让我们更好地了解内部工作原理,从而更有效地解决问题。例如,当你在BrewClock项目中遇到计时器功能的问题,通过研究相关开源计时器的...
### Android Studio 开发环境搭建详解 #### 一、概述 随着移动互联网的飞速发展,Android平台已经成为全球最大的移动操作系统之一。为了满足开发者的需求,Google推出了Android Studio作为官方推荐的集成开发环境...
百度AR平台是百度公司推出的一系列增强现实(AR...整体来看,这篇实践手记是百度AR平台在Android开发中的一个实用指南,为开发者提供了从基础平台获取、到demo工程实践再到技术细节配置的全面指导,具有很高的实用价值。
在Android开发中,文件存储是一种常见的数据持久化方式,尤其适用于小型数据的保存,例如用户的手记应用。本文将详细解析如何使用文件存储在Android中实现一个简单的手记应用。 首先,我们来看`MainActivity.java`...
2. **软件开发**:可能包含软件工程的各个阶段,如需求分析、设计、编码、测试和维护,以及敏捷开发、DevOps 的理念与实践。 3. **操作系统**:涵盖了 Windows、Linux、macOS 等操作系统的基本操作、管理和优化技巧...
2. **算法与数据结构**:深入探讨了排序算法(如冒泡、插入、快速排序)、搜索算法(如二分查找)和经典数据结构(如栈、队列、链表、树、图)。这是解决问题和优化代码效率的关键。 3. **设计模式**:讲解了23种...
在Android开发中,通常会用到`Path`类来构建路径,包括直线、曲线等图形。动态曲线的实现可以通过计算每个时刻曲线的位置和形状,然后在`onDraw()`方法中更新`Canvas`上的绘制内容。开发者可能使用了`Path.lineTo()`...
在Android开发中,自定义视图是提升应用用户体验和视觉效果的重要手段。本文将深入探讨一个基于IDEA的Android工程源码示例,该示例实现了动态曲线时轴的绘制,包括虚线曲线以及爱心动画,旨在模仿百度生活手记中的...
ndroid 开发手记一 NDK编程实例
Unity3D是一种跨平台的游戏开发工具,支持多种操作系统,如Windows、MacOS等,并且能够发布到多个平台,包括PC、Web、iOS、Android等。它不仅为专业游戏开发者提供了一个高效的开发环境,还为初学者提供了一套易上手...
热更新技术是目前移动应用开发领域中一项非常重要的技术,它能够使开发者在不通过应用商店重新打包和更新应用的情况下,向已安装的用户提供新功能和修复漏洞。热更新技术的基本原理虽然相对简单,但要在大型和复杂的...
Java的跨平台特性使得开发者可以编写一次代码,到处运行,这在Android开发中意味着应用可以在多种不同配置的Android设备上运行。使用Java进行开发,还意味着开发人员可以利用丰富的开源库和工具,提高开发效率和应用...
BookieZilla开发手记 项目功能 最近在做一个旧书交易网站,本属于B/S体系结构的课程作业,但由于采用了新的框架所以跃跃欲试想都记录下来。 实现一个旧书交易网站,基本功能如下: 实现用户注册、登录功能,用户注册...