mirror of
https://github.com/overte-org/overte.git
synced 2025-04-14 07:27:04 +02:00
Fixes for Android
This commit is contained in:
parent
32494a8e24
commit
8cac98545a
4 changed files with 37 additions and 20 deletions
|
@ -63,8 +63,6 @@
|
||||||
</activity>
|
</activity>
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
<!-- Tell the system this app requires OpenGL ES 3.0. -->
|
|
||||||
<uses-feature android:glEsVersion="0x00030000" android:required="true" />
|
|
||||||
<uses-feature android:name="android.software.vr.mode" android:required="true"/>
|
<uses-feature android:name="android.software.vr.mode" android:required="true"/>
|
||||||
<uses-feature android:name="android.hardware.vr.high_performance" android:required="true"/>
|
<uses-feature android:name="android.hardware.vr.high_performance" android:required="true"/>
|
||||||
|
|
||||||
|
|
|
@ -457,9 +457,7 @@ task cleanDependencies(type: Delete) {
|
||||||
task generateAssetsFileList() {
|
task generateAssetsFileList() {
|
||||||
doLast {
|
doLast {
|
||||||
def assetsPath = "${appDir}/src/main/assets/"
|
def assetsPath = "${appDir}/src/main/assets/"
|
||||||
//def assetsPath = "/Users/cduarte/dev/workspace-hifi/hifiparallel/build_android_hifiqt59/interface/apk/assets/"
|
|
||||||
def addedByAndroidDeployQtName = "--Added-by-androiddeployqt--/"
|
def addedByAndroidDeployQtName = "--Added-by-androiddeployqt--/"
|
||||||
//def addedByAndroidDeployQtName = "--Added-by-androiddeployqt--/"
|
|
||||||
|
|
||||||
def addedByAndroidDeployQtPath = assetsPath + addedByAndroidDeployQtName
|
def addedByAndroidDeployQtPath = assetsPath + addedByAndroidDeployQtName
|
||||||
|
|
||||||
|
@ -468,7 +466,6 @@ task generateAssetsFileList() {
|
||||||
throw new GradleScriptException("Failed to create directory " + addedByAndroidDeployQtPath, null);
|
throw new GradleScriptException("Failed to create directory " + addedByAndroidDeployQtPath, null);
|
||||||
}
|
}
|
||||||
def outputFilename = "/qt_cache_pregenerated_file_list"
|
def outputFilename = "/qt_cache_pregenerated_file_list"
|
||||||
//def outputFilename = "/qt_cache_pregenerated_file_list2"
|
|
||||||
def outputFile = new File(addedByAndroidDeployQtPath + outputFilename);
|
def outputFile = new File(addedByAndroidDeployQtPath + outputFilename);
|
||||||
Map<String, List<String>> directoryContents = new TreeMap<>();
|
Map<String, List<String>> directoryContents = new TreeMap<>();
|
||||||
|
|
||||||
|
@ -483,10 +480,6 @@ task generateAssetsFileList() {
|
||||||
fileName += "/"
|
fileName += "/"
|
||||||
}
|
}
|
||||||
|
|
||||||
/*println ("full: [" + file.getAbsolutePath() + "]\n\t"
|
|
||||||
+ "path: [" + pathName + "]\n\t"
|
|
||||||
+ "name: [" + fileName + "]\n\t");*/
|
|
||||||
|
|
||||||
if (!directoryContents.containsKey(pathName)) {
|
if (!directoryContents.containsKey(pathName)) {
|
||||||
directoryContents[pathName] = new ArrayList<String>()
|
directoryContents[pathName] = new ArrayList<String>()
|
||||||
}
|
}
|
||||||
|
@ -497,16 +490,12 @@ task generateAssetsFileList() {
|
||||||
DataOutputStream fos = new DataOutputStream(new FileOutputStream(outputFile));
|
DataOutputStream fos = new DataOutputStream(new FileOutputStream(outputFile));
|
||||||
for (Map.Entry<String, List<String>> e: directoryContents.entrySet()) {
|
for (Map.Entry<String, List<String>> e: directoryContents.entrySet()) {
|
||||||
def entryList = e.getValue()
|
def entryList = e.getValue()
|
||||||
//stream << it.key() << entryList.size();
|
|
||||||
fos.writeInt(e.key.length()*2); // 2 bytes per char
|
fos.writeInt(e.key.length()*2); // 2 bytes per char
|
||||||
fos.writeChars(e.key);
|
fos.writeChars(e.key);
|
||||||
fos.writeInt(entryList.size());
|
fos.writeInt(entryList.size());
|
||||||
//println ("dir: " + e.key + " size: " + entryList.size());
|
|
||||||
for (String entry: entryList) {
|
for (String entry: entryList) {
|
||||||
fos.writeInt(entry.length()*2);
|
fos.writeInt(entry.length()*2);
|
||||||
fos.writeChars(entry);
|
fos.writeChars(entry);
|
||||||
//println("\tentry: " + entry);
|
|
||||||
//stream << entry;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fos.close();
|
fos.close();
|
||||||
|
|
|
@ -12,7 +12,7 @@ function(JOIN VALUES GLUE OUTPUT)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
if ANDROID OR (NOT DEV_BUILD)
|
if (ANDROID OR NOT DEV_BUILD)
|
||||||
set(INTERFACE_QML_QRC ${CMAKE_CURRENT_BINARY_DIR}/qml.qrc)
|
set(INTERFACE_QML_QRC ${CMAKE_CURRENT_BINARY_DIR}/qml.qrc)
|
||||||
generate_qrc(OUTPUT ${INTERFACE_QML_QRC} PATH ${CMAKE_CURRENT_SOURCE_DIR}/resources GLOBS *.qml *.qss *.js *.html *.ttf *.gif *.svg *.png *.jpg)
|
generate_qrc(OUTPUT ${INTERFACE_QML_QRC} PATH ${CMAKE_CURRENT_SOURCE_DIR}/resources GLOBS *.qml *.qss *.js *.html *.ttf *.gif *.svg *.png *.jpg)
|
||||||
endif()
|
endif()
|
||||||
|
@ -82,7 +82,7 @@ qt5_wrap_ui(QT_UI_HEADERS "${QT_UI_FILES}")
|
||||||
# add them to the interface source files
|
# add them to the interface source files
|
||||||
set(INTERFACE_SRCS ${INTERFACE_SRCS} "${QT_UI_HEADERS}" "${QT_RESOURCES}")
|
set(INTERFACE_SRCS ${INTERFACE_SRCS} "${QT_UI_HEADERS}" "${QT_RESOURCES}")
|
||||||
|
|
||||||
if (NOT DEV_BUILD)
|
if (ANDROID OR NOT DEV_BUILD)
|
||||||
list(APPEND INTERFACE_SRCS ${INTERFACE_QML_QRC})
|
list(APPEND INTERFACE_SRCS ${INTERFACE_QML_QRC})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -267,6 +267,8 @@ include_directories("${PROJECT_SOURCE_DIR}/src")
|
||||||
|
|
||||||
if (ANDROID)
|
if (ANDROID)
|
||||||
#set(ANDROID_PLATFORM_QT_LIBRARIES Qt5::WebView)
|
#set(ANDROID_PLATFORM_QT_LIBRARIES Qt5::WebView)
|
||||||
|
find_library(ANDROID_LOG_LIB log)
|
||||||
|
target_link_libraries(${TARGET_NAME} ${ANDROID_LOG_LIB})
|
||||||
else()
|
else()
|
||||||
set(NON_ANDROID_PLATFORM_QT_LIBRARIES Qt5::WebEngine)
|
set(NON_ANDROID_PLATFORM_QT_LIBRARIES Qt5::WebEngine)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
|
@ -212,6 +212,7 @@
|
||||||
#include "webbrowser/WebBrowserSuggestionsEngine.h"
|
#include "webbrowser/WebBrowserSuggestionsEngine.h"
|
||||||
#ifdef ANDROID
|
#ifdef ANDROID
|
||||||
#include <QtAndroidExtras/QAndroidJniObject>
|
#include <QtAndroidExtras/QAndroidJniObject>
|
||||||
|
#include <android/log.h>
|
||||||
#endif
|
#endif
|
||||||
// On Windows PC, NVidia Optimus laptop, we want to enable NVIDIA GPU
|
// On Windows PC, NVidia Optimus laptop, we want to enable NVIDIA GPU
|
||||||
// FIXME seems to be broken.
|
// FIXME seems to be broken.
|
||||||
|
@ -556,7 +557,34 @@ void messageHandler(QtMsgType type, const QMessageLogContext& context, const QSt
|
||||||
if (!logMessage.isEmpty()) {
|
if (!logMessage.isEmpty()) {
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
OutputDebugStringA(logMessage.toLocal8Bit().constData());
|
OutputDebugStringA(logMessage.toLocal8Bit().constData());
|
||||||
OutputDebugStringA("\n");
|
OutputDebugStringA("\n");i
|
||||||
|
#elif defined Q_OS_ANDROID
|
||||||
|
QString report=message;
|
||||||
|
if (context.file && !QString(context.file).isEmpty()) {
|
||||||
|
report+=" at ";
|
||||||
|
report+=QString(context.file);
|
||||||
|
report+=" : ";
|
||||||
|
report+=QString::number(context.line);
|
||||||
|
}
|
||||||
|
const char*const local=report.toLocal8Bit().constData();
|
||||||
|
switch (type) {
|
||||||
|
case QtDebugMsg:
|
||||||
|
__android_log_write(ANDROID_LOG_DEBUG,"Interface",local);
|
||||||
|
break;
|
||||||
|
case QtInfoMsg:
|
||||||
|
__android_log_write(ANDROID_LOG_INFO,"Interface",local);
|
||||||
|
break;
|
||||||
|
case QtWarningMsg:
|
||||||
|
__android_log_write(ANDROID_LOG_WARN,"Interface",local);
|
||||||
|
break;
|
||||||
|
case QtCriticalMsg:
|
||||||
|
__android_log_write(ANDROID_LOG_ERROR,"Interface",local);
|
||||||
|
break;
|
||||||
|
case QtFatalMsg:
|
||||||
|
default:
|
||||||
|
__android_log_write(ANDROID_LOG_FATAL,"Interface",local);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
qApp->getLogger()->addMessage(qPrintable(logMessage + "\n"));
|
qApp->getLogger()->addMessage(qPrintable(logMessage + "\n"));
|
||||||
}
|
}
|
||||||
|
@ -845,10 +873,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_logger = new FileLogger(this);
|
_logger = new FileLogger(this);
|
||||||
#ifndef Q_OS_ANDROID
|
|
||||||
// this prevents using logcat
|
|
||||||
qInstallMessageHandler(messageHandler);
|
qInstallMessageHandler(messageHandler);
|
||||||
#endif
|
|
||||||
|
|
||||||
QFontDatabase::addApplicationFont(PathUtils::resourcesPath() + "styles/Inconsolata.otf");
|
QFontDatabase::addApplicationFont(PathUtils::resourcesPath() + "styles/Inconsolata.otf");
|
||||||
_window->setWindowTitle("High Fidelity Interface");
|
_window->setWindowTitle("High Fidelity Interface");
|
||||||
|
@ -2344,8 +2369,11 @@ void Application::initializeUi() {
|
||||||
offscreenUi->setProxyWindow(_window->windowHandle());
|
offscreenUi->setProxyWindow(_window->windowHandle());
|
||||||
// OffscreenUi is a subclass of OffscreenQmlSurface specifically designed to
|
// OffscreenUi is a subclass of OffscreenQmlSurface specifically designed to
|
||||||
// support the window management and scripting proxies for VR use
|
// support the window management and scripting proxies for VR use
|
||||||
|
#ifndef Q_OS_ANDROID
|
||||||
offscreenUi->createDesktop(QString("hifi/Desktop.qml"));
|
offscreenUi->createDesktop(QString("hifi/Desktop.qml"));
|
||||||
|
#else
|
||||||
|
offscreenUi->createDesktop(QString("qrc:///qml/hifi/Desktop.qml"));
|
||||||
|
#endif
|
||||||
// FIXME either expose so that dialogs can set this themselves or
|
// FIXME either expose so that dialogs can set this themselves or
|
||||||
// do better detection in the offscreen UI of what has focus
|
// do better detection in the offscreen UI of what has focus
|
||||||
offscreenUi->setNavigationFocused(false);
|
offscreenUi->setNavigationFocused(false);
|
||||||
|
|
Loading…
Reference in a new issue