`

Android 开发手记二

 
阅读更多

 工程建立好后,编辑 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编程实例 #### 一、开发环境的搭建 在开始具体的NDK编程之前,首先需要确保开发环境已经被正确地搭建起来。对于初次接触Android NDK开发的朋友来说,拥有一个良好的环境配置是至关重要的...

    Android开发手记--环境配置[收集].pdf

    Android 开发手记 -- 环境配置 Android 开发手记是基于 Linux 内核的手机系统,使用 MyEclipse + Windows XP 作为开发工具,当然在 Linux 下开发是更好的选择。以下是 Android 开发环境配置的步骤: 第一步:下载 ...

    Android开发手记--环境配置.pdf

    这篇“Android开发手记--环境配置”主要介绍了如何在Windows XP环境下,利用MyEclipse进行Android开发的初始设置。 首先,你需要下载Android SDK。SDK(Software Development Kit)是Android开发的基础,包含了开发...

    Android应用开发精解 pdf

    Android应用开发精解 pdf 作 者: 高磊,杨诚,元凯 编著 ...本书适合有一定Java基础并且想要自学Android开发的编程爱好者、想要转行从事Android领域开发的程序员,以及正在从事Android的初学者阅读。

    Android学习手记:第一个应用程序!

    在Android开发领域,创建第一个应用程序是每个初学者的必经之路。这个过程涵盖了基础的环境配置、项目构建、布局设计以及程序逻辑编写等关键步骤。本文将基于"Android学习手记:第一个应用程序!"这一主题,结合源码...

    Android SDK安装手记

    ADT (Android Development Tools) 是Eclipse的一个插件,用于提供集成的Android开发环境。 ##### 在线安装 1. 打开Eclipse。 2. 通过菜单栏中的“Help”-&gt;“Install New Software...”打开安装新软件界面。 3. 在...

    Android学习手记三:完善程序!

    首先,源码的理解是Android开发中的关键。阅读和理解开源库或系统的源码,可以让我们更好地了解内部工作原理,从而更有效地解决问题。例如,当你在BrewClock项目中遇到计时器功能的问题,通过研究相关开源计时器的...

    AndroidStudio开发环境搭建手记[归纳].pdf

    ### Android Studio 开发环境搭建详解 #### 一、概述 随着移动互联网的飞速发展,Android平台已经成为全球最大的移动操作系统之一。为了满足开发者的需求,Google推出了Android Studio作为官方推荐的集成开发环境...

    【百度AR】【Android】百度AR平台demo工程实践手记

    百度AR平台是百度公司推出的一系列增强现实(AR...整体来看,这篇实践手记是百度AR平台在Android开发中的一个实用指南,为开发者提供了从基础平台获取、到demo工程实践再到技术细节配置的全面指导,具有很高的实用价值。

    Android中使用文件存储实现手记应用的代码清单.pdf

    在Android开发中,文件存储是一种常见的数据持久化方式,尤其适用于小型数据的保存,例如用户的手记应用。本文将详细解析如何使用文件存储在Android中实现一个简单的手记应用。 首先,我们来看`MainActivity.java`...

    匠人手记(包括所有的资料很全)

    2. **软件开发**:可能包含软件工程的各个阶段,如需求分析、设计、编码、测试和维护,以及敏捷开发、DevOps 的理念与实践。 3. **操作系统**:涵盖了 Windows、Linux、macOS 等操作系统的基本操作、管理和优化技巧...

    程序匠人手记网络版全篇

    2. **算法与数据结构**:深入探讨了排序算法(如冒泡、插入、快速排序)、搜索算法(如二分查找)和经典数据结构(如栈、队列、链表、树、图)。这是解决问题和优化代码效率的关键。 3. **设计模式**:讲解了23种...

    百度生活手记自定义动态曲线时间轴

    在Android开发中,通常会用到`Path`类来构建路径,包括直线、曲线等图形。动态曲线的实现可以通过计算每个时刻曲线的位置和形状,然后在`onDraw()`方法中更新`Canvas`上的绘制内容。开发者可能使用了`Path.lineTo()`...

    自定义的动态曲线时轴思路版已实现动态绘制虚曲线及爱心动画,仿百度生活手记,恋爱时光卡片具体讲解看注释

    在Android开发中,自定义视图是提升应用用户体验和视觉效果的重要手段。本文将深入探讨一个基于IDEA的Android工程源码示例,该示例实现了动态曲线时轴的绘制,包括虚线曲线以及爱心动画,旨在模仿百度生活手记中的...

    Android NDK编程

    ndroid 开发手记一 NDK编程实例

    Unity3D游戏设计与实现pdf和随书资源打包百度云

    Unity3D是一种跨平台的游戏开发工具,支持多种操作系统,如Windows、MacOS等,并且能够发布到多个平台,包括PC、Web、iOS、Android等。它不仅为专业游戏开发者提供了一个高效的开发环境,还为初学者提供了一套易上手...

    热更新方案 - Tinker 手记

    热更新技术是目前移动应用开发领域中一项非常重要的技术,它能够使开发者在不通过应用商店重新打包和更新应用的情况下,向已安装的用户提供新功能和修复漏洞。热更新技术的基本原理虽然相对简单,但要在大型和复杂的...

    digitaleagles:Android抄录员

    Java的跨平台特性使得开发者可以编写一次代码,到处运行,这在Android开发中意味着应用可以在多种不同配置的Android设备上运行。使用Java进行开发,还意味着开发人员可以利用丰富的开源库和工具,提高开发效率和应用...

    BookieZilla:旧书交易网站

    BookieZilla开发手记 项目功能 最近在做一个旧书交易网站,本属于B/S体系结构的课程作业,但由于采用了新的框架所以跃跃欲试想都记录下来。 实现一个旧书交易网站,基本功能如下: 实现用户注册、登录功能,用户注册...

Global site tag (gtag.js) - Google Analytics