From 174dc17a804ab0f597de1a9516e31f7800afcb14 Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Sun, 12 Jun 2022 15:31:46 +0200 Subject: [PATCH] Sign APK with credentials from keystore.properties --- server/.gitignore | 1 + server/HOWTO_keystore.txt | 12 ++++++++++++ server/build.gradle | 16 ++++++++++++++++ server/keystore.properties.sample | 4 ++++ server/scripts/build-wrapper.sh | 2 +- 5 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 server/HOWTO_keystore.txt create mode 100644 server/keystore.properties.sample diff --git a/server/.gitignore b/server/.gitignore index 0df7064d..bf5287d6 100644 --- a/server/.gitignore +++ b/server/.gitignore @@ -6,3 +6,4 @@ /build /captures .externalNativeBuild +/keystore.properties diff --git a/server/HOWTO_keystore.txt b/server/HOWTO_keystore.txt new file mode 100644 index 00000000..fb20eac7 --- /dev/null +++ b/server/HOWTO_keystore.txt @@ -0,0 +1,12 @@ +For an APK to be installable, it must be signed: + +For that purpose, create a keystore by executing this command: + + keytool -genkey -v -keystore ~/.android/scrcpy.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias scrcpy -dname cn=scrcpy + +(Adapt ~/.android/scrcpy.keystore if you want to generate it to another location.) + +Then create server/keystore.properties and edit its properties: + + cp keystore.properties.sample keystore.properties + vim keystore.properties # fill the properties diff --git a/server/build.gradle b/server/build.gradle index 00590381..1f4d83a4 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -10,10 +10,26 @@ android { versionName "1.24" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } + signingConfigs { + release { + // to be defined in server/keystore.properties (see server/HOWTO_keystore.txt) + def keystorePropsFile = rootProject.file("server/keystore.properties") + if (keystorePropsFile.exists()) { + def props = new Properties() + props.load(new FileInputStream(keystorePropsFile)) + + storeFile rootProject.file(props['storeFile']) + storePassword props['storePassword'] + keyAlias props['keyAlias'] + keyPassword props['keyPassword'] + } + } + } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release } } } diff --git a/server/keystore.properties.sample b/server/keystore.properties.sample new file mode 100644 index 00000000..a072c594 --- /dev/null +++ b/server/keystore.properties.sample @@ -0,0 +1,4 @@ +storeFile=/path/to/your/keystore +storePassword=PASSWORD +keyAlias=scrcpy +keyPassword=PASSWORD diff --git a/server/scripts/build-wrapper.sh b/server/scripts/build-wrapper.sh index 7e16dc94..7ff4f3c8 100755 --- a/server/scripts/build-wrapper.sh +++ b/server/scripts/build-wrapper.sh @@ -25,5 +25,5 @@ then cp "$PROJECT_ROOT/build/outputs/apk/debug/server-debug.apk" "$OUTPUT" else "$GRADLE" -p "$PROJECT_ROOT" assembleRelease - cp "$PROJECT_ROOT/build/outputs/apk/release/server-release-unsigned.apk" "$OUTPUT" + cp "$PROJECT_ROOT/build/outputs/apk/release/server-release.apk" "$OUTPUT" fi