Android NDK编写一个HelloWorld

在上一篇博文中,我们搭建好了Android ndk 的开发环境,作为码农,我们是不是先来写一个HelloWorld来表示一下自己的到来。

(1)首先在你的工作空间建一个Android项目,这里我建立的为NDKHelloWorld。项目结构如图(1)

图(1)

(2)在MainActivity中声明你所需要的本地方法,MainActivity的代码如下所示:

package com.gc.ndkhelloworld;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
/**
 *
 * @author Android将军
 *
 */
public class MainActivity extends Activity {

	private TextView mTextView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView=(TextView) findViewById(R.id.tv);
        mTextView.setText(helloWorld());
    }
    /**
     * 在Java代码中声明本地方法
     * @return
     */
    public native String helloWorld();
}

(2)选中该项目,右击选择Android Tools,然后选择Add Native Support...,如图(2)所示:

图(2)

然后出现图(3)所示情况:

图(3)

点击finish之后,会发现项目的目录结构如图(4)所示:

图(4)

下面我们开始实现本地方法,helloworld.cpp的代码如下:

#include <jni.h>
#include <stdio.h>
/**
 * @author Android将军
 */
/**
 *
 * 实现本地方法时,一个要按照函数命名规则来命名,函数的命名规则如下:
 * Java_PackageName_ClassName_MethodName
 * 从这个规则可以看出,任何由Java程序调用的NDK函数名都必须以Java开头,紧跟着要调用该函数的Java类
 * 所在的包名(中间的“.”要改成“_”),然后会跟Java类名,最后是方法名,各部分直接都用“_”连接。
 */
extern "C"
{
jstring Java_com_gc_ndkhelloworld_MainActivity_helloWorld(JNIEnv *env,jobject obj)
{
return env->NewStringUTF("NDK,HelloWorld!");
}
}

实现完本地方法后,下面我们需要编译本地库,选中该项目,右击选择Build Project来进行编译本地库,编译完本地库之后,就需要加载本地库了。在静态初始化块内调用System.loadLibrary加载本地库,是加载库的最简单的方法,本例中加载库的代码如下所示:

static {
	System.loadLibrary("helloworld");
	}

编译完本地库之后,你可以发现libs目录下多了一个armeabi目录,这是因为我们没有为该项目指定一个Application.mk文件,而Android NDK构建系统默认情况下为armeabi ABI生成二进制文件。为了我们的本地库可以在NDK所支持的所有架构上运行,我们在jni目录下需要增加一个Application.mk文件,文件内容如下:

APP_ABI := all

如果一切顺利的话,大家可以在模拟器或者真机上看到该案例的运行效果如下:

如果大家在实现本地方法时,遇到could not be resolved或Unresolved inclusion: <jni.h>情况,请按下图解决:

该案例Demo下载地址:Demo上传csdn下载频道了,可是怎么也刷不出来地址,等有地址之后,再把该地址更新。

转载请注明出处:http://blog.csdn.net/android_jiangjun/article/details/44899927

时间: 2024-11-08 21:47:23

Android NDK编写一个HelloWorld的相关文章

Android NDK:②第一个NDK程序(创建步骤&amp;一些问题)

Android NDK:②第一个NDK程序(创建步骤&一些问题) 本节内容是:演示搭建第一个NDK程序 Android NDK第一个NDK程序创建步骤一些问题 创建一个Android Project Java代码中声明native方法 创建Jni文件夹编写ccpp代码 为项目添加NDK支持 新建配置一个Builder 调用了native方法的地方加载库 好了把程序跑起来 总结 遇到的问题 1.创建一个Android Project 直接创建一个新的Android Application Proj

Android Studio新建一个HelloWorld 程序(App)

