Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -29,6 +29,10 @@
set(GCOMPRIS_MINOR_VERSION 98)
set(GCOMPRIS_PATCH_VERSION 0)
+if("${ANDROID_ARCH}" STREQUAL "arm64")
+set(GCOMPRIS_PATCH_VERSION 1)
+endif()
+
# Set the BUILD_DATE
string(TIMESTAMP BUILD_DATE %Y%m)
Index: android/AndroidManifest.xml.cmake
===================================================================
--- android/AndroidManifest.xml.cmake
+++ android/AndroidManifest.xml.cmake
@@ -32,7 +32,7 @@
-
+
@ANDROID_INTERNET_PERMISSION@
Index: android/CMakeLists.txt
===================================================================
--- android/CMakeLists.txt
+++ android/CMakeLists.txt
@@ -55,6 +55,10 @@
endif()
set(ANDROID_TOOLCHAIN arm-linux-androideabi)
+if("${ANDROID_ARCH}" STREQUAL "arm64")
+ set(ANDROID_TOOLCHAIN aarch64-linux-android)
+endif()
+
# set android package source for androiddeployqt json file
set(PACKAGE_SOURCE_ANDROID ${CMAKE_BINARY_DIR}/tmpAndroid)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/AndroidManifest.xml.cmake ${PACKAGE_SOURCE_ANDROID}/AndroidManifest.xml @ONLY)
@@ -82,40 +86,42 @@
list(APPEND ALL_LOCALES ${locale})
endforeach()
+find_program(ZIP_ALIGN NAMES zipalign PATHS ${ANDROID_SDK_ROOT}/build-tools/${ANDROID_SDK_BUILD_TOOLS_REVISION}/ )
+
add_custom_command (
OUTPUT createApkFromAndroidDeployQtDebug
DEPENDS ${PACKAGE_SOURCE_ANDROID}/AndroidManifest.xml
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${PACKAGE_SOURCE_ANDROID}
- COMMAND ${ANDROID_DEPLOY_QT} --output ${CMAKE_CURRENT_BINARY_DIR}/ --input ${PACKAGE_SOURCE_ANDROID}/configAndroid.json --debug
- COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_BINARY_DIR}/bin/QtApp-debug.apk ${CMAKE_CURRENT_BINARY_DIR}/bin/GCompris-Android-debug-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
+ COMMAND ${ANDROID_DEPLOY_QT} --output ${CMAKE_CURRENT_BINARY_DIR}/ --input ${PACKAGE_SOURCE_ANDROID}/configAndroid.json --debug --gradle
+ COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_BINARY_DIR}/build/outputs/apk/debug/android-debug.apk ${CMAKE_CURRENT_BINARY_DIR}/GCompris-Android-debug-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
)
add_custom_command (
OUTPUT createApkFromAndroidDeployQtRelease
DEPENDS ${PACKAGE_SOURCE_ANDROID}/AndroidManifest.xml
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${PACKAGE_SOURCE_ANDROID}
- COMMAND ${ANDROID_DEPLOY_QT} --output ${CMAKE_CURRENT_BINARY_DIR}/ --input ${PACKAGE_SOURCE_ANDROID}/configAndroid.json --release
- COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_BINARY_DIR}/bin/QtApp-release-unsigned.apk ${CMAKE_CURRENT_BINARY_DIR}/bin/GCompris-Android-release-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
+ COMMAND ${ANDROID_DEPLOY_QT} --output ${CMAKE_CURRENT_BINARY_DIR}/ --input ${PACKAGE_SOURCE_ANDROID}/configAndroid.json --release --gradle
+ COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_BINARY_DIR}/build/outputs/apk/release/android-release-unsigned.apk ${CMAKE_CURRENT_BINARY_DIR}/GCompris-Android-release-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
)
add_custom_command (
OUTPUT createApkSignedFromAndroidDeployQtRelease
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/bin/GCompris-Android-release-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
- COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/bin/GCompris-Android-release-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk ${CMAKE_CURRENT_BINARY_DIR}/bin/GCompris-Android-release-signed-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
- COMMAND jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore $ENV{ANDROID_KEYSTORE} -storepass $ENV{ANDROID_KEYSTORE_PASSWD} ${CMAKE_CURRENT_BINARY_DIR}/bin/GCompris-Android-release-signed-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk gcompris
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/GCompris-Android-release-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/GCompris-Android-release-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk ${CMAKE_CURRENT_BINARY_DIR}/GCompris-Android-release-signed-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
+ COMMAND jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore $ENV{ANDROID_KEYSTORE} -storepass $ENV{ANDROID_KEYSTORE_PASSWD} ${CMAKE_CURRENT_BINARY_DIR}/GCompris-Android-release-signed-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk gcompris
)
add_custom_command (
OUTPUT createApkSignedAlignedFromAndroidDeployQtRelease
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/bin/GCompris-Android-release-signed-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
- COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/bin/GCompris-Android-release-signed-aligned-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
- COMMAND ${ANDROID_SDK_ROOT}/build-tools/21.1.2/zipalign -v 4 ${CMAKE_CURRENT_BINARY_DIR}/bin/GCompris-Android-release-signed-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk ${CMAKE_CURRENT_BINARY_DIR}/bin/GCompris-Android-release-signed-aligned-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/GCompris-Android-release-signed-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
+ COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/GCompris-Android-release-signed-aligned-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
+ COMMAND ${ZIP_ALIGN} -v 4 ${CMAKE_CURRENT_BINARY_DIR}/GCompris-Android-release-signed-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk ${CMAKE_CURRENT_BINARY_DIR}/GCompris-Android-release-signed-aligned-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
)
add_custom_command (
OUTPUT apkInstall
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/bin/GCompris-Android-release-signed-aligned-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
- COMMAND ${ANDROID_SDK_ROOT}/platform-tools/adb install -r ${CMAKE_CURRENT_BINARY_DIR}/bin/GCompris-Android-release-signed-aligned-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/GCompris-Android-release-signed-aligned-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
+ COMMAND ${ANDROID_SDK_ROOT}/platform-tools/adb install -r ${CMAKE_CURRENT_BINARY_DIR}/GCompris-Android-release-signed-aligned-${ANDROID_ABI}${APK_SUFFIX}${GCOMPRIS_VERSION}.apk
)
# Command to create apk from Makefile
@@ -146,8 +152,15 @@
# compile openssl needed to download from https
include(ExternalProject)
set(OPENSSL_DIR "${CMAKE_BINARY_DIR}/external/openssl/")
-configure_file("build_openssl.sh.in" "build_openssl.sh" @ONLY)
+set(SCRIPT_BUILD "build_openssl.sh.in")
+if("${ANDROID_ARCH}" STREQUAL "arm64")
+ set(SCRIPT_BUILD "build_openssl_64.sh.in")
+endif()
+message(STATUS "Building ${SCRIPT_BUILD}")
+
+configure_file("${SCRIPT_BUILD}" "build_openssl.sh" @ONLY)
+if("${ANDROID_ARCH}" STREQUAL "arm")
ExternalProject_Add(
ext_openssl
DOWNLOAD_DIR ${CMAKE_BINARY_DIR}
@@ -158,12 +171,33 @@
BUILD_COMMAND sh "${CMAKE_CURRENT_BINARY_DIR}/build_openssl.sh"
INSTALL_COMMAND ""
)
-
-add_custom_command(
+add_custom_command(
OUTPUT package_openssl
COMMAND ${CMAKE_COMMAND} -E copy "${OPENSSL_DIR}/libcrypto.so.1.0.0" "${CMAKE_BINARY_DIR}/android/libs/${ANDROID_ABI}/libcrypto.so"
COMMAND ${CMAKE_COMMAND} -E copy "${OPENSSL_DIR}/libssl.so.1.0.0" "${CMAKE_BINARY_DIR}/android/libs/${ANDROID_ABI}/libssl.so"
)
+else()
+ # For Qt 5.12.5, it needs libcrypto_1_1.so and libssl_1_1.so
+ set(suffix_libssl "")
+ if(Qt5Core_VERSION VERSION_LESS "5.13.0")
+ set(suffix_libssl "_1_1")
+ endif()
+ExternalProject_Add(
+ ext_openssl
+ DOWNLOAD_DIR ${CMAKE_BINARY_DIR}
+ SOURCE_DIR ${OPENSSL_DIR}
+ URL https://www.openssl.org/source/openssl-1.1.1c.tar.gz
+ URL_HASH SHA256=f6fb3079ad15076154eda9413fed42877d668e7069d9b87396d0804fdb3f4c90
+ CONFIGURE_COMMAND echo "Configuration not needed"
+ BUILD_COMMAND sh "${CMAKE_CURRENT_BINARY_DIR}/build_openssl.sh"
+ INSTALL_COMMAND ""
+ )
+add_custom_command(
+ OUTPUT package_openssl
+ COMMAND ${CMAKE_COMMAND} -E copy "${OPENSSL_DIR}/libcrypto.so.1.1" "${CMAKE_BINARY_DIR}/android/libs/${ANDROID_ABI}/libcrypto${suffix_libssl}.so"
+ COMMAND ${CMAKE_COMMAND} -E copy "${OPENSSL_DIR}/libssl.so.1.1" "${CMAKE_BINARY_DIR}/android/libs/${ANDROID_ABI}/libssl${suffix_libssl}.so"
+ )
+endif()
#
add_custom_command(
Index: android/build_openssl.sh.in
===================================================================
--- android/build_openssl.sh.in
+++ android/build_openssl.sh.in
@@ -3,15 +3,13 @@
# The only argument to the script is source directory.
source_dir=$1
-export PATH=@ANDROID_NDK@/toolchains/@ANDROID_TOOLCHAIN@-4.9/prebuilt/@_HOST@/bin/:$PATH
-echo $PATH
-export CROSS_COMPILE="@ANDROID_TOOLCHAIN_PATH@@ANDROID_TOOLCHAIN@-"
+export PATH=@ANDROID_NDK@/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
export NDK_SYSROOT=@ANDROID_NDK@
export ANDROID_NDK_ROOT=@ANDROID_NDK@
export ANDROID_DEV=@ANDROID_NDK@/platforms/android-@CMAKE_ANDROID_API@/arch-arm/usr
export SYSROOT=@ANDROID_NDK@/platforms/android-@CMAKE_ANDROID_API@/arch-arm/
cd ${source_dir}
@REMOVE_mandroid_FLAG_FOR_CLANG@
-./Configure --prefix=. --openssldir=./ssl android-armv7 no-asm shared
-make && make libssl.so.1.0.0 libcrypto.so.1.0.0
+./Configure --prefix=@CMAKE_CURRENT_BINARY_DIR@ --openssldir=./ssl android-arm no-asm shared -D__ANDROID_API__=@CMAKE_ANDROID_API@
+make
cd -
Index: android/build_openssl_64.sh.in
===================================================================
--- /dev/null
+++ android/build_openssl_64.sh.in
@@ -0,0 +1,16 @@
+#!/usr/bin/sh
+
+# The only argument to the script is source directory.
+source_dir=$1
+
+export PATH=@ANDROID_NDK@/toolchains/aarch64-linux-android-4.9/prebuilt/@_HOST@/bin/:$PATH
+export NDK_SYSROOT=@ANDROID_NDK@
+export ANDROID_NDK_ROOT=@ANDROID_NDK@
+export ANDROID_DEV=@ANDROID_NDK@/platforms/android-@CMAKE_ANDROID_API@/arch-@ANDROID_ARCH@/usr
+export SYSROOT=@ANDROID_NDK@/platforms/android-@CMAKE_ANDROID_API@/arch-@ANDROID_ARCH@/
+cd ${source_dir}
+@REMOVE_mandroid_FLAG_FOR_CLANG@
+./Configure --prefix=@CMAKE_CURRENT_BINARY_DIR@ --openssldir=./ssl android-arm64 no-asm shared -D__ANDROID_API__=@CMAKE_ANDROID_API@
+make
+cd -
+
Index: android/configAndroid.json.cmake
===================================================================
--- android/configAndroid.json.cmake
+++ android/configAndroid.json.cmake
@@ -3,6 +3,7 @@
"qt": "@_qt5Core_install_prefix@",
"sdk": "@ANDROID_SDK_ROOT@",
"ndk": "@ANDROID_NDK@",
+ "sdkBuildToolsRevision": "@ANDROID_SDK_BUILD_TOOLS_REVISION@",
"toolchain-prefix": "@ANDROID_TOOLCHAIN@",
"tool-prefix": "@ANDROID_TOOLCHAIN@",
"toolchain-version": "4.9",
Index: tools/android_build_all_apk.sh
===================================================================
--- tools/android_build_all_apk.sh
+++ tools/android_build_all_apk.sh
@@ -20,7 +20,7 @@
# Uncomment if this is not already done
# make getSvnTranslations
-Qt5_BaseDIR=~/Qt5.12.1/5.12.1
+Qt5_BaseDIR=~/Qt/5.12.5
export ANDROID_NDK_ROOT=$ANDROID_NDK
# The current version
@@ -58,11 +58,7 @@
fi
cmake -DCMAKE_TOOLCHAIN_FILE=/usr/share/ECM/toolchain/Android.cmake \
- -DCMAKE_ANDROID_API=16 \
-DCMAKE_BUILD_TYPE=release \
- -DCMAKE_ANDROID_STL_TYPE=c++_shared \
- -DANDROID_TOOLCHAIN_PATH=/opt/android-16-arm/bin/ \
- -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang \
-DANDROID_ARCHITECTURE=$1 \
-DQt5_DIR=${Qt5_BaseDIR}/${QtTarget}/lib/cmake/Qt5 \
-DQt5Qml_DIR=${Qt5_BaseDIR}/${QtTarget}/lib/cmake/Qt5Qml \
@@ -95,21 +91,21 @@
cd ${builddir}
f_cmake arm inapp OFF ON OFF
-make
+make -j 4
make BuildTranslations
make apk_release && make apk_signed && make apk_signed_aligned
f_cmake arm internal OFF ON OFF
-make
+make -j 4
make apk_release && make apk_signed && make apk_signed_aligned
f_cmake arm no OFF ON OFF
-make
+make -j 4
make apk_release && make apk_signed && make apk_signed_aligned
f_cmake arm no ON ON OFF
make clean
-make
+make -j 4
make BuildTranslations
make apk_release && make apk_signed && make apk_signed_aligned