还是觉得Android文档太少,在之前的Android 中aidl如何import文件牢骚过一次了已经。于是我来尽微薄之力~

我理解的NDK是允许你把程序的一部分代码用C或C++来实现,通过JNI与Java代码交互。不要想整个程序都用C/C++完成,Android是不允许的,你的程序必须运行在Dalvik虚拟机里。

至于是什么任务需要用C/C++,那就不是我要討論的了,比如下面我要演示的这个傻逼程序就真不适合用NDK

安装NDK

你首先要保证自己的Android SDK已经安装完成,然后下载NDK,随便你解压到哪里。下面的$NDK代表你解压后的NDK路径

新建一个Android项目

如果你用Eclipse或者用Netbeans就不用我说了,记得项目名称是fuckGFW。

android create project -n fuckGFW -t 8 -p fuckgfw -k fuck.gfw -a FuckGFW

然后在项目根目录下建立一个jni文件夹,C/C++代码就要放在那里面

修改FuckGFW.java文件

你得懂JNI,我也是现学的。只是很普通的的JNI操作,内容如下

package fuck.gfw;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class FuckGFW extends Activity{  static {    System.loadLibrary("fuckGFW");  }  @Override  public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    TextView tv = new TextView(this);    tv.setText(fuck("GFW"));    setContentView(tv);  }  private native String fuck(String what);}

创建fuckgfw.c

还是得懂JNI才行,可以看看JNI简单入门。这个文件要放在jni目录里

#include <jni.h>#include <stdlib.h>#include <stdio.h>JNIEXPORT jstring JNICALL Java_fuck_gfw_FuckGFW_fuck(JNIEnv *env, jobject obj, jstring what) {  const jbyte *l_what;  char  *result;  l_what = (*env)->GetStringUTFChars(env, what, NULL);  if (l_what == NULL) {    return NULL; /* OutOfMemoryError already thrown */  }  result = malloc(strlen(l_what) + 6);  if (result == NULL) {    return NULL;  }  sprintf(result, "fuck %s", l_what);  return (*env)->NewStringUTF(env, result);}

创建Android.mk

这个也要放在jni目录下。Android.mk就是一个Makefile罢了,不过是Android专用的,推荐查看NDK中的文档ANDROID-MK.TXT,很简洁易懂

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES := fuckgfw.cLOCAL_MODULE := fuckGFWinclude $(BUILD_SHARED_LIBRARY)

编译运行

打开你的emulator,在项目目录里运行

$NDK/ndk-buildant install

于是fuck GFW就已经出现了

更多相关文章

  1. Android双击返回键退出程序的实现方法
  2. Android运行时权限,6.0—9.0多版本,多终端(手机,TV盒子)130行代码一劳
  3. Android 开发者从0到1发布一个微信小程序的采坑过程——使用帮助
  4. 从零开始--系统深入学习android(实践-让我们开始写代码-Android框
  5. android 使用handler更新ui,使用与原理分析详解(附上代码以及截图)
  6. Android和iPhone应用程序界面布局示例
  7. Android小项目之十二 设置中心的界面
  8. Android应用程序的开发

随机推荐

  1. Android将HTML文本显示在webView控件中
  2. android 将图片转换成二进制,再讲二进制转
  3. Android WebView加载本地Html文件
  4. Android seekbar 滑动时上方显示进度
  5. 【Android】高德地图2DMap,隐藏“高德地图
  6. android studio 3.0 修改release生成的ap
  7. Android BaseAdapter使用及listview优化
  8. android 登录前检查网络状态
  9. Android Studio批量打包
  10. Android再按一次退出程序实现方法