使用Android Studio自带的NDK编译JNI

/**********************************************************************************
 *                      使用Android Studio自带的NDK编译JNI
 * 说明:
 *     省得自己另外去下载NDK,编译JNI,麻烦。
 *
 *                                          2017-4-30 深圳 龙华民治樟坑村 曾剑锋
 *********************************************************************************/

一、参考文档:
    1. NDK环境搭建-windows篇
        http://www.jianshu.com/p/708e6bf68ae9
    2. Mistake in documentation/error message?
        https://github.com/android-ndk/ndk/issues/264
    3. 编译一个模块时出现undefined reference to `__android_log_print'
        http://bbs.csdn.net/topics/360020076    4. Android Studio 之 JNI 开发详解        http://www.jianshu.com/p/bc2b46381d88    5. 向您的项目添加 C 和 C++ 代码        https://developer.android.com/studio/projects/add-native-code.html?hl=zh-cn
二、error:
    1. 错误1:
        1. 错误现象:
            D:\zengjf\SourceCode\Android\android_app\Test>ndk-build
            C:/Users/zengjf/AppData/Local/Android/Sdk/ndk-bundle/build//../build/core/build-binary.mk:687: Android NDK: Module zengjf depends on undefined modules: android_runtime nativehelper cutils utils log
            C:/Users/zengjf/AppData/Local/Android/Sdk/ndk-bundle/build//../build/core/build-binary.mk:701: *** Android NDK: Aborting (set APP_ALLOW_MISSING_DEPS=true to allow missing dependencies)    .  Stop.

            D:\zengjf\SourceCode\Android\android_app\Test>
        2. 解决方法
            1. C:\Users\zengjf\AppData\Local\Android\Sdk\ndk-bundle\build\core\build-binary.mk
            2. 修改内容:
                ...
                ifdef undefined_libs
                    $(call __ndk_warning,Module $(LOCAL_MODULE) depends on undefined modules: $(undefined_libs))

                    # https://github.com/android-ndk/ndk/issues/208
                    # ndk-build didn't used to fail the build for a missing dependency. This
                    # seems to have always been the behavior, so there's a good chance that
                    # there are builds out there that depend on this behavior (as of right now,
                    # anything using libc++ on ARM has this problem because of libunwind).
                    #
                    # By default we will abort in this situation because this is so completely
                    # broken. A user may define APP_ALLOW_MISSING_DEPS to "true" in their
                    # Application.mk or on the command line to revert to the old, broken
                    # behavior.
                    APP_ALLOW_MISSING_DEPS=true    // add this line
                    ifneq ($(APP_ALLOW_MISSING_DEPS),true)
                        $(call __ndk_error,Aborting (set APP_ALLOW_MISSING_DEPS=true to allow missing dependencies))
                    endif
                endif
                ...
    2. 错误2:
        1. 错误现象:
            undefined references to `__android_log_print' follow
        2. 解决方法:
            Android.mk文件中加入LOCAL_LDLIBS += -llog即可

 

时间: 2024-10-26 11:38:38

使用Android Studio自带的NDK编译JNI的相关文章

Android Studio实现带边框的圆形头像

本文实例为大家分享了Android Studio实现带边框的圆形头像的具体代码,供大家参考,具体内容如下 效果显示: (没有边框的) (有边框的) 1.创建自定义ImagView控件 (1).没有边框的 package chenglong.activitytest.pengintohospital.utils; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitma

【Android】android studio ndk使用例子

首先要配置好必须的环境,详细见我的前几篇的博客 http://blog.csdn.net/leilba/article/details/47206231 http://blog.csdn.net/leilba/article/details/47381365 1.为工程设置ndk路径 打开android studio,右键工程,选择open Module Setting 2.在class文件中写native方法(将会用c或c++实现的方法) 3.生成.h文件 然后用android studio

JNI编程基础(二)——Android Studio NDK开发

