fastlane-plugin-match_keystore 0.1.18 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 554236b09184bb0b50f9209ae0de3ba469e58bd66a5c0cc28880e8e259f3721a
|
4
|
+
data.tar.gz: b6c33c5ec05a4f72e2cbc04db6e64b2048b361408bedbaa9fe58e52908cbc5b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f99fe0dbb68617919711aaded1054d931a85dbc8730f2ac69fd289341389014fb02a25cc58b833c148991e85bb871cf360450821cff284427c60c6d7000f0f42
|
7
|
+
data.tar.gz: c9de35e3c6cae52e1dca0d78823079f1239bc890df3c5865fb288f1fbe666e181ddba39d5de9136bb82622bdfc380c79b5b045907ca2e5d5df95df87448222b4
|
@@ -16,10 +16,8 @@ module Fastlane
|
|
16
16
|
|
17
17
|
class MatchKeystoreAction < Action
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
path
|
22
|
-
end
|
19
|
+
KEY_VERSION = "2"
|
20
|
+
OPENSSL_BIN_PATH_MAC = "/usr/local/opt/openssl@1.1/bin"
|
23
21
|
|
24
22
|
def self.to_md5(value)
|
25
23
|
hash_value = Digest::MD5.hexdigest value
|
@@ -120,8 +118,7 @@ module Fastlane
|
|
120
118
|
|
121
119
|
def self.openssl(forceOpenSSL)
|
122
120
|
if forceOpenSSL
|
123
|
-
|
124
|
-
output = "#{path}/openssl"
|
121
|
+
output = "#{self::OPENSSL_BIN_PATH_MAC}/openssl"
|
125
122
|
else
|
126
123
|
output = "openssl"
|
127
124
|
end
|
@@ -256,46 +253,47 @@ module Fastlane
|
|
256
253
|
build_tools_path = self.get_build_tools(version_targeted)
|
257
254
|
UI.message("Build-tools path: #{build_tools_path}")
|
258
255
|
|
259
|
-
# https://developer.android.com/studio/command-line/
|
260
|
-
if zip_align != false
|
261
|
-
apk_path_aligned = apk_path.gsub(".apk", "-aligned.apk")
|
262
|
-
`rm -f '#{apk_path_aligned}'`
|
263
|
-
UI.message("Aligning APK (zipalign): #{apk_path}")
|
264
|
-
output = `#{build_tools_path}zipalign -v 4 '#{apk_path}' '#{apk_path_aligned}'`
|
265
|
-
puts ""
|
266
|
-
puts output
|
267
|
-
|
268
|
-
if !File.file?(apk_path_aligned)
|
269
|
-
raise "Aligned APK not exists!"
|
270
|
-
end
|
271
|
-
|
272
|
-
else
|
273
|
-
UI.message("No zip align - deactivated via parameter!")
|
274
|
-
apk_path_aligned = apk_path
|
275
|
-
end
|
256
|
+
# https://developer.android.com/studio/command-line/apksigner
|
276
257
|
apk_path_signed = apk_path.gsub(".apk", "-signed.apk")
|
277
258
|
apk_path_signed = apk_path_signed.gsub("unsigned", "")
|
278
259
|
apk_path_signed = apk_path_signed.gsub("--", "-")
|
279
|
-
|
280
|
-
# https://developer.android.com/studio/command-line/apksigner
|
281
260
|
`rm -f '#{apk_path_signed}'`
|
282
|
-
|
261
|
+
|
262
|
+
UI.message("Signing APK (input): #{apk_path}")
|
283
263
|
apksigner_opts = ""
|
284
264
|
build_tools_version = self.get_build_tools_version(version_targeted)
|
285
265
|
UI.message("Build-tools version: #{build_tools_version}")
|
286
266
|
if Gem::Version.new(build_tools_version) >= Gem::Version.new('30')
|
287
267
|
apksigner_opts = "--v4-signing-enabled false "
|
288
268
|
end
|
289
|
-
output = `#{build_tools_path}apksigner sign --ks '#{keystore_path}' --ks-key-alias '#{alias_name}' --ks-pass pass:'#{key_password}' --key-pass pass:'#{alias_password}' --v1-signing-enabled true --v2-signing-enabled true #{apksigner_opts}--out '#{apk_path_signed}' '#{
|
269
|
+
output = `#{build_tools_path}apksigner sign --ks '#{keystore_path}' --ks-key-alias '#{alias_name}' --ks-pass pass:'#{key_password}' --key-pass pass:'#{alias_password}' --v1-signing-enabled true --v2-signing-enabled true #{apksigner_opts}--out '#{apk_path_signed}' '#{apk_path}'`
|
290
270
|
puts ""
|
291
271
|
puts output
|
292
272
|
|
293
|
-
UI.message("Verifing APK signature: #{apk_path_signed}")
|
273
|
+
UI.message("Verifing APK signature (output): #{apk_path_signed}")
|
294
274
|
output = `#{build_tools_path}apksigner verify '#{apk_path_signed}'`
|
295
275
|
puts ""
|
296
276
|
puts output
|
277
|
+
|
278
|
+
|
279
|
+
# https://developer.android.com/studio/command-line/zipalign
|
297
280
|
if zip_align != false
|
281
|
+
apk_path_aligned = apk_path_signed.gsub(".apk", "-aligned.apk")
|
298
282
|
`rm -f '#{apk_path_aligned}'`
|
283
|
+
UI.message("Aligning APK (zipalign): #{apk_path_signed}")
|
284
|
+
output = `#{build_tools_path}zipalign -v 4 '#{apk_path_signed}' '#{apk_path_aligned}'`
|
285
|
+
puts ""
|
286
|
+
puts output
|
287
|
+
|
288
|
+
if !File.file?(apk_path_aligned)
|
289
|
+
raise "Aligned APK not exists!"
|
290
|
+
end
|
291
|
+
|
292
|
+
`rm -f '#{apk_path_signed}'`
|
293
|
+
apk_path_signed = apk_path_aligned
|
294
|
+
|
295
|
+
else
|
296
|
+
UI.message("No zip align - deactivated via parameter!")
|
299
297
|
end
|
300
298
|
|
301
299
|
apk_path_signed
|
@@ -400,6 +398,11 @@ module Fastlane
|
|
400
398
|
# Check OpenSSL:
|
401
399
|
self.check_ssl_version(false)
|
402
400
|
|
401
|
+
# Check is backward-compatibility is required:
|
402
|
+
if !compat_key.to_s.strip.empty?
|
403
|
+
UI.message("Compatiblity version: #{compat_key}")
|
404
|
+
end
|
405
|
+
|
403
406
|
# Init workign local directory:
|
404
407
|
dir_name = ENV['HOME'] + '/.match_keystore'
|
405
408
|
unless File.directory?(dir_name)
|
@@ -408,7 +411,11 @@ module Fastlane
|
|
408
411
|
end
|
409
412
|
|
410
413
|
# Init 'security password' for AES encryption:
|
411
|
-
|
414
|
+
if compat_key == "1"
|
415
|
+
key_name = "#{self.to_md5(git_url)}.hex"
|
416
|
+
else
|
417
|
+
key_name = "#{self.to_md5(git_url)}-#{self::KEY_VERSION}.hex"
|
418
|
+
end
|
412
419
|
key_path = File.join(dir_name, key_name)
|
413
420
|
# UI.message(key_path)
|
414
421
|
if !File.file?(key_path)
|
@@ -456,14 +463,10 @@ module Fastlane
|
|
456
463
|
gitDir = File.join(repo_dir, '/.git')
|
457
464
|
if !File.directory?(gitDir)
|
458
465
|
UI.message("Cloning remote Keystores repository...")
|
459
|
-
puts ''
|
460
466
|
`git clone #{git_url} #{repo_dir}`
|
461
|
-
puts ''
|
462
467
|
else
|
463
468
|
UI.message("Pulling remote Keystores repository...")
|
464
|
-
puts ''
|
465
469
|
`cd #{repo_dir} && git pull`
|
466
|
-
puts ''
|
467
470
|
end
|
468
471
|
|
469
472
|
# Load parameters from JSON for CI or Unit Tests:
|
@@ -564,7 +567,7 @@ module Fastlane
|
|
564
567
|
self.decrypt_file(properties_encrypt_path, properties_path, key_path, false)
|
565
568
|
|
566
569
|
properties = self.load_properties(properties_path)
|
567
|
-
Pry::ColorPrinter.pp(properties)
|
570
|
+
# Pry::ColorPrinter.pp(properties)
|
568
571
|
key_password = properties['keyPassword']
|
569
572
|
alias_name = properties['aliasName']
|
570
573
|
alias_password = properties['aliasPassword']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-match_keystore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christopher NEY
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -167,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
167
167
|
- !ruby/object:Gem::Version
|
168
168
|
version: '0'
|
169
169
|
requirements: []
|
170
|
-
rubygems_version: 3.
|
170
|
+
rubygems_version: 3.2.6
|
171
171
|
signing_key:
|
172
172
|
specification_version: 4
|
173
173
|
summary: Easily sync your Android keystores across your team
|