Add conversion code for Java code
Add support to pro2cmake to convert java code for android. Add support to override API_LEVEL for the Android sdk jar file. If the sdk is not found, we'll default to the one located by QT_ANDROID_JAR. Change-Id: If0b746dc7f9148ac43e6592a4a4dd23d46bbd4cd Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
This commit is contained in:
parent
7e7f41e40c
commit
373be4200b
@ -27,6 +27,18 @@ if (NOT IS_DIRECTORY "${ANDROID_SDK_ROOT}")
|
|||||||
message(FATAL_ERROR "Could not find ANDROID_SDK_ROOT or path is not a directory: ${ANDROID_SDK_ROOT}")
|
message(FATAL_ERROR "Could not find ANDROID_SDK_ROOT or path is not a directory: ${ANDROID_SDK_ROOT}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Get the Android SDK jar for an API version other than the one specified with
|
||||||
|
# QT_ANDROID_API_VERSION.
|
||||||
|
function(qt_get_android_sdk_jar_for_api api out_jar_location)
|
||||||
|
set(jar_location "${ANDROID_SDK_ROOT}/platforms/${api}/android.jar")
|
||||||
|
if (NOT EXISTS "${jar_location}")
|
||||||
|
message(WARNING "Could not locate Android SDK jar for api '${api}', defaulting to ${QT_ANDROID_API_VERSION}")
|
||||||
|
set(${out_jar_location} ${QT_ANDROID_JAR} PARENT_SCOPE)
|
||||||
|
else()
|
||||||
|
set(${out_jar_location} ${jar_location} PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
# Minimum recommend android SDK api version
|
# Minimum recommend android SDK api version
|
||||||
set(QT_ANDROID_API_VERSION "android-21")
|
set(QT_ANDROID_API_VERSION "android-21")
|
||||||
|
|
||||||
|
30
src/android/jar/.prev_CMakeLists.txt
Normal file
30
src/android/jar/.prev_CMakeLists.txt
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Generated from jar.pro.
|
||||||
|
|
||||||
|
set(java_sources
|
||||||
|
src/org/qtproject/qt5/android//accessibility/QtAccessibilityDelegate.java
|
||||||
|
src/org/qtproject/qt5/android//accessibility/QtNativeAccessibility.java
|
||||||
|
src/org/qtproject/qt5/android//CursorHandle.java
|
||||||
|
src/org/qtproject/qt5/android//EditContextView.java
|
||||||
|
src/org/qtproject/qt5/android//EditPopupMenu.java
|
||||||
|
src/org/qtproject/qt5/android//ExtractStyle.java
|
||||||
|
src/org/qtproject/qt5/android//QtActivityDelegate.java
|
||||||
|
src/org/qtproject/qt5/android//QtEditText.java
|
||||||
|
src/org/qtproject/qt5/android//QtInputConnection.java
|
||||||
|
src/org/qtproject/qt5/android//QtLayout.java
|
||||||
|
src/org/qtproject/qt5/android//QtMessageDialogHelper.java
|
||||||
|
src/org/qtproject/qt5/android//QtNative.java
|
||||||
|
src/org/qtproject/qt5/android//QtNativeLibrariesDir.java
|
||||||
|
src/org/qtproject/qt5/android//QtSurface.java
|
||||||
|
src/org/qtproject/qt5/android//QtThread.java
|
||||||
|
)
|
||||||
|
|
||||||
|
add_jar(QtAndroid
|
||||||
|
INCLUDE_JARS ${QT_ANDROID_JAR}
|
||||||
|
SOURCES ${java_sources}
|
||||||
|
)
|
||||||
|
|
||||||
|
install_jar(QtAndroid
|
||||||
|
DESTINATION jar
|
||||||
|
COMPONENT Devel
|
||||||
|
)
|
||||||
|
|
@ -1,26 +1,23 @@
|
|||||||
# QtAndroid Jar
|
# Generated from jar.pro.
|
||||||
|
|
||||||
# special case skip regeneration
|
|
||||||
# special case begin
|
|
||||||
set(path_prefix ${CMAKE_CURRENT_SOURCE_DIR}/src/org/qtproject/qt5/android/)
|
|
||||||
|
|
||||||
set(java_sources
|
set(java_sources
|
||||||
${path_prefix}/accessibility/QtAccessibilityDelegate.java
|
src/org/qtproject/qt5/android/accessibility/QtAccessibilityDelegate.java
|
||||||
${path_prefix}/accessibility/QtNativeAccessibility.java
|
src/org/qtproject/qt5/android/accessibility/QtNativeAccessibility.java
|
||||||
${path_prefix}/CursorHandle.java
|
src/org/qtproject/qt5/android/CursorHandle.java
|
||||||
${path_prefix}/EditContextView.java
|
src/org/qtproject/qt5/android/EditContextView.java
|
||||||
${path_prefix}/EditPopupMenu.java
|
src/org/qtproject/qt5/android/EditPopupMenu.java
|
||||||
${path_prefix}/ExtractStyle.java
|
src/org/qtproject/qt5/android/ExtractStyle.java
|
||||||
${path_prefix}/QtActivityDelegate.java
|
src/org/qtproject/qt5/android/QtActivityDelegate.java
|
||||||
${path_prefix}/QtEditText.java
|
src/org/qtproject/qt5/android/QtEditText.java
|
||||||
${path_prefix}/QtInputConnection.java
|
src/org/qtproject/qt5/android/QtInputConnection.java
|
||||||
${path_prefix}/QtLayout.java
|
src/org/qtproject/qt5/android/QtLayout.java
|
||||||
${path_prefix}/QtMessageDialogHelper.java
|
src/org/qtproject/qt5/android/QtMessageDialogHelper.java
|
||||||
${path_prefix}/QtNative.java
|
src/org/qtproject/qt5/android/QtNative.java
|
||||||
${path_prefix}/QtNativeLibrariesDir.java
|
src/org/qtproject/qt5/android/QtNativeLibrariesDir.java
|
||||||
${path_prefix}/QtServiceDelegate.java
|
src/org/qtproject/qt5/android/QtSurface.java
|
||||||
${path_prefix}/QtSurface.java
|
src/org/qtproject/qt5/android/QtThread.java
|
||||||
${path_prefix}/QtThread.java)
|
src/org/qtproject/qt5/android/QtServiceDelegate.java # special case
|
||||||
|
)
|
||||||
|
|
||||||
add_jar(QtAndroid
|
add_jar(QtAndroid
|
||||||
INCLUDE_JARS ${QT_ANDROID_JAR}
|
INCLUDE_JARS ${QT_ANDROID_JAR}
|
||||||
@ -29,5 +26,6 @@ add_jar(QtAndroid
|
|||||||
|
|
||||||
install_jar(QtAndroid
|
install_jar(QtAndroid
|
||||||
DESTINATION jar
|
DESTINATION jar
|
||||||
COMPONENT Devel)
|
COMPONENT Devel
|
||||||
# special case end
|
)
|
||||||
|
|
||||||
|
@ -1,18 +1,16 @@
|
|||||||
# Generated from jar.pro.
|
# Generated from jar.pro.
|
||||||
|
|
||||||
#####################################################################
|
set(java_sources
|
||||||
## QtAndroidBearer Binary:
|
src/org/qtproject/qt5/android/bearer/QtNetworkReceiver.java
|
||||||
#####################################################################
|
)
|
||||||
|
|
||||||
add_qt_executable(QtAndroidBearer
|
add_jar(QtAndroidBearer
|
||||||
GUI
|
INCLUDE_JARS ${QT_ANDROID_JAR}
|
||||||
INSTALL_DIRECTORY "${INSTALL_DIRECTORY}/jar"
|
SOURCES ${java_sources}
|
||||||
OUTPUT_DIRECTORY "$$MODULE_BASE_OUTDIR/jar"
|
)
|
||||||
PUBLIC_LIBRARIES
|
|
||||||
Qt::Gui
|
install_jar(QtAndroidBearer
|
||||||
|
DESTINATION jar
|
||||||
|
COMPONENT Devel
|
||||||
)
|
)
|
||||||
|
|
||||||
#### Keys ignored in scope 1:.:.:jar.pro:<TRUE>:
|
|
||||||
# JAVACLASSPATH = "$$PWD/src"
|
|
||||||
# JAVASOURCES = "$$PWD/src/org/qtproject/qt5/android/bearer/QtNetworkReceiver.java"
|
|
||||||
# _LOADED = "qt_build_paths"
|
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
# special case begin
|
#####################################################################
|
||||||
# This is a manually edited file
|
## QtAndroidBearer Binary:
|
||||||
|
#####################################################################
|
||||||
set(path_prefix ${CMAKE_CURRENT_SOURCE_DIR}/src/org/qtproject/qt5/android/bearer)
|
|
||||||
|
|
||||||
set(java_sources
|
set(java_sources
|
||||||
${path_prefix}/QtNetworkReceiver.java
|
src/org/qtproject/qt5/android/bearer/QtNetworkReceiver.java
|
||||||
)
|
)
|
||||||
|
|
||||||
add_jar(QtAndroidBearer
|
add_jar(QtAndroidBearer
|
||||||
@ -16,4 +15,8 @@ install_jar(QtAndroidBearer
|
|||||||
DESTINATION jar
|
DESTINATION jar
|
||||||
COMPONENT Devel)
|
COMPONENT Devel)
|
||||||
|
|
||||||
# special case end
|
#### Keys ignored in scope 1:.:.:jar.pro:<TRUE>:
|
||||||
|
# JAVACLASSPATH = "$$PWD/src"
|
||||||
|
# JAVASOURCES = "$$PWD/src/org/qtproject/qt5/android/bearer/QtNetworkReceiver.java"
|
||||||
|
# _LOADED = "qt_build_paths"
|
||||||
|
|
||||||
|
@ -2692,6 +2692,44 @@ def write_find_package_section(
|
|||||||
cm_fh.write("\n")
|
cm_fh.write("\n")
|
||||||
|
|
||||||
|
|
||||||
|
def write_jar(cm_fh: IO[str], scope: Scope, *, indent: int = 0) -> str:
|
||||||
|
|
||||||
|
target = scope.TARGET
|
||||||
|
|
||||||
|
install_dir = scope.expandString("target.path")
|
||||||
|
if not install_dir:
|
||||||
|
raise RuntimeError("Could not locate jar install path")
|
||||||
|
install_dir = install_dir.replace("$$[QT_INSTALL_PREFIX]/", "")
|
||||||
|
|
||||||
|
android_sdk_jar = "${QT_ANDROID_JAR}"
|
||||||
|
android_api_level = scope.get_string("API_VERSION")
|
||||||
|
if android_api_level:
|
||||||
|
cm_fh.write(f'{spaces(indent)}qt_get_android_sdk_jar_for_api("{android_api_level}" android_sdk)\n\n')
|
||||||
|
android_sdk_jar ="${android_sdk}"
|
||||||
|
|
||||||
|
write_source_file_list(
|
||||||
|
cm_fh,
|
||||||
|
scope,
|
||||||
|
"",
|
||||||
|
["JAVASOURCES"],
|
||||||
|
indent=indent,
|
||||||
|
header=f"set(java_sources\n",
|
||||||
|
footer=")\n",
|
||||||
|
)
|
||||||
|
|
||||||
|
cm_fh.write(f"{spaces(indent)}add_jar({target}\n")
|
||||||
|
cm_fh.write(f"{spaces(indent+1)}INCLUDE_JARS {android_sdk_jar}\n")
|
||||||
|
cm_fh.write(f"{spaces(indent+1)}SOURCES ${{java_sources}}\n")
|
||||||
|
cm_fh.write(f"{spaces(indent)})\n\n")
|
||||||
|
|
||||||
|
cm_fh.write(f"{spaces(indent)}install_jar({target}\n")
|
||||||
|
cm_fh.write(f"{spaces(indent+1)}DESTINATION {install_dir}\n")
|
||||||
|
cm_fh.write(f"{spaces(indent+1)}COMPONENT Devel\n")
|
||||||
|
cm_fh.write(f"{spaces(indent)})\n\n")
|
||||||
|
|
||||||
|
return target
|
||||||
|
|
||||||
|
|
||||||
def write_example(
|
def write_example(
|
||||||
cm_fh: IO[str], scope: Scope, gui: bool = False, *, indent: int = 0, is_plugin: bool = False
|
cm_fh: IO[str], scope: Scope, gui: bool = False, *, indent: int = 0, is_plugin: bool = False
|
||||||
) -> str:
|
) -> str:
|
||||||
@ -3030,6 +3068,7 @@ def handle_app_or_lib(
|
|||||||
assert scope.TEMPLATE in ("app", "lib")
|
assert scope.TEMPLATE in ("app", "lib")
|
||||||
|
|
||||||
config = scope.get("CONFIG")
|
config = scope.get("CONFIG")
|
||||||
|
is_jar = "java" in config
|
||||||
is_lib = scope.TEMPLATE == "lib"
|
is_lib = scope.TEMPLATE == "lib"
|
||||||
is_qml_plugin = any("qml_plugin" == s for s in scope.get("_LOADED"))
|
is_qml_plugin = any("qml_plugin" == s for s in scope.get("_LOADED"))
|
||||||
is_plugin = (
|
is_plugin = (
|
||||||
@ -3040,7 +3079,9 @@ def handle_app_or_lib(
|
|||||||
val not in config for val in ["console", "cmdline"]
|
val not in config for val in ["console", "cmdline"]
|
||||||
) and "testlib" not in scope.expand("QT")
|
) and "testlib" not in scope.expand("QT")
|
||||||
|
|
||||||
if is_example:
|
if is_jar:
|
||||||
|
tar = write_jar(cm_fh, scope, indent=indent)
|
||||||
|
elif is_example:
|
||||||
target = write_example(cm_fh, scope, gui, indent=indent, is_plugin=is_plugin)
|
target = write_example(cm_fh, scope, gui, indent=indent, is_plugin=is_plugin)
|
||||||
elif is_plugin:
|
elif is_plugin:
|
||||||
assert not is_example
|
assert not is_example
|
||||||
|
Loading…
Reference in New Issue
Block a user