diff --git a/mode/src/processing/mode/android/AndroidBuild.java b/mode/src/processing/mode/android/AndroidBuild.java
index f363be81..3df97236 100644
--- a/mode/src/processing/mode/android/AndroidBuild.java
+++ b/mode/src/processing/mode/android/AndroidBuild.java
@@ -239,11 +239,15 @@ protected File createProject(boolean external, String password)
// Create the 'src' folder with the preprocessed code.
srcFolder = new File(tmpFolder, module + "/src/main/java");
- binFolder = srcFolder; // Needed in the the parent JavaBuild class
+ binFolder = srcFolder; // Needed in the parent JavaBuild class
if (processing.app.Base.DEBUG) {
Platform.openFolder(tmpFolder);
}
+ // Create the 'cpp' folder within 'src/main'
+ File cppFolder = new File(srcFolder.getParentFile(), "cpp");
+ cppFolder.mkdirs(); // Create the folder if it doesn't exist
+
manifest = new Manifest(sketch, appComponent, mode.getFolder(), false);
// build the preproc and get to work
@@ -262,7 +266,9 @@ protected File createProject(boolean external, String password)
createAppModule(module);
}
}
-
+ //check if cpp folders exist:
+ if(cppFolder.exists()) System.out.println("Cpp Directory created successfully.");
+ else System.out.println("Error while creating Cpp Dir.");
return tmpFolder;
}
diff --git a/mode/templates/VRBuild.gradle.tmpl b/mode/templates/VRBuild.gradle.tmpl
index 3837b763..886d4dba 100644
--- a/mode/templates/VRBuild.gradle.tmpl
+++ b/mode/templates/VRBuild.gradle.tmpl
@@ -12,6 +12,13 @@ android {
targetSdkVersion @@target_sdk@@
versionCode @@version_code@@
versionName "@@version_name@@"
+
+ ndk {
+ abiFilters 'armeabi-v7a', 'arm64-v8a'
+ }
+ externalNativeBuild.cmake {
+ arguments "-DANDROID_STL=c++_shared"
+ }
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
@@ -43,13 +50,20 @@ android {
aaptOptions {
noCompress "tflite"
noCompress "lite"
- }
+ }
+ externalNativeBuild.cmake {
+ path "CMakeLists.txt"
+ }
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:@@appcompat_version@@'
implementation project('libs:google-vr')
+ implementation project('libs:sdk')
+ implementation 'com.google.android.gms:play-services-vision:20.1.3'
+ implementation 'com.google.protobuf:protobuf-javalite:3.19.4'
+ implementation 'com.google.android.material:material:1.6.1'
implementation files('libs/processing-core.jar')
implementation files('libs/vr.jar')
implementation 'com.google.protobuf.nano:protobuf-javanano:3.1.0'
@@ -57,3 +71,28 @@ dependencies {
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
testImplementation 'junit:junit:4.13'
}
+
+// The dependencies for NDK builds live inside the .aar files so they need to
+// be extracted before NDK targets can link against.
+task extractNdk(type: Copy) {
+ if (file("${project.rootDir}/mode/libraries/vr/libs/sdk/build/outputs/aar/sdk-release.aar").exists()) {
+ copy {
+ from zipTree("${project.rootDir}/mode/libraries/vr/libs/sdk/build/outputs/aar/sdk-release.aar")
+ into "libraries/"
+ include "jni/**/libGfxPluginCardboard.so"
+ }
+ copy {
+ from "${project.rootDir}/sdk/include/cardboard.h"
+ into "libraries/"
+ }
+ }
+}
+
+task deleteNdk(type: Delete) {
+ delete "libraries/jni"
+ delete "libraries/cardboard.h"
+}
+tasks.register("prepareKotlinBuildScriptModel"){}
+
+build.dependsOn(extractNdk)
+clean.dependsOn(deleteNdk)
diff --git a/mode/templates/VRManifest.xml.tmpl b/mode/templates/VRManifest.xml.tmpl
index 0c550cfa..ea0b21f3 100644
--- a/mode/templates/VRManifest.xml.tmpl
+++ b/mode/templates/VRManifest.xml.tmpl
@@ -7,6 +7,7 @@
+