使用NDK进行开发android_ndk abi

编辑: admin           2017-15-03         

    本教程主要分享:ndk abi,讲解《使用NDK进行开发android》主题,请详细阅读逆火下载站编辑分享关于ndk abi的详细教程。

    在eclips中配置NDK路径
    在eclipse中点击菜单栏window-Perferences,配置NDK的路径。


    在工程中添加native lib
    新建一个空白的Android工程,在根目录上点击右键Adnroid Tools - Add Native Support...

    在弹出的对话框中输入要新建的lib的名称,点击Finish,在工程目录下会多出一个jni文件夹,里面有一个空白的cpp文件和一个Android.mk文件

    Android.mk文件的内容是
    LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_MODULE := TestJni
    LOCAL_SRC_FILES := TestJni.cpp
    include $(BUILD_SHARED_LIBRARY)
    TestJni就是要加载的lib的名称,LOCAL_SRC_FILES 是资源文件的路径。
    hello jni

    MainActivity.java代码如下:

    复制代码代码如下:
    package com.example.testjni;
    import android.os.Bundle;
    import android.app.Activity;
    import android.widget.TextView;
    public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    TextView textView = new TextView(this);
    textView.setText(helloFromJni());
    setContentView(textView);
    }

    public native String helloFromJni();

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

    TestJni.cpp代码如下:

    复制代码代码如下:
    #include <jni.h>
    extern "C" jstring Java_com_example_testjni_MainActivity_helloFromJni(JNIEnv *env, jobject thiz) {
    return env->NewStringUTF("Hello From Jni");
    }

    直接运行程序,可以在Console窗口中看到NDK build的输出

    有一点要注意:由于我使用的是x86的Android虚拟机来运行,所有使用的是x86的编译器。制定编译器的方法是在jni目录新建一个Application.mk的文件,输入以下内容
    #APP_ABI := armeabi
    APP_ABI := x86
    #APP_ABI := armeabi armeabi-v7a x86 mips mips-r2 mips-r2-sf
    #APP_ABI := all
    APP_STL := stlport_static
    如果是普通arm处理器的Android手机,使用APP_ABI := armeabi,如果是x86处理器的,使用APP_ABI := x86,等等。
    如果APP_ABI := all,会编译所有指令的so。
    运行结果如下:

    至于C/C++的编译是怎么实现的,我们可以查看一下工程的Properties

    在Builders里面有多了两项,一个是CDT Builder,一个是Scanner Configuration Builder。
    现有的工程添加Builder
    如果工程里面已经有jni目录了,但是没有配置C/C++的编译器,高手们可以自己添加Builder,对于我这种爱投机取巧的小菜鸟,工程右键菜单,新添加一个空白的so,然后再删除,CDT Builder和Scanner Configuration Builder就出来了。

  •   4
  • 相关文章

    电脑教程:教你如何选择浏览器快速上网
    javac不是内部或外部命令
    kotlin能取代java吗?
    protel dxp 2004软件无法打开PCB文件(图也是用DXP2004画的)
    protel dxp使用教程详细解读【下篇】
    protel dxp使用教程详细解读【中篇】
    protel dxp使用教程详细解读【上篇】
    水星路由器设置密码_水星路由器怎么改密码 水星路由器
    打印机无法打印全部_打印机无法打印的原因与解决办法
    cf赤焰尼泊尔活动_cf跑男归来活动网址 cf跑男归
Copyright ©2009-2021 逆火网训All Rights Reserved.     滇ICP备2023009294号-57