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是系统自带的,其他的是官网下载的。按照说明一步步安装就是,被墙困住的可以百度一下,教程很多。我将下载的包放在了百度云上,下载请点击
NDK
配置
下载安装说明还是首推官网,不过很可惜还是被墙。NDK下载可以从上面的云盘中获得,中文指导可以看下面的两个链接:
可能遇到的问题
按上面配置说的运行例子,可能会遇到一些问题,下面按照我遇到的顺序说一下:
NDK插件错误
解决方法: 在项目根目录下创建配置文件gradle.properties,里面加入
1 | android.useDeprecatedNdk=true |
然后点击下图所示按钮,重新启动Gradle同步即可。
NDK位置未指定
解决方法: 重新指定NDK位置,方法有二- 点击错误提示中的Select NDK,通过对话框选择
- 在根目录的local.properties文件中添加
1 | ndk.dir=/Users/charlyzhang/AndroidStudioProjects/android-ndk-r10e (NDK位置) |
连接不上本地库
这个问题发生在例子hello-gl2中,Gradle同步没有问题,可连机编译时出现如下错误:
显然是没有连接上Native Lib。
网上有人说:
- 在Android.mk中添加以下代码
1 | LOCAL_LDLIBS := -llog -lGLESv2 |
没有解决我的问题,官方例子中已做好了这一步,问题依然在。
后来找到两个可行的解决方法,两个都是修改app文件夹下的build.gradle文件:
将android{…}中的defaultConfig {…}修改,添加如下连接信息:
编译JNI本地库,再在android{…}中添加如下本地库重定位信息:
编译JNI本地库也可以采用两种方式:
- 手动编译:命令行进入app/src/main/jni文件夹,输入
ndk-build
命令;(这与导入例子后在根目录用ndk-build
命令构建工程不是一步) - 自动编译:在build.gradle文件的最后,android{…}以外添加如下代码:
1 | task ndkBuild(type: Exec) { |