diff --git a/CMakeLists.txt b/CMakeLists.txt index 6c50c7bb..7f6c60f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -642,10 +642,14 @@ elseif(ANDROID) set(ANDROID_MANIFEST "${CMAKE_CURRENT_SOURCE_DIR}/src/resources/AndroidManifest_${MANIFEST}.xml" CACHE STRING "The AndroidManifest.xml file to use") - if (ANDROID_KEYSTORE_PASS) # Trick so that --ks-pass is not passed if no password is given. + if(ANDROID_KEYSTORE_PASS) # Trick so that --ks-pass is not passed if no password is given. set(ANDROID_APKSIGNER_KEYSTORE_PASS --ks-pass) endif() + if(ANDROID_PACKAGE) + set(PACKAGE_RENAME "--rename-manifest-package ${ANDROID_PACKAGE}") + endif() + # Make an apk add_custom_target( buildAPK ALL @@ -658,6 +662,7 @@ elseif(ANDROID) COMMAND ${ANDROID_TOOLS}/aapt package -f + ${PACKAGE_RENAME} -0 so -M AndroidManifest.xml -I ${ANDROID_JAR} diff --git a/Tupfile b/Tupfile index 492fb88b..50656db1 100644 --- a/Tupfile +++ b/Tupfile @@ -85,7 +85,7 @@ ifeq ($(PLATFORM),android) : $(JAR) $(EXTRA_JARS) |> !dx |> $(DEX) # aapt - : $(MANIFEST) | $(LIB)/*.so $(DEX) |> ^ AAPT %b^ aapt package -F %o -M %f -0 so -I $(ANDROID_JAR) bin/apk $(ANDROID_ASSETS) |> bin/.lovr.unaligned.apk + : $(MANIFEST) | $(LIB)/*.so $(DEX) |> ^ AAPT %b^ aapt package $(PACKAGE_RENAME) -F %o -M %f -0 so -I $(ANDROID_JAR) bin/apk $(ANDROID_ASSETS) |> bin/.lovr.unaligned.apk # align n sign : bin/.lovr.unaligned.apk |> !zipalign |> bin/.lovr.unsigned.apk diff --git a/Tuprules.tup b/Tuprules.tup index 96b297e8..d2af1dca 100644 --- a/Tuprules.tup +++ b/Tuprules.tup @@ -100,6 +100,9 @@ ifeq ($(PLATFORM),android) ifneq (@(ANDROID_MANIFEST),) ANDROID_MANIFEST_y = @(ANDROID_MANIFEST) endif + ifneq (@(ANDROID_PACKAGE),) + PACKAGE_RENAME = --rename-manifest-package @(ANDROID_PACKAGE) + endif ifneq (@(ANDROID_ASSETS),) ANDROID_ASSETS = -A @(ANDROID_ASSETS) endif diff --git a/tup.config.default b/tup.config.default index 36dfc4b5..838bd145 100644 --- a/tup.config.default +++ b/tup.config.default @@ -60,6 +60,7 @@ CONFIG_LUAJIT=y # ANDROID_KEYSTORE: The path to the keystore (use keytool to generate) # ANDROID_KEYSTORE_PASS: The keystore password (use either pass:, env:, or file:) # ANDROID_MANIFEST: Optional path to a custom Android manifest file (xml) +# ANDROID_PACKAGE: Optional package id override (default is org.lovr.app, taken from manifest) # ANDROID_ASSETS: Optional path to a folder to embed as the assets folder of the apk CONFIG_ANDROID_SDK= CONFIG_ANDROID_NDK= @@ -69,4 +70,5 @@ CONFIG_ANDROID_HOST_TAG= CONFIG_ANDROID_KEYSTORE= CONFIG_ANDROID_KEYSTORE_PASS= CONFIG_ANDROID_MANIFEST= +CONFIG_ANDROID_PACKAGE= CONFIG_ANDROID_ASSETS=