文档章节

Mac下用Android Studio运行NDK samples

Charly张
 Charly张
发布于 2016/02/15 09:41
字数 689
阅读 403
收藏 4

打算将先前写的一个OBJ模型查看工具objViewer应用在Android平台上,借此了解一下Android平台的开发。现在做到了运行 NDK samples,将这中间遇到的问题记录一下。

Android环境

  • 系统: Mac OS 10.11.1
  • JDK: java version "1.8.0_65"
  • IDE: Android Studio 1.5.1
  • Android SDK: r24.4.1

JDK是系统自带的,其他的是官网下载的。按照说明一步步安装就是,被墙困住的可以百度一下,教程很多。我将下载的包放在了百度云上,下载请点击

Android开发所需安装包

NDK

配置

下载安装说明还是首推官网,不过很可惜还是被墙。NDK下载可以从上面的云盘中获得,中文指导可以看下面的两个链接:

可能遇到的问题

按上面配置说的运行例子,可能会遇到一些问题,下面按照我遇到的顺序说一下:

  • NDK插件错误

NDK插件错误

解决方法: 在项目根目录下创建配置文件gradle.properties,里面加入

android.useDeprecatedNdk=true

然后点击下图所示按钮,重新启动Gradle同步即可。 同步gradle按钮

  • NDK位置未指定

解决方法: 重新指定NDK位置,方法有二 1. 点击错误提示中的Select NDK,通过对话框选择 2. 在根目录的local.properties文件中添加

 ndk.dir=/Users/charlyzhang/AndroidStudioProjects/android-ndk-r10e (NDK位置)
```	

- #### 连接不上本地库
这个问题发生在例子*hello-gl2*中,Gradle同步没有问题,可连机编译时出现如下错误:
![连接不上本地库](https://static.oschina.net/uploads/img/201602/15093856_lBmE.png "在这里输入图片标题")

显然是没有连接上Native Lib。
网上有人说:
 - 在*Android.mk*中添加以下代码
	

LOCAL_LDLIBS := -llog -lGLESv2


没有解决我的问题,官方例子中已做好了这一步,问题依然在。

后来找到两个可行的**解决方法**,两个都是修改*app*文件夹下的*build.gradle*文件:

 1. 将**android{...}**中的**defaultConfig {...}**修改,添加如下连接信息:
 ![连接本地库解决方法1](https://static.oschina.net/uploads/img/201602/15093942_byBq.png "在这里输入图片标题")
	
 2. 编译**JNI本地库**,再在**android{...}**中添加如下本地库重定位信息:
 ![重定位本地库](https://static.oschina.net/uploads/img/201602/15094009_8kGQ.png "在这里输入图片标题")
 
 
编译JNI本地库也可以采用两种方式:
  -	手动编译:命令行进入*app/src/main/jni*文件夹,输入`ndk-build`命令;(***这与导入例子后在根目录用`ndk-build`命令构建工程不是一步***)	
  - 自动编译:在*build.gradle*文件的最后,**android{...}**以外添加如下代码:

task ndkBuild(type: Exec) { commandLine 'ndk-build', '-C',file('src/main/jni').absolutePath }

tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn ndkBuild }

 
## 参考
- http://blog.chinaunix.net/uid-20680966-id-4961553.html
- http://stackoverflow.com/questions/4455941/undefined-reference-to-android-log-print/27297135#27297135
 

© 著作权归作者所有

Charly张
粉丝 8
博文 22
码字总数 15101
作品 0
海淀
程序员
私信 提问
用Android Sutdio调试NDK

网上用Android Studio调试NDK的资料不多且分散。我将这几天踩过的坑及经验纪录一下,方便其它朋友。我将从导入一个NDK Samples中的项目开始。 演示代码放在GitHub上,每个坑为一次Submit。 ...

Charly张
2016/02/28
1K
0
Android应用开发相关下载资源(2014/12/14更新)

Android应用开发相关下载资源 官方终于发布了Android Studio正式版,Android Studio将会成为推荐使用的主要Android开发工具. (1)Android SDK (Android SDK主安装包,包含SDK Manager、AVD M...

robinjiang
2015/04/16
0
0
Android应用开发相关下载资源

官方终于发布了Android Studio正式版,Android Studio将会成为推荐使用的主要Android开发工具. (1)Android SDK (Android SDK主安装包,包含SDK Manager、AVD Manager、工具包tools,释放后的...

吴斌大大
2015/04/01
0
0
Android Studio 2.2 正式稳定版发布

盼星星望月亮,Android Studio 2.2 正式稳定版终于发布了(喜大普奔)!Android Studio 2.2 在今年的Google I/O上便发布了预览版。 废话少说,来看看正式稳定版更新的内容,本次发布的重点是...

NextLife
2016/09/20
34.9K
71
Android Studio 1.3 RC1 发布,Android NDK 支持预览

Android Studio 1.3 RC1 发布,此版本现已推送到 Beta 和 Canary 频道,终于发布 Android NDK C/C++ 支持预览了! Android NDK 支持只是预览特性,有待检验和完善。支持 Android NDK C/C++ ...

oschina
2015/07/10
8.3K
24

没有更多内容

加载失败,请刷新页面

加载更多

策略模式

策略模式封装的是算法,而状态模式侧重的对象状态的转变。 /** * 策略,定义计算报价算法的接口 */public interface Strategy { /** * 计算应报的价格 * @param goo...

铁骨铮铮
34分钟前
0
0
如何用JavaScript写一个区块链?

Part1实现一个基本的区块链 1.区块链 区块链是由一个个任何人都可以访问的区块构成的公共数据库。这好像没什么特别的,不过它们有一个有趣的属性:它们是不可变的。一旦一个区块被添加到区块...

骚年锦时
37分钟前
0
0
HTTP协议

HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP通信协议...

惊尘大人
39分钟前
0
0
Feign输出Info级别日志

背景   spring cloud netfix组件中,feign相关的日志默认是不会输出的,需要自定义配置才能输出,并且Feign只对Debug基本的日志做出响应, 实际业务需要输出Info级别的日志,所以需要做自定...

xiaomin0322
44分钟前
3
0
面向解决问题的java编程,spring boot,mybatis generator和坑-1starter

1、start一个spring boot项目 第一课我们也不能免俗,要从starter开始,spring boot的起始项目脚手架可以从spring boot官方starter生成地址开始:https://start.spring.io/ 这张图列出了一个...

wphmoon
45分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部