diff --git a/.gitignore b/.gitignore index 445cbf7..bed986d 100644 --- a/.gitignore +++ b/.gitignore @@ -426,3 +426,8 @@ lib/cocos_old/ lib/Dobby_old/ sign.bat sign.sh +jarsign.sh + +# Android NDK, build-tools +/ndk/ +/abt/ diff --git a/build_release.sh b/build_release.sh index c4df506..0ddef8e 100644 --- a/build_release.sh +++ b/build_release.sh @@ -8,8 +8,9 @@ NINJA="${MT_NINJA:-ninja}" # /usr/bin/ninja CURL="${MT_CURL:-curl}" # /usr/bin/curl JAVA="${MT_JAVA:-java}" # /usr/bin/java PYTHON="${MT_PYTHON:-python3}" # /usr/bin/python3.8 -JARSIGNER="${MT_JARSIGNER:-jarsigner}" # /usr/bin/jarsigner -APKTOOL="${MT_APKTOOL:-apktool_2.5.0.jar}" +APKTOOL="${MT_APKTOOL:-apktool_2.6.0.jar}" +ZIPALIGN="${MT_ZIPALIGN:-zipalign}" # ~/android-sdk/build-tools/zipalign +APKSIGNER="${MT_APKSIGNER:-apksigner}" # ~/android-sdk/build-tools/apksigner # arg-based SRCAPK="${1:-${BASEDIR}/apk/vanilla.apk}" diff --git a/sign_example.sh b/sign_example.sh index 5327013..9d464a3 100644 --- a/sign_example.sh +++ b/sign_example.sh @@ -2,21 +2,34 @@ BASEDIR="$(realpath "$(dirname "${0}")")" # env-based -JARSIGNER="${MT_JARSIGNER:-jarsigner}" # /usr/bin/jarsigner +ZIPALIGN="${MT_ZIPALIGN:-zipalign}" # ~/android-sdk/build-tools/zipalign +APKSIGNER="${MT_APKSIGNER:-apksigner}" # ~/android-sdk/build-tools/apksigner + +# hardcode-based +#ZIPALIGN="${BASEDIR}/abt/zipalign" +#APKSIGNER="${BASEDIR}/abt/apksigner" # arg-based APK="${1:-${BASEDIR}/build/io.kamihama.magiatranslate.v0.50.apk}" KEYSTORE="${2:-${BASEDIR}/changeme.keystore}" -if [ ! -f "${APK}" ] -then - echo "Missing apk to sign! Tried file: ${APK}" - exit 1 -fi -if [ ! -f "${KEYSTORE}" ] -then - echo "Missing keystore! Tried file: ${KEYSTORE}" - exit 2 -fi +_errorexit() { + [ -z "${2}" ] || echo "${2}" + echo "Signing failed." + exit ${1} +} -${JARSIGNER} -sigalg SHA512withRSA -digestalg SHA-512 -keystore "${KEYSTORE}" "${APK}" -storepass changeme name +[ -f "${APK}" ] || _errorexit 1 "Missing apk to sign! Tried file: ${APK}" +[ -f "${KEYSTORE}" ] || _errorexit 2 "Missing keystore! Tried file: ${KEYSTORE}" + +echo "Doing zipalign..." +"${ZIPALIGN}" -f -p 4 "${APK}" "${APK}.tmp" +[ "$?" -ne "0" ] && _errorexit 3 "Failed to zipalign!" + +echo "Doing apksign..." +"${APKSIGNER}" sign --ks "${KEYSTORE}" --ks-pass pass:changeme --ks-key-alias name "${APK}.tmp" +[ "$?" -ne "0" ] && _errorexit 4 "Failed to apksign!" + +echo "Removing tmp file..." +mv "${APK}.tmp" "${APK}" +exit 0