Актуализирована сборка под Android
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -37,6 +37,7 @@ Thumbs.db
|
|||||||
|
|
||||||
# qtcreator generated files
|
# qtcreator generated files
|
||||||
*.pro.user*
|
*.pro.user*
|
||||||
|
CMakeLists.txt.user*
|
||||||
|
|
||||||
# xemacs temporary files
|
# xemacs temporary files
|
||||||
*.flc
|
*.flc
|
||||||
@@ -71,3 +72,4 @@ Thumbs.db
|
|||||||
*.dll
|
*.dll
|
||||||
*.exe
|
*.exe
|
||||||
|
|
||||||
|
build/
|
||||||
|
|||||||
48
CMakeLists.txt
Normal file
48
CMakeLists.txt
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
|
project(nooLight VERSION 1.0 LANGUAGES CXX)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
|
||||||
|
find_package(Qt6 6.5 REQUIRED COMPONENTS Quick)
|
||||||
|
|
||||||
|
qt_standard_project_setup(REQUIRES 6.5)
|
||||||
|
|
||||||
|
qt_add_executable(appnooLight
|
||||||
|
main.cpp
|
||||||
|
qml.qrc
|
||||||
|
)
|
||||||
|
|
||||||
|
if (ANDROID)
|
||||||
|
set_property(TARGET appnooLight APPEND PROPERTY QT_ANDROID_EXTRA_LIBS
|
||||||
|
${QT_ANDROID_SSL_DIR}/no-asm/ssl_3/${ANDROID_ABI}/libcrypto_3.so
|
||||||
|
${QT_ANDROID_SSL_DIR}/no-asm/ssl_3/${ANDROID_ABI}/libssl_3.so)
|
||||||
|
|
||||||
|
set_property(TARGET appnooLight APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/android)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
|
||||||
|
# If you are developing for iOS or macOS you should consider setting an
|
||||||
|
# explicit, fixed bundle identifier manually though.
|
||||||
|
set_target_properties(appnooLight PROPERTIES
|
||||||
|
# MACOSX_BUNDLE_GUI_IDENTIFIER com.example.appnooLight
|
||||||
|
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
|
||||||
|
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
|
||||||
|
MACOSX_BUNDLE TRUE
|
||||||
|
WIN32_EXECUTABLE TRUE
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(appnooLight
|
||||||
|
PRIVATE Qt6::Quick
|
||||||
|
)
|
||||||
|
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
install(TARGETS appnooLight
|
||||||
|
BUNDLE DESTINATION .
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
)
|
||||||
@@ -6,12 +6,12 @@ ListModel {
|
|||||||
readonly property var client: NooLiteClient {
|
readonly property var client: NooLiteClient {
|
||||||
id: nooLiteClient
|
id: nooLiteClient
|
||||||
|
|
||||||
onError: {
|
onError: (text) => {
|
||||||
root.error(text)
|
root.error(text)
|
||||||
root.isLoading = false
|
root.isLoading = false
|
||||||
}
|
}
|
||||||
|
|
||||||
onModelLoad: {
|
onModelLoad: (data) => {
|
||||||
root.populateModel(data)
|
root.populateModel(data)
|
||||||
root.isLoading = false
|
root.isLoading = false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,77 +1,16 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<manifest package="org.ded.nooLight" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="1" android:installLocation="auto">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.ded.nooLight" android:installLocation="auto" android:versionCode="1" android:versionName="1.0">
|
||||||
<application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="nooLight" android:icon="@drawable/icon">
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="unspecified" android:launchMode="singleTop">
|
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:smallScreens="true"/>
|
||||||
|
<application android:name="org.qtproject.qt.android.bindings.QtApplication" android:hardwareAccelerated="true" android:label="nooLight" android:icon="@drawable/icon" android:requestLegacyExternalStorage="true" android:allowNativeHeapPointerTagging="false" android:allowBackup="true" android:fullBackupOnly="false">
|
||||||
|
<activity android:name="org.qtproject.qt.android.bindings.QtActivity" android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:label="nooLight" android:launchMode="singleTop" android:screenOrientation="unspecified" android:exported="true">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
<action android:name="android.intent.action.MAIN"/>
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
<category android:name="android.intent.category.LAUNCHER"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
<meta-data android:name="android.app.lib_name" android:value="appnooLight"/>
|
||||||
<!-- Application arguments -->
|
<meta-data android:name="android.app.arguments" android:value=""/>
|
||||||
<!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ -->
|
<meta-data android:name="android.app.extract_android_style" android:value="minimal"/>
|
||||||
<!-- Application arguments -->
|
|
||||||
|
|
||||||
<meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/>
|
|
||||||
<meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/>
|
|
||||||
<meta-data android:name="android.app.repository" android:value="default"/>
|
|
||||||
<meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/>
|
|
||||||
<meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/>
|
|
||||||
<!-- Deploy Qt libs as part of package -->
|
|
||||||
<meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/>
|
|
||||||
<meta-data android:name="android.app.bundled_in_lib_resource_id" android:resource="@array/bundled_in_lib"/>
|
|
||||||
<meta-data android:name="android.app.bundled_in_assets_resource_id" android:resource="@array/bundled_in_assets"/>
|
|
||||||
<!-- Run with local libs -->
|
|
||||||
<meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/>
|
|
||||||
<meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/>
|
|
||||||
<meta-data android:name="android.app.load_local_libs" android:value="-- %%INSERT_LOCAL_LIBS%% --"/>
|
|
||||||
<meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/>
|
|
||||||
<meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/>
|
|
||||||
<!-- Messages maps -->
|
|
||||||
<meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/>
|
|
||||||
<meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/>
|
|
||||||
<meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/>
|
|
||||||
<!-- Messages maps -->
|
|
||||||
|
|
||||||
<!-- Splash screen -->
|
|
||||||
<!-- meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/ -->
|
|
||||||
<!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ -->
|
|
||||||
<!-- Splash screen -->
|
|
||||||
|
|
||||||
<!-- Background running -->
|
|
||||||
<!-- Warning: changing this value to true may cause unexpected crashes if the
|
|
||||||
application still try to draw after
|
|
||||||
"applicationStateChanged(Qt::ApplicationSuspended)"
|
|
||||||
signal is sent! -->
|
|
||||||
<meta-data android:name="android.app.background_running" android:value="false"/>
|
|
||||||
<!-- Background running -->
|
|
||||||
|
|
||||||
<!-- auto screen scale factor -->
|
|
||||||
<meta-data android:name="android.app.auto_screen_scale_factor" android:value="false"/>
|
|
||||||
<!-- auto screen scale factor -->
|
|
||||||
|
|
||||||
<!-- extract android style -->
|
|
||||||
<!-- available android:values :
|
|
||||||
* full - useful QWidget & Quick Controls 1 apps
|
|
||||||
* minimal - useful for Quick Controls 2 apps, it is much faster than "full"
|
|
||||||
* none - useful for apps that don't use any of the above Qt modules
|
|
||||||
-->
|
|
||||||
<meta-data android:name="android.app.extract_android_style" android:value="full"/>
|
|
||||||
<!-- extract android style -->
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<!-- For adding service(s) please check: https://wiki.qt.io/AndroidServices -->
|
|
||||||
|
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="16"/>
|
|
||||||
<supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
|
|
||||||
|
|
||||||
<!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application.
|
|
||||||
Remove the comment if you do not require these default permissions. -->
|
|
||||||
<!-- %%INSERT_PERMISSIONS -->
|
|
||||||
|
|
||||||
<!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application.
|
|
||||||
Remove the comment if you do not require these default features. -->
|
|
||||||
<!-- %%INSERT_FEATURES -->
|
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|||||||
@@ -1,23 +1,23 @@
|
|||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
jcenter()
|
google()
|
||||||
|
mavenCentral()
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:2.2.3'
|
classpath 'com.android.tools.build:gradle:7.4.1'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
allprojects {
|
repositories {
|
||||||
repositories {
|
google()
|
||||||
jcenter()
|
mavenCentral()
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile fileTree(dir: 'libs', include: ['*.jar'])
|
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
@@ -25,7 +25,7 @@ android {
|
|||||||
* The following variables:
|
* The following variables:
|
||||||
* - androidBuildToolsVersion,
|
* - androidBuildToolsVersion,
|
||||||
* - androidCompileSdkVersion
|
* - androidCompileSdkVersion
|
||||||
* - qt5AndroidDir - holds the path to qt android files
|
* - qtAndroidDir - holds the path to qt android files
|
||||||
* needed to build any Qt application
|
* needed to build any Qt application
|
||||||
* on Android.
|
* on Android.
|
||||||
*
|
*
|
||||||
@@ -35,23 +35,47 @@ android {
|
|||||||
*******************************************************/
|
*******************************************************/
|
||||||
|
|
||||||
compileSdkVersion androidCompileSdkVersion.toInteger()
|
compileSdkVersion androidCompileSdkVersion.toInteger()
|
||||||
|
|
||||||
buildToolsVersion androidBuildToolsVersion
|
buildToolsVersion androidBuildToolsVersion
|
||||||
|
ndkVersion androidNdkVersion
|
||||||
|
|
||||||
|
// Extract native libraries from the APK
|
||||||
|
packagingOptions.jniLibs.useLegacyPackaging true
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {
|
main {
|
||||||
manifest.srcFile 'AndroidManifest.xml'
|
manifest.srcFile 'AndroidManifest.xml'
|
||||||
java.srcDirs = [qt5AndroidDir + '/src', 'src', 'java']
|
java.srcDirs = [qtAndroidDir + '/src', 'src', 'java']
|
||||||
aidl.srcDirs = [qt5AndroidDir + '/src', 'src', 'aidl']
|
aidl.srcDirs = [qtAndroidDir + '/src', 'src', 'aidl']
|
||||||
res.srcDirs = [qt5AndroidDir + '/res', 'res']
|
res.srcDirs = [qtAndroidDir + '/res', 'res']
|
||||||
resources.srcDirs = ['src']
|
resources.srcDirs = ['resources']
|
||||||
renderscript.srcDirs = ['src']
|
renderscript.srcDirs = ['src']
|
||||||
assets.srcDirs = ['assets']
|
assets.srcDirs = ['assets']
|
||||||
jniLibs.srcDirs = ['libs']
|
jniLibs.srcDirs = ['libs']
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tasks.withType(JavaCompile) {
|
||||||
|
options.incremental = true
|
||||||
|
}
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility JavaVersion.VERSION_1_8
|
||||||
|
targetCompatibility JavaVersion.VERSION_1_8
|
||||||
|
}
|
||||||
|
|
||||||
lintOptions {
|
lintOptions {
|
||||||
abortOnError false
|
abortOnError false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Do not compress Qt binary resources file
|
||||||
|
aaptOptions {
|
||||||
|
noCompress 'rcc'
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
resConfig "en"
|
||||||
|
minSdkVersion qtMinSdkVersion
|
||||||
|
targetSdkVersion qtTargetSdkVersion
|
||||||
|
ndk.abiFilters = qtTargetAbiList.split(",")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,3 @@
|
|||||||
# This file must *NOT* be checked into Version Control Systems,
|
# This file must *NOT* be checked into Version Control Systems,
|
||||||
# as it contains information specific to your local configuration.
|
# as it contains information specific to your local configuration.
|
||||||
|
|
||||||
androidBuildToolsVersion=27.0.2
|
|
||||||
androidCompileSdkVersion=27
|
|
||||||
buildDir=.build
|
|
||||||
qt5AndroidDir=/home/denis/Qt.5.9/5.9.3/android_armv7/src/android/java
|
|
||||||
|
|||||||
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
|||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-3.4-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
<?xml version='1.0' encoding='utf-8'?>
|
|
||||||
<resources>
|
|
||||||
<array name="qt_sources">
|
|
||||||
<item>https://download.qt.io/ministro/android/qt5/qt-5.9</item>
|
|
||||||
</array>
|
|
||||||
|
|
||||||
<!-- The following is handled automatically by the deployment tool. It should
|
|
||||||
not be edited manually. -->
|
|
||||||
|
|
||||||
<array name="bundled_libs">
|
|
||||||
<!-- %%INSERT_EXTRA_LIBS%% -->
|
|
||||||
</array>
|
|
||||||
|
|
||||||
<array name="qt_libs">
|
|
||||||
<!-- %%INSERT_QT_LIBS%% -->
|
|
||||||
</array>
|
|
||||||
|
|
||||||
<array name="bundled_in_lib">
|
|
||||||
<!-- %%INSERT_BUNDLED_IN_LIB%% -->
|
|
||||||
</array>
|
|
||||||
<array name="bundled_in_assets">
|
|
||||||
<!-- %%INSERT_BUNDLED_IN_ASSETS%% -->
|
|
||||||
</array>
|
|
||||||
|
|
||||||
</resources>
|
|
||||||
8
main.cpp
8
main.cpp
@@ -3,14 +3,16 @@
|
|||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
|
||||||
|
|
||||||
QGuiApplication app(argc, argv);
|
QGuiApplication app(argc, argv);
|
||||||
|
|
||||||
|
app.setOrganizationName("ded");
|
||||||
|
app.setOrganizationDomain("inc");
|
||||||
|
|
||||||
QQmlApplicationEngine engine;
|
QQmlApplicationEngine engine;
|
||||||
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
|
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
|
||||||
if (engine.rootObjects().isEmpty())
|
if (engine.rootObjects().isEmpty()) {
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
return app.exec();
|
return app.exec();
|
||||||
}
|
}
|
||||||
|
|||||||
10
main.qml
10
main.qml
@@ -21,7 +21,7 @@ ApplicationWindow {
|
|||||||
|
|
||||||
serviceUrl: settings.serviceUrl
|
serviceUrl: settings.serviceUrl
|
||||||
|
|
||||||
onError: stackView.showError(text)
|
onError: (text) => stackView.showError(text)
|
||||||
}
|
}
|
||||||
|
|
||||||
header: ToolBar {
|
header: ToolBar {
|
||||||
@@ -95,6 +95,14 @@ ApplicationWindow {
|
|||||||
stackView.openPage("SettingsForm.qml")
|
stackView.openPage("SettingsForm.qml")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ItemDelegate {
|
||||||
|
text: qsTr("Quit")
|
||||||
|
width: parent.width
|
||||||
|
onClicked: {
|
||||||
|
Qt.quit()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,3 +37,8 @@ DISTFILES += \
|
|||||||
android/gradlew.bat
|
android/gradlew.bat
|
||||||
|
|
||||||
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
|
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
|
||||||
|
|
||||||
|
ANDROID_EXTRA_LIBS += $$ANDROID_SDK_ROOT/android_openssl/latest/arm/libssl_1_1.so \
|
||||||
|
$$ANDROID_SDK_ROOT/android_openssl/latest/arm/libcrypto_1_1.so
|
||||||
|
|
||||||
|
ANDROID_ABIS = armeabi-v7a
|
||||||
|
|||||||
Reference in New Issue
Block a user