在集成EasyAR的坑校坑,踩了老多...分享下!P坡埂撒踪!希望對大家有所幫助9А大渤!
我本次集成的是非Unity 1.3.1 從官網(wǎng)下載SDK 點這去下載SDK ,
下載完注冊一個key
首先創(chuàng)建一個新項目掸绞,不多說了泵三,然后配置NDK
點擊tools->android->sdk_manager->sdk tools 選擇CMake,LLDB,NDK 個選擇框,然后應用下載衔掸。
NDK下載解壓可能需要些時間烫幕,卡住不動的情況多等一會,要耐心....
NDK 搞定后修改你的Gradle版本為2.8
第一步敞映,在你項目的項目的Gradle的中修改直接替換成(是替換)
classpath'com.android.tools.build:gradle-experimental:0.4.0'
第二步较曼,在 gradle-wrapper.properties中修改Gradle 版本為2.8 替換下面一行代碼,
然后sync Now 同步振愿。
distributionUrl=https://services.gradle.org/distributions/gradle-2.8-all.zip
接下來在App Gradle 中配置
apply plugin: 'com.android.model.application' 首標題加model
NDK 搞定后修改你的Gradle版本為2.8
第一步捷犹,在你項目的項目的Gradle的中修改直接替換成(是替換)
classpath'com.android.tools.build:gradle-experimental:0.4.0'
[圖片上傳中弛饭。。萍歉。(2)]
第二步侣颂,在 gradle-wrapper.properties中修改Gradle 版本為2.8 替換下面一行代碼,
distributionUrl=https://services.gradle.org/distributions/gradle-2.8-all.zip
然后sync Now 同步枪孩。
接下來在App Gradle 中配置 下面是我的gradle 按將
apply plugin: 'com.android.model.application' 首標題加model
使用model將android 模塊包起來
model {
android {
compileSdkVersion = 25
buildToolsVersion = "25.0.1"
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"
}
}
}
}
}
// EasyAR的依賴
compile fileTree(include: ['*.jar'], dir: '../../../package/Android/libs')
gradle 在編譯中遇到的異常:
首先是 apply plugin: 'com.android.application' 修改為 apply plugin: 'com.android.model.application',接下來的配置都需要包裝在model{}中,配置gradle需要注意以下幾點:
a憔晒、形如applicationId "xxxxxx的形式,都換成xxxx=yyy,例如applicationId = "com.xxx.xxx"蔑舞,否則會編譯會報錯Error:Cause: org.gradle.api.internal.ExtensibleDynamicObject;
b拒担、buildTypes 需要從android{} 中取出來,寫成android.buildTypes{}的形式,否則會出現(xiàn)這種錯誤:Error:Unable to load class 'org.gradle.nativeplatform.internal.DefaultBuildType_Decorated';
c攻询、release中要使用如上使用的方式澎蛛,否則Error:No signature of method: org.gradle.model.ModelMap.minifyEnabled() is applicable for argument types: (Java.lang.Boolean) values: [false];
d、defaultConfig{}修改成defaultConfig.with{},否則會報Error:Cause: com.android.build.gradle.managed.AndroidConfig_Impl;
e蜕窿、defaultConfig修改為defaultConfig.with{}谋逻,同時minSdkVersion.apiLevel= 19,targetSdkVersion.apiLevel = 23,否則會報Unable to load class com.android.build.gradle.managed.ProductFlavor_Impl;
f桐经、需要增加compileOptions.with{},我使用的是JavaVersion.VERSION_1_7毁兆,否則會Bad class file magic or version
g、最后在android.ndk {} 中類似cppFlags 的添加使用 += 的方式阴挣,否則需要使用 .add的方式气堕。
配置完成后將下載的SDK解壓找到 HelloARNative 文件,將里面的 jni,assets 復制到src -> main 目錄下畔咧,接下來打開jni中的 helloar.cc
最后java 中的三個主類茎芭,GLView, Renderer誓沸,MainActivity梅桩,全部cp,
在MainActivity 中替換你自己的key 然后就可以運行了。 當掃描到assets 目錄下的圖片時會出現(xiàn)一個彩色的方框拜隧,可以往assets 中添加需要的圖片宿百,進行掃描。也可以在 helloar.cc 文件中 找到
if 判斷的部分就是掃描成功后的方法洪添,注釋部分則是生成了彩色框此處代碼執(zhí)行會回調(diào)到main 目錄下的Renderer類的onDrawFrame(GL10 gl) 方法垦页,(注意此處會回調(diào)多次)。
就這些干奢。希望對第一次搞這個的童鞋有些幫助H浮!!1∩丁貌矿!