zoukankan      html  css  js  c++  java
  • NDK 入门实例

    在Eclipse中配置NDK自动编译环境builders

    Android学习笔记——NDK中C++标准库、STL的配置;Include其他头文件

      参考了百度经验里面的部分内容,发现里面还有些细节没有写出来,其中遇到不少问题,所以就在这里写出来和大家分享!

      参考链接   Android NDK入门开发实例

      1、先下载  android-ndk32-r10b-windows-x86 我是32位的机子,将其放在一个没有空格的路径中,因为之后在配置cygwin的时候要求路径不能有空格。

      2、在cygwin官网上下载  cygwin   安装  ,这个网上有教程,注意不要少了make (我在网上看到的一篇教程里面就是少了make)

      安装完后进行测试   :打开cygwin  输入 make -v  gcc -v进行测试,出现下面的内容说明安装成功。

      

      3、配置cygwin 

      如果没有配置cygwin的话,在生成so文件的时候会出现  $NDK/ndk-build  :no such file or directory的错误

      在安装目录的home里面找到bash_profile

      在里面加入

    NDK=/cygdrive/g/androidconfig/android-ndk32-r10b-windows-x86/android-ndk-r10b export NDK

      这里要注意两点:1、不能使用换行符

              2、路径中不能带有空格,否则在运行cygwin 的时候会提示错误

      配置好后 ,运行cygwin 输出  cd $NDK   会进入安装路径,说明配置成功

      4、编写android程序

      首先新建一个项目,在布局页面添加一个按钮即可,如下图所示,图中有两个控件,一个是textview,另一个是button。

                                                               Android NDK入门开发实例

                                       Android NDK入门开发实例

          新建一个类,并写一个native方法,我写的方法是,public native int add(int a, int b);

          实现传入的2个整形数字相加,这里的native方法不需要实现

                    Android NDK入门开发实例

        打开本次项目的路径,里面有2个类,其中JNITest.java便是有native方法的类,下面需要先把这个java编程成class文件然后再编译成.h头文件           

                                    Android NDK入门开发实例

         

    1. 在CMD中依次输入以下代码:

      cd C:UsersAdministratorworkspaceJNITestsrc(切换到项目的src目录下)

      javac comliutawjnitestJNITest.java(编译有native方法的java类)

      javah com.liutaw.jnitest.JNITest(从class生成.h头文件)

      Android NDK入门开发实例
      Android NDK入门开发实例
    2. 2

      在项目的根目录新建一个jni文件夹,并把刚才javah生成的 com_liutaw_jnitest_JNITest.h文件复制到jni目录下

      Android NDK入门开发实例
    3. 3

      打开com_liutaw_jnitest_JNITest.h,把定义的方法都改为实现,并把文件名的后缀名改为.c,注意方法的参数要加上,以下是修改前后的对比图。

      Android NDK入门开发实例
      1. 4

        在jni文件夹下新建一个Android.mk文件,输入以下内容,注意更改成你自己的库文件名和原文件名称

        LOCAL_PATH := $(call my-dir)

        include $(CLEAR_VARS)

        LOCAL_MODULE    := hellojni(库文件名)

        LOCAL_SRC_FILES := com_liutaw_jnitest_JNITest.c(原文件名称)

        include $(BUILD_SHARED_LIBRARY)

        2个文件完成之后应该是下面这张图。

        Android NDK入门开发实例
        Android NDK入门开发实例
         
        这里还需要新建一个Application.mk,原文中没有提到。
        新建Application.mk。在里面输入

        APP_ABI := all
        APP_PLATFORM := android-9

        这里需要注意的是  假如使用APP_ABI  是x86  那么会出现  is  not a valid ELF Object错误。这里为了方便直接使用all

        APP_ABI

        在默认情况下,NDK会使用'armeabi' ABI 来生成二进制机器码,这是基于ARMv5TE的浮点运算CPU,这可以通过使用此变量来选项不同的ABI(Application Binary Interface).
        例如:支持基于armv7 FPU指令集的设备:
        APP_ABI := armeabi-v7a
        支持IA-32指令集:
        APP_ABI := x86
        同时支持三种:APP_ABI := armeabi armeabi-v7a x86
        从NDK-r7版本后,同时支持三种还可以这样写:APP_ABI := all
         
        最后打开cygwin切换到项目目录
         
         
         
        最后补上onclick事件   运行OK!
  • 相关阅读:
    Android开发环境搭建&第一个Android工程建立
    Pytest学习笔记8参数化
    Pytest学习笔记3fixture
    Pytest学习笔记2setup和teardown
    Pytest学习笔记1快速入门
    Pytest学习笔记4assert断言
    Pytest学习笔记9失败重跑
    Pipenv虚拟环境
    Pytest学习笔记7skip和skipif的使用
    Pytest学习笔记6自定义标记mark
  • 原文地址:https://www.cnblogs.com/maydow/p/4672992.html
Copyright © 2011-2022 走看看