【Android开发】NDK开发(1)-Hello World!

上半年,公司的一个项目,本身我是不喜欢Android开发的,但是学习到的东西总需要整理一下。



从iOS转到Android,真心有些不习惯。就IDE来说,eclipse比Xcode差的不是一点半点。Android模拟器竟然还要开机!我勒个去。。

今天写个最简单的Android NDK的小栗子。

首先,什么是Android NDK? NDK 全称是:Native Development Kit,其他的,移步百度百科:android ndk_百度百科

1、新建一个Android Application Project,Fuck。

2、新建类 Fuck,声明本地静态方法:numFromFuck()。代码如下:

 1 package com.example.fuck;
 2 public class Fuck {
 3
 4     public native static int numFromFuck();
 5
 6     static{
 7
 8         System.loadLibrary("fuck");    //fuck代表动态链接库libfuck.so文件
 9
10     }
11
12 }

3、给程序添加一个按钮button,在点击button时,通过调用类Fuck中本地方法更改textView的text,代码如下

 1 button.setOnClickListener(new OnClickListener(){
 2     @Override
 3
 4     public void onClick(View arg0) {
 5
 6         // TODO Auto-generated method stub
 7
 8         textView.setText(Fuck.numFromFuck() + "");
 9     }
10 });

4、build该工程,生成 Fuck.class 类文件(在bin目录下),这一步比较重要。

5、在终端cd到工程目录下,新建个文件夹:【mkdir jni】(终端输入命令都在中括号中,下同),然后输入命令:【javah -classpath bin/classes -d jni com.example.fuck.Fuck】 ,

然后会在jni文件夹下发现一个文件:com_example_fuck_Fuck.h,其中代码如下:

 1 /* DO NOT EDIT THIS FILE - it is machine generated */
 2 #include <jni.h>
 3
 4 /* Header for class com_example_fuck_Fuck */
 5
 6 #ifndef _Included_com_example_fuck_Fuck
 7
 8 #define _Included_com_example_fuck_Fuck
 9
10 #ifdef __cplusplus
11
12 extern "C" {
13
14 #endif
15
16 /*
17
18  * Class:     com_example_fuck_Fuck
19
20  * Method:    numFromFuck
21
22  * Signature: ()I
23
24  */
25
26 JNIEXPORT jint JNICALL Java_com_example_fuck_Fuck_numFromFuck
27
28   (JNIEnv *, jobject);
29
30 #ifdef __cplusplus
31
32 }
33
34 #endif
35
36 #endif

6、在 jni 目录中新建Fuck.c,实现5中生成的.h文件中的方法:

1 #include "com_example_fuck_Fuck.h"
2 JNIEXPORT jint JNICALL Java_com_example_fuck_Fuck_numFromFuck (JNIEnv *env, jobject obj)
3
4 {
5
6     return 42;
7
8 }

如果你直接从.h文件拷过来的代码,一定要记得更改参数。

7、在 jni 文件目录中新建文件 Android.mk 文件:

1 LOCAL_PATH := $(call my-dir)
2 include $(CLEAR_VARS)
3
4 LOCAL_MODULE    := fuck
5
6 LOCAL_SRC_FILES := Fuck.c
7
8 include $(BUILD_SHARED_LIBRARY)

LOCAL_MODULE:=fuck 表示要生成的so文件名为:libfuck.so,这就是在步骤2中需加载的动态链接库。

8、回到终端,cd 到工程目录,输入命令:【ndk-build】,没错的话会在工程目录 libs/armeabi 中生成文件:libfuck.so。

最后运行程序:

点击按钮button,textView的内容就会变成“42”。

over~

2014-03-08 

                                                           

【Android开发】NDK开发(1)-Hello World!

时间: 2024-10-02 10:09:07

【Android开发】NDK开发(1)-Hello World!的相关文章

android studio NDK 开发初探

android studio NDK 开发初探 环境配置 1)下载ndk 2)在android studio中配置ndk 路径 3)配置gradle 在gradle.properties中加入 android.useDeprecatedNdk=true配置 开启ndk 在开发过程中我们有时还会用到c++中到stl库这时我们就需要在build.gradle 中加入 defaultConfig { ndk { moduleName "jnitest" stl "stlport_s

Android之NDK开发

一篇文章: Android之NDK开发 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言.但这并不等同于“第三方应用只能使用Java”.在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台上,“Java+C”的编程方式是一直都可

【转】Android之NDK开发

原文网址:http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言.但这并不等同于“第三方应用只能使用Java”.在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应

Android之NDK开发(转)

Android之NDK开发 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言.但这并不等同于“第三方应用只能使用Java”.在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台上,“Java+C”的编程方式是一直都可以实现的.

Android之NDK开发(转载)

http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于 Android SDK进行开发的第三方应用都必须使用Java语言.但这并不等同于“第三方应用只能使用Java”.在Android SDK首次发布 时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全

Android JNI/NDK开发之基本姿势&lt;二&gt;

接着上篇文章Android JNI/NDK开发之基本姿势<一>,今天我们讲讲怎么调用native方法,以及native调用java层方法,上篇文章我们已经完成了编译工作,今天我们就来学习下怎么去调用,在这之前我们更改下之前的JniDemo.c采用C++语法来实现,满足下口味不同的人,更改如下: // // Created by Q.Jay on 2016/5/8. // #include <com_jay_ndkdemo_JniDemo.h> /* * Class: com_jay

android -------- 解决NDK开发中的 Method &#39;NewStringUTF&#39; could not be resolved

创建NDK项目时, .cpp文件中出现错误, Method 'NewStringUTF' could not be resolved 如图: 网上看了很多解决方式 项目右键->属性->c/c++常规->Code Analysis,选择"Use project settings"  中的方法无法被解析(Method cannot be resolved)取消选择,应用->确定,然后刷新.清理.刷新.build项目.搞定. 我的是这样改了之后也没成功 , 我在cle

Ubuntu 12.04 32位 eclipse android SDK NDK开发环境搭建

文章写作时间: 2017/04/05 一.软件包如下: 1.jdk 1.8(JAVA 开发及运行坏境) 2.eclipse(IDE工具) 3.ADT23.0(eclipse 开发安卓插件) 4.SDK24 (Android 开发环境) 5.NDK R10 (NDK开发环境) 下载链接 http://pan.baidu.com/s/1nvjYfnr 二.安装步骤 1.JDK安装 a.在/home/"用户名" 下新建文件夹"Java_JDK"(mkdir /home/&

Android Studio NDK开发

整理完Eclipse的NDK开发,再整理下Android Studio的.. 一个比较不错的百度网盘: http://pan.baidu.com/share/home?uk=2383159761  经常更新最新的Android方面的开发包,可以到里面下载到ndk的包 创建一个Android的工程,放一个TextView用于显示文字,功能很简单,从native层获取字符串并显示到TextView上 然后编写相关代码: public class MainActivity extends AppCom

Android JNI/NDK开发之基本姿势&lt;一&gt;

开发环境信息 列举下本篇文章编写的Demo基本信息 操作系统 Windows 10 家庭中文版 开发工具 Android Studio 2.1 SDK new NDK new 扫盲之SDK.JDK.NDK的区别 SDK 软件开发工具包:英语全称:Software Development Kit JDK Java语言的软件开发工具包:英语全称:Java Development Kit NDK 原生软件开发工具包:英语全称:Native Development Kit:被Google称为NDK 由此