精华内容
下载资源
问答
  • NDK开发

    2016-03-02 00:58:22
    NDK介绍NDK是一个原生开发工具集,即Native Development Kit,Google称为“NDK”,可实现应用程序使用本机代码的语言,如C和C + +。之前,Android平台的第三方应用程序均是依靠基于Java的Dalvik特制虚拟机进行开发的...

    NDK介绍

    NDK是一个原生开发工具集,即Native Development Kit,Google称为“NDK”,可实现应用程序使用本机代码的语言,如C和C + +。
    
    之前,Android平台的第三方应用程序均是依靠基于Java的Dalvik特制虚拟机进行开发的。原生SDK的公布可以让开发者更加直接的接触Android系统资源,并使用传统的C或C++语言编写程序,并在程序封包文件(.apks)中直接嵌入原生库文件。
    
    NDK的公布可以让开发者更加直接的接触Android系统资源,并使用传统的C或C++语言编写程序,并在程序封包文件(.apks)中直接嵌入原生库文件。NDK的公布让原来从事C语言开发者也参与到Android平台,也让java开发者方便的调用底层操作,特别是游戏开者,对引擎,速度等要求较高者,有了新的工具来实现所需功能,做出更加完美的程序。
    

    对于某些类型的应用程序,这可以是有益的,所以你可以重用现有的代码库,这些语言编写的,但大多数应用程序不需要的Android NDK。

    NDK安装

    网上较详细的教程:http://jingyan.baidu.com/article/3ea51489e7a9bd52e61bbac7.html
    下载:Android SDK Android NDK Android Studio 官方下载地址
    http://developer.android.com/ndk/downloads/index.html
    对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK;从r7开始,Google的提供了一个ndk-build.cmd的脚本,可以直接用它编译,而不需要使用Cygwin了。可以通过,配置path变量,直接在cmd下面运行ndk-build命令即可对android工程中的项目进行编译了。

    一、NDK设置选项

    准备:
    方法一

    1. Help-->Install New Software... --> Work with 输入 https://dl-ssl.google.com/android/eclipse/。
    2.在打开的窗口出现的列表中会出现Developer tools,将其全选。
    3.点击Next。若有提示就点击OK,一路下去。最后提示你重启Eclipse(ADT)。
      重启后发现 Window->References->Android 里面有NDK设置选项了。
    

    方法二

    下载“com.android.ide.eclipse.ndk_23.0.2.1259578.jar”
    到..\eclipse\plugins\com.android.ide.eclipse.ndk_23.0.2.1259578.jar"  重启eclipse
    

    ① 启动eclipse.exe
    ② 选择菜单栏上的[Window->Perferences->Android->NDK]设置 NDK Loaction 为ndk的路径如:
    E:\NDK\android-ndk32-r10-windows-x86\android-ndk-r10
    这里写图片描述

    添加环境变量 NDK_ROOT 为: E:\NDK\android-ndk32-r10-windows-x86\android-ndk-r10
    在环境变量 PATH 下追加 :%NDK_ROOT%;
    这里写图片描述
    这里写图片描述

    二、如何编译HelloJni

    导入官方的demo —HelloJni

    右键工程 Android Tools 下面的 Add Native Support

    这里写图片描述

    此时右键该项目,进入properties,在Builders里多了CDT Builder

    这里写图片描述
    http://stackoverflow.com/questions/20200545/error-program-ndk-build-not-found-in-path
    这里写图片描述
    1、“Ctrl+B”build工程;
    2、右键->Run As..->Android Application…

    展开全文
  • android studio 2.2 NDK开发经验总结及相关错误汇总(旧版NDK开发转新版NDK开发经验)

              android studio 2.2版本之后使用NDK变得简单,在新建项目的时候勾选 "include c++" 会自动为我们创建好NDK工程。当然前提需要你自己配置好NDK路径,和配置SDK是一样的,也是在配置项目SDK界面中配置。(选中项目 -> F4 -> SDK ... -> 第三个选择你的NDK安装位置,若没有需要提前下载。因为这些资源网上有大量重复的文章,所以这里不再赘述,直奔主题)


            创建好后就可以发现和以前版本不一样的是多出了 CMake 文件,目录下放置 C/C++ 文件夹的名称也变成了 cpp。所有的.c .cpp .h文件都建在这里,当在这儿新建成功后,需要在 CMake 文件中的 add_library () 里,找到 有一个不带#注释的路径 src/main/cpp/native-lib.cpp ,在这里将你新建的 C/C++ 文件路径写一下(就是改一下最后的文件名,一定要注意大小写!大小写!大写!),路径之间用回车就行,不用加逗号隔开。


    示例的 MainActivity 中 static{} ""里的 名字,对应 CMake 中library 名字,ctrl+f 搜索一下,如果要换都换掉就行。


    示例是在 MainActivity 类中用的C++,当然你可以在任意位置使用,和示例类一样,static{} 等都加上就可以写了。新建的方法名字要带 native,也模仿示例方法就行。创建成功后是红色的,alt+enter 选择第一个就可以自动创建了,创建成功后.java文件和.h文件方法的前面有一个 两个方向的箭头,如果出现就说明对了。然后你就可以在 c文件和cpp文件书写代码了。为了确保正确性,cv就可以了,然后在C/C++下面写代码就可以了,正确的话.java .h .c/.cpp方法名字前面的一个 箭头 都会变成两个 两个方向的箭头。


    PS:NDK中错误各种各样,出错了不要着急,实在改不好就创建一个新的NDK工程一点点加。如果你是把别人的 C/C++ 文件复制过来的,切记要更改 方法名字中的类。可以找到 java 文件,写一个 native 方法,回车跳到 C/C++ 文件中,复制一下类名到你复制过来的方法名字上改一下类名,再重新编译就OK。如果复制的别人的,一定要仔细!再仔细!


    写这篇博客一个是为了记录下自己的小教训,再一个就是让更多NDK初学者少走弯路。如果有什么经验和不明白的地方请留言,共努力。

    展开全文
  • 本文主要讲解了在Windows环境下如何使用ndk-build构建工具来进行NDK开发,以及ndk-build构建工具在Android Stuido中的快捷工具配置。 在上一篇文章《Android NDK开发(一) 使用CMake构建工具进行NDK开发》中,...

    本文主要讲解了在Windows环境下如何使用ndk-build构建工具来进行NDK开发,以及ndk-build构建工具在Android Stuido中的快捷工具配置。

    在上一篇文章《Android NDK开发(一) 使用CMake构建工具进行NDK开发》中,我们学习了如何使用CMake构建工具来进行NDK开发,但是一些老项目还是使用的ndk-build构建工具进行开发的,今天我们就来学习一下如何使用ndk-build构建工具。

    1.环境搭建

    在SDK Tools中安装NDK开发环境(File > Settings > Appearance & Behavior > System Settings > Android SDK > SDK Tools):

    安装NDK开发环境

    新建一个普通的Android项目,在main目录下新建jni目录,在此目录下编写原生代码:

    新建jni目录

    在main目录下新建jniLibs目录,此目录为Android Stuido加载so文件的默认目录,看下项目结构:

    项目结构

    2.快捷键配置

    打开File > Settings > Tools > External Tools选项,点击【+】按钮添加生成jni头文件以及ndk-build命令的快捷工具:

    生成头文件

    生成头文件

    • Name:javah-jni

      工具名称

    • Program:$JDKPath$/bin/javah

      javah所在的路径,$JDKPath$代表在环境变量中配置的JDK路径。

    • Parameters:-jni -encoding UTF-8 -d $ModuleFileDir$\src\main\jni $FileClass$

      命令参数:

      • -jni代表生成JNI样式的标头文件,文件名为当前包名+类名($FileClass$

      • -encoding代表编码格式为UTF-8

      • -d代表指定头文件的输出路径为jni目录($ModuleFileDir$\src\main\jni )

    • Working directory:$ModuleFileDir$\src\main\java

      工作目录,$ModuleFileDir$为当前module的路径。

    javah用法: 
      javah [options] <classes>
    其中, [options] 包括:
      -o <file>                输出文件 (只能使用 -d 或 -o 之一)
      -d <dir>                 输出目录
      -v  -verbose             启用详细输出
      -h  --help  -?           输出此消息
      -version                 输出版本信息
      -jni                     生成 JNI 样式的标头文件 (默认值)
      -force                   始终写入输出文件
      -classpath <path>        从中加载类的路径
      -cp <path>               从中加载类的路径
      -bootclasspath <path>    从中加载引导类的路径
    <classes> 是使用其全限定名称指定的
    (例如, java.lang.Object)。

    NDK构建

    NDK构建

    ndk-build的配置和javah-jni类似,其中C:\Tools\NDK\android-ndk-r14b\ndk-build.cmd为ndk-build构建工具的路径,需要按照实际NDK安装路径进行修改。

    如何调用

    右击项目选择External Tools:

    使用快捷工具

    3.NDK开发

    准备工作都做完了,下面进入正题,看下MainActivity:

    public class MainActivity extends AppCompatActivity {
    
        // 加载native-lib,不加lib前缀
        static {
            System.loadLibrary("native-lib");
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            // 将获取的字符串显示在TextView上
            TextView tv = findViewById(R.id.sample_text);
            tv.setText(stringFromJNI());
        }
    
        /**
         * native-lib中的原生方法
         */
        public native String stringFromJNI();
    }

    首先加载native-lib库,然后调用其中的stringFromJNI方法,将其返回的字符串显示在TextView上,此时还没有native-lib库,别急,继续往下看:

    对着MainActivity的类名右击鼠标,选择External Tools > javah-jni,控制台执行完命令后,会在jni目录生成一个头文件:

    生成头文件

    看下生成的头文件:

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class com_yl_ndkdemo_MainActivity */
    
    #ifndef _Included_com_yl_ndkdemo_MainActivity
    #define _Included_com_yl_ndkdemo_MainActivity
    
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     com_yl_ndkdemo_MainActivity
     * Method:    stringFromJNI
     * Signature: ()Ljava/lang/String;
     */
    JNIEXPORT jstring JNICALL Java_com_yl_ndkdemo_MainActivity_stringFromJNI
            (JNIEnv *, jobject);
    
    #ifdef __cplusplus
    }
    #endif
    #endif

    可以看到第一行注释写到:这是自动生成的,不要去修改它。好,不改就不改,Go on:

    在jni目录中新建cpp类native-lib.cpp:

    #include "com_yl_ndkdemo_MainActivity.h"
    
    JNIEXPORT jstring JNICALL Java_com_yl_ndkdemo_MainActivity_stringFromJNI
            (JNIEnv *env, jobject) {
        return env->NewStringUTF("Hello from C++");
    }

    引用上文中生成的头文件,返回一个字符串给Java层,方法名是通过 Java_包名类名方法名 的方式命名的。

    接着在jni目录下创建Android.mk和Application.mk配置文件,分别来看看:

    Android.mk

    # 当前路径
    LOCAL_PATH := $(call my-dir)
    
    # 清除LOCAL_XXX变量
    include $(CLEAR_VARS)
    
    # 原生库名称
    LOCAL_MODULE := native-lib
    
    # 原生代码文件
    LOCAL_SRC_FILES =: native-lib.cpp
    
    # 编译动态库
    include $(BUILD_SHARED_LIBRARY)

    在app的build.gradle文件中关联Android.mk:

    android {
        ...
    
        externalNativeBuild {
            ndkBuild {
                path 'src/main/jni/Android.mk'
            }
        }
    }

    相当于执行了【Link C++ Project with Gradle】:

    在Gradle配置中关联C++项目

    Application.mk

    # 原生库名称
    APP_MODULES := native-lib
    
    # 指定机器指令集
    APP_ABI := armeabi armeabi-v7a arm64-v8a x86 x86_64 mips mips64

    到这里基本的开发流程就已经完成了,运行程序看下效果:

    运行效果

    分析一下APK文件,可以看到so文件已经打包进去了:

    分析APK文件

    4.编译so文件

    对着jni目录右击鼠标,选择External Tools > ndk-build,会在main目录下生成libs和obj目录,编译出的so文件就在libs目录下:

    编译so文件

    将so文件拷贝到jniLibs目录下就可以正常使用了,也可以在app的build.gradle文件中设置so文件的路径。

    注意:编译出的so文件就相当于java中的jar包,上文中的jni就相当于library,两者不要重复使用。

    5.遇到的问题

    在ndk-build的过程中遇到了下面这行警告,但是没有影响编译so文件,没有找到好的解决方法,有知道的同学可以留言告诉我,多谢!

    Android NDK: WARNING: Unsupported source file extensions in jni/Android.mk for module native-lib

    5.写在最后

    源码已经上传到GitHub上了,欢迎Fork,觉得还不错就Start一下吧!

    GitHub传送门

    展开全文
  • NDK开发(一)————如何在Android Studio下进行NDK开发

    万次阅读 多人点赞 2018-01-07 14:42:36
    在AS中进行NDK开发之前,我们先来简单的介绍几个大家都容易搞懵的概念:  1. 到底什么是JNI,什么是NDK?  2. 何为“交叉编译”?  先看什么是JNI?JNI的全称就是Java Native Interface,即java本地开发接口。...

        在AS中进行NDK开发之前,我们先来简单的介绍几个大家都容易搞懵的概念:

            1. 到底什么是JNI,什么是NDK?

            2. 何为“交叉编译”?

        先看什么是JNI?JNI的全称就是Java Native Interface,即java本地开发接口。可能大家和我一样,一听到接口什么的就犯懵:“我也知道这是java本地开发接口的意思,但它具体是个什么意思我还是搞不明白。”其实JNI它就是一种协议,一说协议,那它就是对某种东西的一个规范和约束,说的好听一点就是标准化。如果你想用我这个东西,那你必须要遵守我这边的规范。像http协议一样,http作为超文本传输协议,它规范了我们上网时从客户端到服务器端等一系列的运作流程。正因为如此,我们才能畅通无阻的上网。那么换做JNI也一样,只不过JNI这个协议是用来沟通java代码和外部的本地代码(c/c++)。也就是说有了JNI这个协议,我们才能够随意的让java代码调用C/C++的代码,同样C/C++的代码也可以调用java的代码。如果没有这个协议作为支撑,那么java和C/C++代码想要相互调用是不可能的。下面通过两个图简单看一下JNI协议在系统架构中处于什么位置

                                         

        在上图中,上层绿色的部分一般都是用Java代码写的,下层橘黄色的部分一般都是用C/C++代码写的。可以看出,正式由于有了中间JNI的存在我们才可以在Application层通过JNI调用下层中的一些东西。了解了JNI的概念后,我们再看看NDK,NDK(Native Development Kit)就比较好理解了,它就是一个本地开发的“工具包”。Java开发要用到JDK,Android开发要用到SDK,那我们在Android中要进行native开发,也要用到它对应的工具包,即NDK。通俗的来讲,NDK就是帮助我们可以在Android应用中使用C/C++来完成特定功能的一套工具。 NDK的作用有很多,我们简单的列举两个,比如:

            1.首先NDK可以帮助开发者“快速”开发C(或C++)的动态库。

            2.其次,NDK集成了“交叉编译器”。使用NDK,我们可以将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率。

        上面提到了“交叉编译”,我们最后再解释一下什么是交叉编译。大家都知道编译器在将中间代码连接成当前计算机可执行的二进制程序时,连接程序会根据当前计算机的CPU、操作系统的类型来转换。而根据运行的设备的不同,CPU的架构也是不同,大体有如下三种常见的CUP架构:

    • arm结构 :主要在移动手持、嵌入式设备上。我们的手机几乎都是使用的这种CUP架构。
    • x86结构 : 主要在台式机、笔记本上使用。如Intel和AMD的CPU 。
    • MIPS架构:多用在网关、猫、机顶盒等设备。
        若想在使用了基于x86架构CPU的操作系统上编译出可以在基于arm结构CPU的操作系统上运行的代码,就必须使用交叉编译。所以综上所述:交叉编译就是在一个平台下(比如:CPU架构为X86,操作系统为Windows)编译出在另一个平台上(比如:CPU架构为arm,操作系统为Linux)可以执行的二进制代码。Google提供的NDK就可以完成交叉编译的工作。
        好了,上面的基本概念介绍完以后,我们正式进入AS下NDK开发的讲解。
        1.首先,你需要把NDK下载下来NDK下载。下载完成后解压到任意目录即可(路径中不要带有中文字符)。我的就直接放在D盘的ndk目录下:
                      
        2.在AS中为你的项目配置NDK。首先新建一个Android工程JNIDemo,Ctrl + shift + alt + s打开Project Structrue把我们刚才下载好的NDK配置进去,点击OK。

        3.配置好NDK后,简单的为我们的项目布局文件添加一个TextView和一个Button,当点击Button的时候,我们通过调用底层自己写好的C/C++代码来返回一个字符串,最后呈现在TextView上。
    activity_main.xml布局代码:
    ```
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <TextView
            android:id="@+id/textview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            />
        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="button"/>
    </LinearLayout>
    ```
    
    MainActivity.java
    ```
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            final TextView textview = findViewById(R.id.textview);
            Button button = findViewById(R.id.button);
    
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    textview.setText(JNIUtils.sayHelloFromJNI());
                }
            });
        }
    }    	
    ```

    上面代码中的JNIUtils.sayHelloFromeJNI()就是我们在与MainActivity相同的包中新建JNIUtils类后在里面编写的native方法。如下所示:

    可以看到我们上面的sayHelloFromJNI()方法显示的是警告红色。把鼠标放到上面,它会提示我们对应的JNI头文件没有查找到。那么接下来我们要做的就是去生成与这个sayHelloFromJNI()方法所对应的头文件。
        4.生成头文件。快捷键alt + F12调出AS下的Terminal窗口,在Terminal命令行窗口中输入如下几条指令,回车:

    前面两个cd命令没什么好说的,就是先进入当前项目的app目录下,然后再进入Java目录下。我们重点说一下最后一条命令:javah -d ../jni com.example.zhangxudong.jindemo.JNIUtils。首先,要生成Java类对应的头文件我们就必须要用到javah这个命令,其次-d表示生成一个目录,那生成一个什么样的目录,具体又在哪里去生成这个目录呢?后面的../jni告示了我们。../表示在当前目录的上一层目录,我们当前在Java目录下,那么它的上层目录就是main目录了。而jni就表示我们生成的目录的名称。所以整个../jni就表示在main目录下生成一个名为jni的目录。最后一个com.example.zhangxudong.jindemo.JNIUtils就是我们在上面新建的JNIUtils的完整类名了。执行完这几天指令后,刷新一下目录我们就可以在main目录下看到jni这个目录,并且在它里面生成了我们JNIUtils类所对应的头文件。进入头文件中,代码是如下这个样子:
    ```
    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class com_example_zhangxudong_jnidemo_JNIUtils */
    
    #ifndef _Included_com_example_zhangxudong_jnidemo_JNIUtils
    #define _Included_com_example_zhangxudong_jnidemo_JNIUtils
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     com_example_zhangxudong_jnidemo_JNIUtils
     * Method:    sayHelloFromJNI
     * Signature: ()Ljava/lang/String;
     */
    JNIEXPORT jstring JNICALL Java_com_example_zhangxudong_jnidemo_JNIUtils_sayHelloFromJNI
      (JNIEnv *, jclass);
    #ifdef __cplusplus
    }
    #endif
    #endif
    ```
        5.头文件生成以后,我们就需要编写我们的C/C++代码了。右键jni目录---->new--->C/C++ Source File

    输入要新建的C/C++文件名称JNIHello,这里我们用C++来编写,所以Type为.cpp,如果你选择用C来编写,那么Type选为.c,点击ok。这里说一下,在我们进行NDK开发的时候,选择用C还是C++,在编写代码的时候除了C和C++基本的语法不同外,还是有许多不同地方需要注意。我们后续会慢慢介绍。这里先默认跟着我的步骤来。
                               
    JNIHello.cpp代码如下:
    #include "com_example_zhangxudong_jnidemo_JNIUtils.h"
    JNIEXPORT jstring JNICALL Java_com_example_zhangxudong_jnidemo_JNIUtils_sayHelloFromJNI
            (JNIEnv *env, jclass jclass){
    return env->NewStringUTF("Hello World From JNI!!!!!");
    }

    可以看到我们首先需要把原来生成的JNIUtlis对应的头文件引入进来,下面的代码基本都是从com_example_zhangxudong_jnidemo_JNIUtils.h中复制粘贴过来的一部分,然后稍加修改。修改的地方主要有sayHelloFromJNI的两个参数和里面的简单实现,参数方面就是加了env和jclass两个字段。函数里面的实现呢,就是简单的返回一个字符串“Hello World From JNI!!!!!”,至于为什么这么写,我会在下一篇文章进行讲解,大家现在就需要知道如果要在这里返回一个字符串就必须要通过env->NewStringUTF("xxxxxx");这行代码。
        6.上面的搞定以后,我们需要在app的build.gradle中的defaultConfig中加入如下代码。它表示项目在编译时生成的动态库的名字。



    最后,我们还需在JNIUitls中加载我们生成的动态库:
    ```
    public class JNIUtils {
        static {
            System.loadLibrary("JNIHello");
        }
        public static native String sayHelloFromJNI();
    }
    ```
    我们把加载动态库的代码放到静态代码块中,就是表示在JNIUtils这个类在加载的时候就去加载我们的动态库。
        7.经过上面的5步,关于如何在AS中进行简单的NDK所需要的步骤差不多就讲完了。不过还有最后一点需要注意。到这里我们基本就可以执行一下我们的项目了,现在运行一下项目试一试......不出意外的话项目是build不成功的,它会报如下的错误:
    ```
    Error:Execution failed for task ':app:compileDebugNdk'.
    > Error: Flag android.useDeprecatedNdk is no longer supported and will be removed in the next version of Android Studio.  Please switch to a supported build system.
      Consider using CMake or ndk-build integration. For more information, go to:
       https://d.android.com/r/studio-ui/add-native-code.html#ndkCompile
       To get started, you can use the sample ndk-build script the Android
       plugin generated for you at:
       E:\JNIDemo\app\build\intermediates\ndk\debug\Android.mk
      Alternatively, you can use the experimental plugin:
       https://developer.android.com/r/tools/experimental-plugin.html
      To continue using the deprecated NDK compile for another 60 days, set 
      android.deprecatedNdkCompileLease=1515317190556 in gradle.properties
    ```
    因为我这里用的是Android Studio3.0,报出的这个错误很可能和原来版本的AS不同,以前出现类似错误的时候,我们的解决方案一般都是在gradle.properties中添加一行这样的代码:android.useDeprecatedNdk=true就搞定了。但是AS换为3.0后你可以再试一下这种方案,肯定是不行的,它会提示你“Flag android.useDeprecatedNdk is no longer supported and will be removed in the next version of Android Studio.  Please switch to a supported build system.”大体意思就是最新的AS已经不支持useDeprecatedNdk这个标记了,并且在后续版本的AS中,它将被移除。所以我们新的解决方案就是按照它的提示在gradle.properties中添家android.deprecatedNdkCompileLease=1515317190556这行代码。

        最后我们运行一下项目,点击button,效果如下。可以看到,我们成功的通过java代码调用了C++的代码,并返回Hello World From JNI!!!!!这个字符串。
                                           


       
    那我们生成的动态库(.so文件)都在哪里呢?点开app--->build--->intermediates--->ndk--->debug--->libs,可以看到各个平台对应的动态库都已经生成了。
                                      
        关于NDK在Android Studio下的开发先讲到这里,希望大家多多支持可怜
    展开全文
  • Android Studio 在原有项目上NDK开发以及新建NDK开发项目 这里的开发实例是目前项目中使用的一个串口操作,具体的c文件的编写根据你的项目实现; 搭建编译环境 编写调用c文件的方法并编译 对class文件编译生成.h...
  • 源头 由于androidstudio 不断地在完善ndk的开发,...1.从创建项目进行ndk开发 2.在原有项目的基础上进行ndk开发。 3.为什么生成的jni文件 无法关联 4.为什么c++代码没有自动提示 准备工作 下载一些ndk需要的工
  • Unity 与 NDK开发

    2020-06-15 23:59:39
    文章目录Unity 与 C++NDK开发动态链接库NDK Unity 与 C++ C#是Unity的官方推荐的开发语言。如果某些逻辑需要C++支持以提供高性能特性,或者需要C++去跟底层硬件或者操作系统级别的接口交互,那么就需要用C#去调用C++...
  • 2018年的第一篇文章,主要讲解了JNI、NDK的一些概念以及在AS 3.0环境下如何使用CMake构建工具来进行NDK开发。 1.了解一些概念 JNI(Java Native Interface): Java原生接口,是Java和其他原生代码语言(例如...
  • Android NDK开发

    2017-07-05 14:58:58
    前面文章有介绍NDK开发,但具体的开发流程和方式还不了解。通过大神的讲解会对NDK开发有深入的了解。下面是具体的博客地址,今天先看一下,等后面有空,具体研究一下,并结合自己的感受再写个文章。NDK-JNI实战教程...
  • NDK开发
  • Android NDK开发入门

    2019-05-01 13:37:27
    Android NDK开发之从环境搭建到Demo级十步流 NDK调用java代码 Android NDK开发之从Java与C互调中详解JNI使用(一) ndk官网: https://developer.android.google.cn/ndk/samples github上的代码: ...
  • Android NDK开发篇(三):NDK开发步骤

    千次阅读 2014-04-15 11:08:37
    开始学习NDK开发,首先以输出Hello World实例开始讲解。 NDK的开发步骤: 1、在Java文件中声明native方法
  • Android NDK : NDK开发概要 通过NDK可以做什么? 1 . 在java代码中调用C++的库 2. 创建可执行的程序 (不推荐使用NDK来做这个) 3 通过gdb来调试native 程序 什么时候需要native code? 一些常用的API和...
  • AndroidStudio搭建NDK开发环境

    万次阅读 2019-03-03 19:41:41
    两年前在公司电脑上搭建过NDK开发环境,很久没有使用过了。最近,闲来无事,在笔记本上搭一下Ndk开发环境,记录一下AndroidStudio搭建DNK开发环境的过程。 一、下载NDK 去开发者网站下载ndk。地址:...
  • 你们再做ndk开发的时候是用Android studio开发的吗 但是写c代码的时候没有代码提示呀? 所以我在mac上用xcode进行开发 进行ndk-build的时候很蛋疼 因为项目目录名称必须是jni 刚刚接触ndk开发 关于开发工具这块有点...
  • NDK开发-Android Studio+gradle-experimental开发ndk
  • Android NDK开发,使用ndk-build编译

    万次阅读 2018-09-08 16:52:59
    一,开发环境 二,配置NDK环境变量: 三,在自己项目创建本地方法: 四,手动创建本地方法fromJNIString()对应的.h头文件 五,在jni目录下创建c或者c++文件; 六,配置build.gradle(Model:App) 七,编写...
  • Ndk开发笔记

    千次阅读 2014-12-23 00:10:28
    Ndk开发,Android本地应用程序开发,从apk->framework-> 系统运行库层(Libraries)开发过程
  • NDK开发步骤

    千次阅读 2016-04-09 12:30:50
    1、下载ndk开发包,下载地址:http://pan.baidu.com/s/1miQus2k 2、配置环境变量,把ndk文件放置的地址配置到path上,目的是为了能够执行ndk-bulid命令例如 配置完成后在cmd命令行中输入ndk-bulid,如果出现...
  • Android JNI/NDK 开发

    2018-01-19 13:48:36
    JNI/NDK 开发入门 JNI/NDK 开发指南 NDK各个版本下载 AndroidStudio使用Jni实例
  • Android NDK 开发

    2015-11-01 14:00:17
    记录Android NDK开发相关知识,前期环境配置 自行谷歌Android NDK 提供的组件Android NDK 是包含一个API、交叉编译器、链接程序、调试器、构建工具、文档和示列应用程序的综合工具集,以下是Android NDK的一些主要...
  • NDK开发第二蛋 Hello NDK

    2016-03-13 08:32:28
    一个简单的NDK开发小demo,还有配置NDK项目的方法
  •     JNI/NDK开发指南之Eclipse集成NDK开发环境并使用    在前面的章节里面,我们已经了解了JNI开发所需要掌握的相关基本知识。那么在本篇文章里面将要介绍Eclipse集成NDK开发环境。 配置使用步骤 ...
  • NDK开发基础①使用Android Studio编写NDK

    千次阅读 2017-06-07 16:19:42
    NDK开发基础①使用Android Studio编写NDK
  • Android studio配置NDK开发环境

    万次阅读 2017-08-15 16:47:28
    为了提高代码效率,增强软硬件的结合,JNI 开发为...而ndk开发 工具包,所以我们要安装这个工具包,就像 我们Android 开发的 sdk 一样。下面就讲一下as 下 ndk 环境的配置,分四步 1.第一步下载 ndk 开发包...
  • 使用CMake来进行Android NDK开发

    千次阅读 2017-09-26 17:16:44
    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 前言Android NDK开发可能在平时的项目开发中不常用到,但是这并不代表其不重要, 相反NDK开发是Android开发人员的进阶过程中必须要掌握的技能。 Android ...
  • Android Studio NDK开发

    千次阅读 2018-01-16 22:34:51
    Android Studio 2.2或更高版本,ndk开发列子 下载 NDK 和构建工具 要为您的应用编译和调试原生代码,您需要以下组件: Android 原生开发工具包 (NDK):这套工具集允许您为 Android 使用 C 和 C++ 代码,并提供...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,570
精华内容 5,828
关键字:

ndk开发