Her bir uygulama varyantına ait APK dosyalarını, uygulama adı, versionName, versionCode ve varsa, yapı numarası içerecek şekilde yeniden adlandırmaya çalışıyorum. Şimdiye kadar uygulama adı dışında her şey çalışıyor.Android Gradle Okuma Uygulaması Adlar from strings.xml
AndroidManifest.xml
dosyasının android: label için kullandığı aynı değeri kullanmak istiyorum. Bu, @string/app_name
dize kaynağından gelir. Ben kullanarak kaynak değerlerini değiştirmek için yeteneği gördük:
resValue "string", "app_name", "Some new value"
Ama sadece bu değeri okumak ve benim APK dosyasını adlandırmak için kullanmak istiyorum.
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
renameApk(variant, output)
}
}
def renameApk(variant, output) {
def apkPath = output.outputFile.parent
def baseName = project.archivesBaseName
baseName += "-${variant.buildType.name}"
// add version name and version code
baseName += "-v${variant.mergedFlavor.versionName}-${variant.mergedFlavor.versionCode}"
// if built on jenkins ci, add jenkins build number:
def buildNumber = System.getenv('BUILD_NUMBER')
if (buildNumber && buildNumber.size() > 0) {
baseName += "-b${buildNumber}"
}
// if the variant will not be zipAligned, specify that
if (!output.zipAlign) {
baseName += '-unaligned'
}
// set the output file
output.outputFile = new File(apkPath, "${baseName}.apk");
}
Gerçekten beyaz etiket uygulaması içindir. Yapım çıktılarımızın, halihazırda oluşturduğumuz mevcut satıcıya göre farklı şekilde adlandırıldığından emin olmak niyetindeydim. Bu şekilde QA departmanımız, APK adına dayalı farklılıkları kolayca söyleyebilir. Gradle.properties'i kullanmaya dair bir örnek var mı? – steji113
@ steji113, farklı etiketleri nasıl ayırt ettiğinizi söyler misiniz - ayrı git dalları, ürün tatları veya başka bir şey kullanıyor musunuz? Buna dayanarak uygulama adını oluşturmanın güzel bir yolunu bulmaya çalışacağım. –
Bu nedenle, ürün aromalarının piyasaya sürülmesinden önce beyaz etiketleme altyapısına sahibiz. Temel olarak bazı dize kaynaklarını OEM değerlerine alacak ve sonra bir derleme çalıştıracak bir python betiği yazdık. Şu anda bizim Jenkins inşa ortamı en son kodu çeker, python OEM komut dosyasını çalıştırır, sonra bir taslak oluşturma işlemini gerçekleştirir ve son olarak OEM komut dosyası tarafından yapılan değişiklikleri geri döndürür. Bunu artık farklı bir şekilde yapmaya çalışacağız. Ne olduğunu tam olarak bilmiyoruz. – steji113