Skip to content

Commit e2ac703

Browse files
committed
Fix android version code generation
Android version code generation must be consistent release to release such that is always and increasing number. Without that you can install over other versions.
1 parent c735118 commit e2ac703

File tree

1 file changed

+29
-10
lines changed

1 file changed

+29
-10
lines changed

CMakeLists.txt

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -407,17 +407,36 @@ elseif(ANDROID)
407407
include(${android_openssl_SOURCE_DIR}/android_openssl.cmake)
408408
add_android_openssl_libraries(${CMAKE_PROJECT_NAME})
409409

410-
set(ANDROID_PLATFORM_ARCHITECTURE_CODE)
411-
if(${ANDROID_ABI} STREQUAL "armeabi-v7a")
412-
set(ANDROID_PLATFORM_ARCHITECTURE_CODE "032")
413-
elseif(${ANDROID_ABI} STREQUAL "arm64-v8a")
414-
set(ANDROID_PLATFORM_ARCHITECTURE_CODE "064")
415-
elseif(${ANDROID_ABI} STREQUAL "x86")
416-
set(ANDROID_PLATFORM_ARCHITECTURE_CODE "132")
417-
elseif(${ANDROID_ABI} STREQUAL "x86_64")
418-
set(ANDROID_PLATFORM_ARCHITECTURE_CODE "164")
410+
# Generation of android version numbers must be consistent release to release such that they are always increasing
411+
412+
if(${PROJECT_VERSION_MAJOR} GREATER 9)
413+
message(FATAL_ERROR "Major version larger than 1 digit: ${PROJECT_VERSION_MAJOR}")
414+
endif()
415+
if(${PROJECT_VERSION_MINOR} GREATER 9)
416+
message(FATAL_ERROR "Minor version larger than 1 digit: ${PROJECT_VERSION_MINOR}")
417+
endif()
418+
if(${PROJECT_VERSION_PATCH} GREATER 99)
419+
message(FATAL_ERROR "Patch version larger than 2 digits: ${PROJECT_VERSION_PATCH}")
419420
endif()
420-
set(ANDROID_VERSION_CODE "${ANDROID_PLATFORM_ARCHITECTURE_CODE}${PROJECT_VERSION_MAJOR}${PROJECT_VERSION_MINOR}")
421+
422+
# Bitness for android version number is 66/34 instead of 64/32 in because of a required version number bump screw-up ages ago
423+
set(ANDROID_BITNESS_CODE)
424+
if(${ANDROID_ABI} STREQUAL "armeabi-v7a" OR ${ANDROID_ABI} STREQUAL "x86")
425+
set(ANDROID_BITNESS_CODE 34)
426+
elseif(${ANDROID_ABI} STREQUAL "arm64-v8a" OR ${ANDROID_ABI} STREQUAL "x86_64")
427+
set(ANDROID_BITNESS_CODE 66)
428+
else()
429+
message(FATAL_ERROR "Unsupported Android ABI: ${ANDROID_ABI}")
430+
endif()
431+
432+
set(ANDROID_PATCH_VERSION ${PROJECT_VERSION_PATCH})
433+
if(${PROJECT_VERSION_PATCH} LESS 10)
434+
set(ANDROID_PATCH_VERSION "0${PROJECT_VERSION_PATCH}")
435+
endif()
436+
437+
# Version code format: BBMIPPDDD (B=Bitness, M=Major, I=Minor, P=Patch, D=Dev) - Dev not currently supported and always 000
438+
set(ANDROID_VERSION_CODE "${ANDROID_BITNESS_CODE}${PROJECT_VERSION_MAJOR}${PROJECT_VERSION_MINOR}${ANDROID_PATCH_VERSION}000")
439+
message("Android version code: ${ANDROID_VERSION_CODE}")
421440

422441
set_target_properties(${CMAKE_PROJECT_NAME}
423442
PROPERTIES

0 commit comments

Comments
 (0)