build(mobile): require explicit validated Android release identity
This commit is contained in:
1 parent
52f792f00f
commit
456919df43
2 files changed
+39
-2
No files matched your search
@@ -53,6 +53,26 @@ npm run android:sync --workspaces=false
|
||||
üretim imzası içermez ve kurulabilir sürüm olarak paylaşılmamalıdır. Özel üretim
|
||||
imza anahtarı oluşturulmadı; mağaza hesabı veya ücretli hizmet açılmadı.
|
||||
|
||||
Yayın adayı için sürüm ve Android sürüm kodu birlikte açıkça verilir:
|
||||
|
||||
```powershell
|
||||
.\android\gradlew.bat -p android assembleRelease '-PaiturkReleaseVersion=0.1.4-beta.1' '-PaiturkReleaseVersionCode=6'
|
||||
```
|
||||
|
||||
Bu komut yine **imzasız** APK üretir; üretim imzasını veya cihaz kabulünü atlamaz.
|
||||
İki parametreden yalnız biri, `-dev` etiketi veya 5 ve daha küçük sürüm kodu
|
||||
verilirse derleme durur. Parametresiz geliştirici derlemesi `0.1.4-dev` / 5 kalır.
|
||||
Sonraki yayınlarda sürüm kodunu son dağıtılmış APK'dan daha büyük seçin; buradaki
|
||||
alt sınır yalnız mevcut geliştirme sürümünü korur, uzak yayın envanterini sorgulamaz.
|
||||
|
||||
12 Eylül 2026: gerçek Gradle `assembleRelease` çalışması bu parametrelerle 55
|
||||
saniyede tamamlandı; `aapt2` uygulama kimliği, `0.1.4-beta.1` / 6 ve debug
|
||||
bayrağının olmadığını doğruladı. Test çıktısının SHA-256 değeri
|
||||
`a93b93b3080ec484cc998ef316528ff7b947fa366b2ff5de375386acc66fffc4`.
|
||||
`apksigner verify` imzasız çıktıyı reddetti (beklenen sonuç). Ayrı gerçek Gradle
|
||||
çalışmaları eksik sürüm kodunu, `0.1.4-dev` yayın etiketini ve sürüm kodu 5'i
|
||||
reddetti. Bu çıktı yayımlanmadı; imza ve cihaz kabulü değildir.
|
||||
|
||||
### Dağıtım APK'sının doğrulanması
|
||||
|
||||
`scripts/verify-android-release.mjs` dağıtım öncesi salt okunur APK kontrolüdür.
|
||||
|
||||
@@ -1,5 +1,22 @@
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
// Release identity is explicit; ordinary developer builds retain the -dev label.
|
||||
def releaseVersion = providers.gradleProperty('aiturkReleaseVersion').orNull
|
||||
def releaseCode = providers.gradleProperty('aiturkReleaseVersionCode').orNull
|
||||
if ((releaseVersion == null) != (releaseCode == null)) {
|
||||
throw new GradleException('Both aiturkReleaseVersion and aiturkReleaseVersionCode are required')
|
||||
}
|
||||
def selectedVersionCode = 5
|
||||
if (releaseVersion != null) {
|
||||
if (!(releaseVersion ==~ /\d+\.\d+\.\d+(?:-beta\.\d+)?/)) {
|
||||
throw new GradleException('Release version must be X.Y.Z or X.Y.Z-beta.N; -dev is not a release')
|
||||
}
|
||||
if (!(releaseCode ==~ /[1-9]\d{0,9}/) || releaseCode.toLong() <= 5 || releaseCode.toLong() > 2100000000L) {
|
||||
throw new GradleException('Release version code must be greater than 5 and at most 2100000000')
|
||||
}
|
||||
selectedVersionCode = releaseCode.toInteger()
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "online.turkservis.aiturk.mobile"
|
||||
compileSdk = rootProject.ext.compileSdkVersion
|
||||
@@ -7,8 +24,8 @@ android {
|
||||
applicationId "online.turkservis.aiturk.mobile"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 5
|
||||
versionName "0.1.4-dev"
|
||||
versionCode selectedVersionCode
|
||||
versionName releaseVersion ?: "0.1.4-dev"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
aaptOptions {
|
||||
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
|
||||
|
||||
Reference in new issue
Block a user