Skip to content

Commit 498a0ea

Browse files
feat: Add support for x86_64 only systems (#328)
* feat: Add support for x86_64 only systems - remove OpenMAXL - Separate native-lib-alvr and native-lib-gvr since GVR does not have x86_64 support dont load it runtime * fix lint
1 parent c930868 commit 498a0ea

File tree

6 files changed

+60
-30
lines changed

6 files changed

+60
-30
lines changed

code/mobile/android/PhoneVR/app/CMakeLists.txt

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,45 +9,62 @@ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O3 -std=c++17 -g")
99
set(ANDROID_STL c++_static)
1010
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)
1111

12-
# find all src files
13-
file(GLOB_RECURSE MY_SRC
12+
file(GLOB_RECURSE LIB_SRC
1413
../../../../common/libs/ifaddrs/*.c
1514
../../../../common/libs/json/single_include/*.hpp
15+
)
16+
17+
file(GLOB_RECURSE GVR_SRC
1618
../../../../common/src/*.cpp
1719
../../../mobile-common/*.cpp
1820
)
1921

20-
# add my library
21-
add_library(native-lib SHARED
22-
src/main/cpp/native-lib.cpp
22+
add_library(native-lib-alvr SHARED
2323
src/main/cpp/alvr_main.cpp
24-
${MY_SRC}
24+
${LIB_SRC}
2525
)
2626

2727
set(libs_dir ${CMAKE_CURRENT_SOURCE_DIR}/libraries)
2828
set(alvr_build_dir ${CMAKE_CURRENT_SOURCE_DIR}/../ALVR/build/alvr_client_core)
2929

30-
target_include_directories(native-lib
31-
PUBLIC ./libraries/headers
30+
target_include_directories(native-lib-alvr
3231
PUBLIC ../../../../common/libs/asio/asio/include
3332
PUBLIC ../../../../common/libs/eigen/Eigen
3433
PUBLIC ../../../../common/libs/ifaddrs
3534
PUBLIC ../../../../common/libs/json/single_include/
3635

37-
# my headers
38-
PUBLIC ../../../../common/src
39-
PUBLIC ../../../mobile-common
40-
4136
# ALVR Headers
4237
PUBLIC ${alvr_build_dir}
4338
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../cardboard
4439
)
4540

46-
target_link_libraries(native-lib
47-
log android EGL GLESv3 mediandk OpenMAXAL #todo remove OpenMaxal?
48-
# ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/jni/${ANDROID_ABI}/libgvr.so # TODO: Remove from src tree
41+
target_link_libraries(native-lib-alvr
42+
log android EGL GLESv3 mediandk
4943
${alvr_build_dir}/${ANDROID_ABI}/libalvr_client_core.so
5044
${libs_dir}/jni/${ANDROID_ABI}/libGfxPluginCardboard.so
51-
${libs_dir}/jni/${ANDROID_ABI}/libgvr.so
52-
${libs_dir}/jni/${ANDROID_ABI}/libgvr_audio.so
5345
)
46+
47+
IF (NOT "${ANDROID_ABI}" STREQUAL "x86_64")
48+
add_library(native-lib-gvr SHARED
49+
src/main/cpp/native-lib.cpp
50+
${LIB_SRC}
51+
${GVR_SRC}
52+
)
53+
54+
target_include_directories(native-lib-gvr
55+
PUBLIC ./libraries/headers
56+
PUBLIC ../../../../common/libs/asio/asio/include
57+
PUBLIC ../../../../common/libs/eigen/Eigen
58+
PUBLIC ../../../../common/libs/ifaddrs
59+
PUBLIC ../../../../common/libs/json/single_include/
60+
61+
PUBLIC ../../../../common/src
62+
PUBLIC ../../../mobile-common
63+
)
64+
65+
target_link_libraries(native-lib-gvr
66+
log android EGL GLESv3 mediandk
67+
${libs_dir}/jni/${ANDROID_ABI}/libgvr.so
68+
${libs_dir}/jni/${ANDROID_ABI}/libgvr_audio.so
69+
)
70+
ENDIF ()

code/mobile/android/PhoneVR/app/build.gradle

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,6 @@ android {
5555
}
5656
}
5757

58-
//noinspection ChromeOsAbiSupport
59-
ndk.abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86'
60-
6158
defaultPublishConfig 'release'
6259
publishNonDefault true
6360
archivesBaseName = "PhoneVR-v$versionName"

code/mobile/android/PhoneVR/app/src/main/cpp/alvr_main.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
#include <unistd.h>
1111
#include <vector>
1212

13-
#include "common.h"
1413
#include "nlohmann/json.hpp"
1514

1615
using namespace nlohmann;
@@ -187,14 +186,13 @@ void inputThread() {
187186
}
188187
}
189188

190-
// extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *) {
191-
// CTX.javaVm = vm;
192-
// return JNI_VERSION_1_6;
193-
// }
189+
extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *) {
190+
CTX.javaVm = vm;
191+
return JNI_VERSION_1_6;
192+
}
194193

195194
extern "C" JNIEXPORT void JNICALL Java_viritualisres_phonevr_ALVRActivity_initializeNative(
196195
JNIEnv *env, jobject obj, jint screenWidth, jint screenHeight, jfloat refreshRate) {
197-
CTX.javaVm = jVM;
198196
CTX.javaContext = env->NewGlobalRef(obj);
199197

200198
uint32_t viewWidth = std::max(screenWidth, screenHeight) / 2;

code/mobile/android/PhoneVR/app/src/main/java/viritualisres/phonevr/ALVRActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class ALVRActivity extends AppCompatActivity
3333
implements PopupMenu.OnMenuItemClickListener, BatteryLevelListener {
3434

3535
static {
36-
System.loadLibrary("native-lib");
36+
System.loadLibrary("native-lib-alvr");
3737
}
3838

3939
private static final String TAG = ALVRActivity.class.getSimpleName() + "-Java";

code/mobile/android/PhoneVR/app/src/main/java/viritualisres/phonevr/InitActivity.kt

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22
package viritualisres.phonevr
33

44
import android.content.Intent
5+
import android.os.Build
56
import android.os.Bundle
67
import android.text.Html.FROM_HTML_MODE_LEGACY
78
import android.text.method.LinkMovementMethod
89
import android.text.util.Linkify
910
import android.util.Log
1011
import android.view.View
1112
import android.widget.TextView
13+
import android.widget.Toast
1214
import androidx.appcompat.app.AppCompatActivity
1315
import androidx.core.text.HtmlCompat
1416

@@ -40,7 +42,19 @@ class InitActivity : AppCompatActivity() {
4042
}
4143

4244
fun btOnClickPVRStreamer(view: View) {
43-
val intent = Intent(this, MainActivity::class.java)
44-
startActivity(intent)
45+
// Check if SYSTEM ABI supports other than x86_64 ABI, since libGVR has no support for
46+
// x86_64
47+
if (Build.SUPPORTED_ABIS.contains("x86") ||
48+
Build.SUPPORTED_ABIS.contains("arm64-v8a") ||
49+
Build.SUPPORTED_ABIS.contains("armeabi-v7a")) {
50+
val intent = Intent(this, MainActivity::class.java)
51+
startActivity(intent)
52+
} else {
53+
Toast.makeText(
54+
this,
55+
"Your device ONLY supports x86_64 ABI, which is not supported by GoogleVR",
56+
Toast.LENGTH_LONG)
57+
.show()
58+
}
4559
}
4660
}

code/mobile/android/PhoneVR/app/src/main/java/viritualisres/phonevr/MainActivity.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,11 @@ class MainActivity : AppCompatActivity() {
160160

161161
companion object {
162162
init {
163-
System.loadLibrary("native-lib")
163+
// check if android supports x86 abi
164+
if (Build.SUPPORTED_ABIS.contains("x86") ||
165+
Build.SUPPORTED_ABIS.contains("arm64-v8a") ||
166+
Build.SUPPORTED_ABIS.contains("armeabi-v7a"))
167+
System.loadLibrary("native-lib-gvr")
164168
}
165169
}
166170
}

0 commit comments

Comments
 (0)