Skip to content

Commit 56d8cce

Browse files
authored
Merge pull request #1258 from dg0yt
Review APK naming, configuration and signing
2 parents 9193bd5 + 6dd6566 commit 56d8cce

File tree

4 files changed

+38
-24
lines changed

4 files changed

+38
-24
lines changed

android/CPackConfig.cmake.in

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,16 @@ set(CPACK_GENERATOR "")
2626
set(destdir "@CMAKE_CURRENT_BINARY_DIR@/Mapper/install")
2727

2828
set(final_message )
29-
set(KEYSTORE_URL "@KEYSTORE_URL@")
30-
set(KEYSTORE_ALIAS "@KEYSTORE_ALIAS@")
29+
30+
set(apk "${destdir}/build/outputs/apk/")
31+
if(@RELEASE_APK@)
32+
set(config "CONFIG+=release")
33+
set(apk "${apk}/release/install-release" )
34+
else()
35+
set(config "CONFIG+=debug")
36+
set(apk "${apk}/debug/install-debug" )
37+
endif()
38+
3139
set(SIGN_APK "@SIGN_APK@")
3240
if(SIGN_APK AND "@CMAKE_HOST_UNIX@")
3341
execute_process(COMMAND "${CMAKE_COMMAND}" -E echo "Checking if we are running in a terminal")
@@ -38,19 +46,20 @@ if(SIGN_APK AND "@CMAKE_HOST_UNIX@")
3846
set(SIGN_APK 0)
3947
endif()
4048
endif()
49+
4150
if(SIGN_APK)
42-
set(config "CONFIG+=release")
43-
set(sign --sign "${KEYSTORE_URL}" "${KEYSTORE_ALIAS}")
51+
set(sign --sign "@KEYSTORE_URL@" "@KEYSTORE_ALIAS@")
52+
set(apk "${apk}-signed.apk" )
4453
else()
45-
set(config "CONFIG+=debug")
4654
set(sign )
47-
$<@SIGN_APK@:
48-
# APK signing enabled at configuration time, but disabled at build time.
55+
if(@RELEASE_APK@)
56+
set(apk "${apk}-unsigned.apk")
57+
else()
58+
set(apk "${apk}.apk")
59+
endif()
4960
set(final_message "The build created an unsigned APK. To sign the APK, run:
50-
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore '${KEYSTORE_URL}' /path/to/install-release-unsigned.apk '${KEYSTORE_ALIAS}'
51-
zipalign 4 /path/to/install-release-unsigned.apk outfile.apk"
61+
apksigner sign --ks <keystore> --ks-key-alias <alias> ${apk}"
5262
)
53-
>
5463
endif()
5564

5665

@@ -92,8 +101,10 @@ execute_process(
92101
--deployment "bundled"
93102
--gradle
94103
--verbose
95-
$<$<OR:$<CONFIG:Release>,$<CONFIG:MinSizeRel>>:
104+
$<@RELEASE_APK@:
96105
--release
106+
>
107+
$<@SIGN_APK@:
97108
${sign}
98109
>
99110
WORKING_DIRECTORY "@CMAKE_CURRENT_BINARY_DIR@/Mapper"
@@ -103,13 +114,7 @@ if(result)
103114
message(FATAL_ERROR "Running androiddeployqt failed: ${result}")
104115
endif()
105116

106-
if(SIGN_APK)
107-
configure_file(
108-
"@CMAKE_CURRENT_BINARY_DIR@/Mapper/install/build/outputs/apk/install-release-signed.apk"
109-
"@PROJECT_BINARY_DIR@/@[email protected]"
110-
COPYONLY
111-
)
112-
endif()
117+
configure_file("${apk}" "@PROJECT_BINARY_DIR@/@[email protected]" COPYONLY)
113118

114119
if(final_message)
115120
message(STATUS "${final_message}")

android/Mapper.pro.in

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@ EXPECTED_VERSION = @Mapper_VERSION_MAJOR@\.@Mapper_VERSION_MINOR@\.@Mapper_VERSI
3131
error(The version name in AndroidManifest.xml does not match $$EXPECTED_VERSION.)
3232
}
3333

34-
CONFIG(debug, release|debug) {
35-
# Don't let (unsigned) debug packages replace (signed) release packages,
36-
# or the developer may loose maps.
34+
@USE_DEV_SUFFIX@ {
35+
# Don't let unstable packages replace official release packages.
3736
system(cp -a "$$ANDROID_PACKAGE_SOURCE_DIR" "$$OUT_PWD/")
3837
ANDROID_PACKAGE_SOURCE_DIR = $$OUT_PWD/android
3938
system(sed -e $$shell_quote(/<manifest/ s/org.openorienteering.mapper/org.openorienteering.mapper.dev/) -i -- "$$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml")
40-
system(sed -e $$shell_quote(s/%%INSERT_APP_NAME%% *-->/%%INSERT_APP_NAME%% --> dev/) -i -- "$$ANDROID_PACKAGE_SOURCE_DIR/res/values/strings.xml")
39+
system(sed -e $$shell_quote(/<manifest/ s/@Mapper_VERSION@/@Mapper_VERSION_DISPLAY@/) -i -- "$$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml")
40+
system(sed -e $$shell_quote(s/%%INSERT_APP_NAME%% *-->/%%INSERT_APP_NAME%% --> @Mapper_VERSION_DISPLAY@/) -i -- "$$ANDROID_PACKAGE_SOURCE_DIR/res/values/strings.xml")
4141
system(rm -f "$$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml--" "$$ANDROID_PACKAGE_SOURCE_DIR/res/values/strings.xml--")
4242
}
4343

ci/azure-pipelines.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,6 @@ jobs:
124124
- $(TARGET)-toolchain-$(openorienteering.superbuild.ndkVersion)
125125
- toolchain-info-$(TARGET)
126126
- android-libcxx-armeabi-v7a-$(openorienteering.superbuild.ndkVersion)
127-
outputFilter: packaging/Mapper/install/build/outputs/apk/*/*.apk
128127
- template: publish.yml
129128

130129

packaging/CMakeLists.txt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,20 @@ elseif(ANDROID)
189189
"Alias in the keystore to be used when signing APK packages."
190190
)
191191
if(KEYSTORE_URL AND KEYSTORE_ALIAS)
192-
set(SIGN_APK "$<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>>")
192+
set(SIGN_APK 1)
193193
else()
194194
set(SIGN_APK 0)
195195
endif()
196+
if("@CMAKE_BUILD_TYPE@" MATCHES "Rel")
197+
set(RELEASE_APK 1)
198+
else()
199+
set(RELEASE_APK 0)
200+
endif()
201+
if("${Mapper_VERSION_DISPLAY}" STREQUAL "${Mapper_VERSION}")
202+
set(USE_DEV_SUFFIX "false")
203+
else()
204+
set(USE_DEV_SUFFIX "true")
205+
endif()
196206
configure_file(
197207
"${PROJECT_SOURCE_DIR}/android/CPackConfig.cmake.in"
198208
"${PROJECT_BINARY_DIR}/CPackConfig.tmp.cmake"

0 commit comments

Comments
 (0)