Android Studio新建一个HelloWorld程序(App) 新建 或者直接启动程序(注:如果已有程序,此方法会直接打开最近一次关闭从程序) 更改App名 选择App运行平台 选择模板 更改主视图名 等待程序编译 此过程需要较长时间,耐心等待- 直到底部状态栏不再有动作执行. AS默认打开主视图代码 打开设计界面 运行程序 首先手机开启调试模式,并连接电脑 注1:此过程有可能会因为某些原因App不能正常运行 注2:此过程需要较长时间,耐心等待,直到手机上App启动成功 程序运行完成 G

PHP扩展开发--01.编写一个helloWorld扩展

为什么要用C扩展 C是静态编译的,执行效率比PHP代码高很多.同样的运算代码,使用C来开发,性能会比PHP要提升数百倍. 另外C扩展是在进程启动时加载的,PHP代码只能操作Request生命周期的数据,C扩展可操作的范围更广. 创建扩展骨架 ##本例用的php版本的是5.3.3 cd php-5.3.3/ext/ ./ext_skel --extname=myfun --proto=myfun.def ##执行成功后会生成myfun的编译文件 ls myfun/ config.m4 config

如何自己编写一个easyui插件

本文介绍如何通过参考1.4.2版本的progressbar的源码自己编写一个HelloWorld级别的easyui插件,以及如何拓展插件的功能. 有利于我们理解easyui插件的实现,以及了解如何对easyui插件进行拓展,或者当发现bug时在不修改源码的情况下对bug进行修复. 1. 首先让我们来看看progressbar的源码(已经删除了一些对本文不重要的). 比较了一下有源码的那几个插件,发现这个只有3KB,最小,所以拿这个学习最好了:而且这个progressbar没有涉及继承其他控件,易

Android Studio——第一个App HelloWorld

创建工程 打开Android Studio的File->New->New Project. 在New Project页面,这个页面包含Application Name.Company Domain.Package Name和Project Location四项,修改Application Name为HelloWorld,点击next. 在Target Android Device页面,这个页面包含了Phone And Tablet.Wear.TV.Android Auto和Glass,默认只勾

android#编写一个聊天界面

摘自<第一行代码>——郭霖 既然是要编写一个聊天界面,那就肯定要有收到的消息和发出的消息.上一节中我们制作的message_left.9.png可以作为收到消息的背景图,那么毫无疑问你还需要再制作一张message_right.9.png作为发出消息的背景图.图片都提供好了之后就可以开始编码了,首先还是编写主界面,修改activity_main.xml中的代码,如下所示: <LinearLayout xmlns:android="http://schemas.android.c

&lt;Android第二天&gt;第一个HelloWorld

要写一个HelloWorld有几个步骤,具体几个步骤我也不清楚,反正就是底下这几个. 首先 打开窗体中的控件在布局文件(以activity_a5.xml为例) 点击底部的Design标签,可以从左部的Palette面板窗口中选择想要使用的部件 在列表的Widgets分类中选择Large Text(随意选择一个Text即可),并将其拖动带右侧屏幕中合适的位置. 之后 点击下方Design旁边的Text,可以看到生成了新的TextView代码 那么 如果对这个添加的TextView进行修改呢? 有两

一 编写一个Android程序

首先,我们先编写一个apk,后面用这个apk来进行逆向.用Android Studio创建一个新的Android项目,命名为Jhm,一路Next直到Finish. 一  修改UI界面 打开app\src\main\res\layout 目录下的activity_main.xml, ①拖动一个TextView到界面,修改ID属性为textView_JHM,text属性为"激活码". ②拖动一个Plain Text接受输入的激活码,修改ID属性为editText_JHM,text属性为空.

Android NDK开发指南---Application.mk文件和android.mk文件

https://android.googlesource.com/platform/development/+/donut-release/ndk/docs/OVERVIEW.TXT https://android.googlesource.com/platform/ndk/+/4e159d95ebf23b5f72bb707b0cb1518ef96b3d03/docs/ANDROID-MK.TXT https://android.googlesource.com/platform/ndk/+/4