配置EasyAR Android SDK(非Unity)¶
这篇文章介绍如何使用EasyAR package配置EasyAR非Unity的Android工程。
如果你需要使用EasyAR Unity package,请阅读 这篇文章 了解使用package的配置,或 这篇文章 了解Unity样例的使用。
如果你需要运行EasyAR非Unity的Android样例,请阅读 这篇文章 。
EasyAR支持在Eclipse以及Android Studio 1.x 或 2.x版本中运行,以下配置适用于Android Studio 1.5及以上版本。
安装需求¶
JDK 1.7 或更新版本
Android NDK
Android SDK with Build Tools 至少需要版本20.0.0
推荐安装最新版本的NDK和SDK
你可以在Eclipse或Android Studio中使用EasyAR。我们建议和样例中一样使用Android Studio 1.5,这样配置最为简单。
注意:EasyAR目前不支持纯Java 的API,你需要同时编写Java 和C++ 代码来使用EasyAR 。可以参考样例中的实现。使用EasyAR C++类是相对简单的,可以不需要担心指针和内存管理问题。我们会在今后的版本中加入这个接口。
如果要像样例中一样在Android Studio 1.5中使用EasyAR,你需要如下配置
JDK 1.7 或更新版本
Android Studio 1.5 或更新版本
Android NDK r10e
Android SDK with Build Tools 至少需要版本20.0.0
Android API 23 (可从Android SDK Manager中下载)
注意:EasyAR SDK 是支持在Android Studio 1.4 和以下版本,以及Eclipse中引用和编译的。我们选择Android Studio 1.5 作为样例创建工具的原因是,对于同时支持Android Java代码和C++代码的集成配置和调试,它是目前最简单,设置最少的工具。
导入EasyAR Android SDK¶
在Eclipse和Android Studio中导入EasyAR会有不同,而且在某些工具中你可能会需要写Android.mk。这里我们会介绍在Android Studio 1.5中的配置细节。
首先你需要根据`这篇官方文档`_修改build.gradle。
在上面的修改之后,你可以添加EasyAR所需要的配置。
添加EasyAR native头文件路径
model {
android.ndk {
cppFlags.add("-I${file("/path/to/EasyARSDK/package/include")}".toString())
}
}
你可能也会希望配置这些常用的内容
model {
android.ndk {
cppFlags.add("-DANDROID")
cppFlags.add("-fexceptions")
cppFlags.add("-frtti")
stl = "gnustl_static"
ldLibs.add("log")
ldLibs.add("GLESv2")
}
}
添加EasyAR native library依赖
model {
android.sources {
main {
jni {
dependencies {
library file("/path/to/EasyARSDK/package/Android/libs/armeabi-v7a/libEasyAR.so") abi "armeabi-v7a"
}
}
}
}
}
添加EasyAR Java library依赖
dependencies {
compile fileTree(include: ['*.jar'], dir: '/path/to/EasyARSDK/package/Android/libs')
}
最后你会得到一个类似于这样的build.gradle
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.2"
defaultConfig.with {
applicationId = "cn.easyar.samples.helloar"
minSdkVersion.apiLevel =15
targetSdkVersion.apiLevel = 22
versionCode = 1
versionName = "1.0"
}
}
android.buildTypes {
release {
minifyEnabled = false
proguardFiles.add(file("proguard-rules.pro"))
}
}
android.ndk {
moduleName = "HelloARNative"
cppFlags.add("-I${file("../../../package/include")}".toString())
cppFlags.add("-DANDROID")
cppFlags.add("-fexceptions")
cppFlags.add("-frtti")
stl = "gnustl_static"
ldLibs.add("log")
ldLibs.add("GLESv2")
}
android.productFlavors {
create("arm") {
ndk.with {
abiFilters.add("armeabi-v7a")
}
}
}
android.sources {
main {
jni {
dependencies {
library file("../../../package/Android/libs/armeabi-v7a/libEasyAR.so") abi "armeabi-v7a"
}
}
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: '../../../package/Android/libs')
}
如果你在使用Eclipse或Android Studio 1.4及以下版本,你可能会需要写Android.mk来编译C++代码。你可以参照上面的配置找到相关配置内容。
在AndroidManifest中添加权限¶
EasyAR需要以下这些权限,缺少权限将会导致初始化失败并黑屏。
android.permission.CAMERA
android.permission.INTERNET
将这些添加到AndroidManifest中。
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.easyar.samples.helloar" >
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
初始化EasyAR¶
使用EasyAR.initialize来初始化EasyAR。你可以添加初始化函数到你的activity中如下,
protected void onCreate() {
EasyAR.initialize(this, key);
}
其它代码¶
剩下的就是写EasyAR的逻辑以及其它代码。EasyAR同时需要Java和C++代码。你可以参考EasyAR的样例来实现。