• 【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 });

    4build该工程,生成 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 
                                                               
  • 相关阅读:
    CSU-ACM2020寒假集训比赛2
    js动画(一)
    响应式基本知识
    移动web基本知识
    premere cs4绿色版 安装 并且 视频导出 讲解
    样式重置
    html5图片标签与属性
    我眼中的科研
    Chrome浏览器上无法使用西瓜影音???
    双系统引导菜单设置
  • 原文地址:https://www.cnblogs.com/youthpasses/p/3844967.html
Copyright © 2020-2023  润新知