Mac下用Android Studio运行NDK samples

打算将先前写的一个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
 

转载于:https://my.oschina.net/chicboi/blog/614920

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值