由于笔者目前的工作是Android开发,所以在JNI开发系列博客中穿插一篇AndroidStudio NDK开发介绍. 随着Android Studio 2.2的推出,Android Studio的NDK开发支持Cmake和ndk-build两种方式,简化了Android Studio上NDK开发流程,提升了开发效率.接下来就介绍下两种开发方式. 1. CMake CMake是一个跨平台的编译(安装)工具,支持通过用较为简单的语言来描述编译(安装)过程,最后输出适配不同平台的makefile货p

mac android studio NDK 安装使用(不用翻墙)

弄了好几天,终于是在MAC上将NDK环境配出来了,赞一个.先放个合影 之前捣鼓了好久,一直提示jni.h或者是string.h文件不存在,后来发现是NDK版本太低了,果断换了一个就运行ok了. 因为google被墙,在不翻墙的情况下是很难下载到最新的NDK的,我翻了好多地方终于是被我找到了 没有下载新版本NDK的可以来我的云盘下载:http://pan.baidu.com/s/1i3zWC9R#path=%252F 里面有整套的mac上安装android环境的资源包括android studio

android studio-Android Studio报错,好像也编译不了

问题描述 Android Studio报错,好像也编译不了 好像是res文件夹下有问题, 但是我检查了 没事啊,请大神指教!!! Error:Execution failed for task ':app:mergeDebugResources'. Some file crunching failed, see logs for details 解决方案 文件处理失败了,具体是什么,可能需要查看logs,你先全部保存一下,可能会提示位置,然后截个res部分的贴上来图看一下 解决方案二: Andr

Android studio 下JNI编程实例并生成so库的实现代码

最近需要使用JNI编程,学了下JNI,并且在Android Studio下实现了一个小demo.这期间有一些坑,还好都解决了,想分享出来,希望大家少走弯路.本文中采用的平台是Windows,NDK环境已经搭建好,这方面资料很多,大家可以自行百度. 本文分为两个部分: 1.如何通过编写Jni实现native方法的调用. 2.怎样生成.so动态库提供给第三方使用. 以下是正文: 一,编写jni文件,实现本地方法 1,建立一个新工程,只有一个MainActivity,里面加载库文件并且调用若干本地方法

使用新版Android Studio检测内存泄露和性能

内存泄露,是Android开发者最头疼的事.可能一处小小的内存泄露,都可能是毁于千里之堤的蚁穴. 怎么才能检测内存泄露呢?网上教程非常多,不过很多都是使用Eclipse检测的, 其实1.3版本以后的Android Studio 检测内存非常方便, 如果结合上MAT工具,LeakCanary插件,一切就变得so easy了. 熟悉Android Studio界面 工欲善其事,必先利其器.我们接下来先来熟悉下Android Studio的界面 一般分析内存泄露, 首先运行程序,打开日志控制台,有一个

Android Studio添加第三方库的注意事项_Android

前言 很多人开始安卓入门的学习,都会选择Google官方的Android Studio作为开发工具,由于他跟之前的Eclipse不太一样,所以出的问题也比较多.主要是导入的问题和android studio自带的android 高版本SDK所带来的问题. 首先说一说将第三方库导入Android Studio的方法,以xUtils为例,导入jar包的方式,比较简单,再次不做介绍.我门主要讲的是library库文件引入的方式. 第一步我们要做的是将要引入的包,放在我们的工程目录下,如下图 然后在我们

Android Studio添加第三方库的注意事项

前言 很多人开始安卓入门的学习,都会选择Google官方的Android Studio作为开发工具,由于他跟之前的Eclipse不太一样,所以出的问题也比较多.主要是导入的问题和android studio自带的android 高版本SDK所带来的问题. 首先说一说将第三方库导入Android Studio的方法,以xUtils为例,导入jar包的方式,比较简单,再次不做介绍.我门主要讲的是library库文件引入的方式. 第一步我们要做的是将要引入的包,放在我们的工程目录下,如下图 然后在我们