এখানে আমার আগের উত্তরটির একটি আধুনিকীকরণ আসে যা নীচে দেখা যাবে। এই একটি গ্রেডেল ৪.৪ এবং অ্যান্ড্রয়েড স্টুডিও ৩.১.১ নিয়ে চলছে ।
এই লিপিটি কী করে:
- একটি তৈরি করে version.properties ফাইল যদি কেউ নেই (নীচে ভোট পল Cantrell এর উত্তর, যা আমি কোথায় এই উত্তরটি মত যদি তোমার কাছ থেকে ধারণা পেয়েছেন) বিদ্যমান
- প্রতিটি বিল্ড, ডিবাগ রিলিজের জন্য বা আপনি যে কোনও সময় অ্যান্ড্রয়েড স্টুডিওতে রান বোতাম টিপুন VERSION_BUILD সংখ্যা বৃদ্ধি পায়।
- প্রতিবার যখন আপনি কোনও রিলিজ একত্রিত করেন ততবার প্লে স্টোরের জন্য আপনার অ্যান্ড্রয়েড সংস্করণকোড বৃদ্ধি পায় এবং আপনার প্যাচ সংখ্যা বাড়বে।
- বোনাস: বিল্ডটি শেষ হয়ে যাওয়ার পরে
projectDir/apk
এটি আরও অ্যাক্সেসযোগ্য করার জন্য আপনার APK কে অনুলিপি করে ।
এই স্ক্রিপ্টটি এমন একটি সংস্করণ নম্বর তৈরি করবে যা দেখে মনে হবে v1.3.4 (123)
এবং AppName-v1.3.4.apk এর মতো একটি APK ফাইল তৈরি করবে ।
Major version ⌄ ⌄ Build version
v1.3.4 (123)
Minor version ⌃|⌃ Patch version
প্রধান সংস্করণ: বড় পরিবর্তনের জন্য ম্যানুয়ালি পরিবর্তন করতে হবে।
গৌণ সংস্করণ: কিছুটা কম বড় পরিবর্তনের জন্য ম্যানুয়ালি পরিবর্তন করতে হবে।
প্যাচ সংস্করণ: চলমান অবস্থায় বৃদ্ধি পায়gradle assembleRelease
বিল্ড সংস্করণ: প্রতিটি বিল্ড বৃদ্ধি করে
সংস্করণ নম্বর: প্যাচ সংস্করণ হিসাবে একই , এটি প্রতিটি সংস্করণ কোডের জন্য যা প্লে স্টোরটি প্রতিটি নতুন এপিপি আপলোডের জন্য বাড়ানো দরকার।
কেবল নীচে 1 - 3 লেবেলযুক্ত মন্তব্যে সামগ্রী পরিবর্তন করুন এবং স্ক্রিপ্টটি বাকী কাজটি করা উচিত। :)
android {
compileSdkVersion 27
buildToolsVersion '27.0.3'
def versionPropsFile = file('version.properties')
def value = 0
Properties versionProps = new Properties()
if (!versionPropsFile.exists()) {
versionProps['VERSION_PATCH'] = "0"
versionProps['VERSION_NUMBER'] = "0"
versionProps['VERSION_BUILD'] = "-1" // I set it to minus one so the first build is 0 which isn't super important.
versionProps.store(versionPropsFile.newWriter(), null)
}
def runTasks = gradle.startParameter.taskNames
if ('assembleRelease' in runTasks) {
value = 1
}
def mVersionName = ""
def mFileName = ""
if (versionPropsFile.canRead()) {
versionProps.load(new FileInputStream(versionPropsFile))
versionProps['VERSION_PATCH'] = (versionProps['VERSION_PATCH'].toInteger() + value).toString()
versionProps['VERSION_NUMBER'] = (versionProps['VERSION_NUMBER'].toInteger() + value).toString()
versionProps['VERSION_BUILD'] = (versionProps['VERSION_BUILD'].toInteger() + 1).toString()
versionProps.store(versionPropsFile.newWriter(), null)
// 1: change major and minor version here
mVersionName = "v1.0.${versionProps['VERSION_PATCH']}"
// 2: change AppName for your app name
mFileName = "AppName-${mVersionName}.apk"
defaultConfig {
minSdkVersion 21
targetSdkVersion 27
applicationId "com.example.appname" // 3: change to your package name
versionCode versionProps['VERSION_NUMBER'].toInteger()
versionName "${mVersionName} Build: ${versionProps['VERSION_BUILD']}"
}
} else {
throw new FileNotFoundException("Could not read version.properties!")
}
if ('assembleRelease' in runTasks) {
applicationVariants.all { variant ->
variant.outputs.all { output ->
if (output.outputFile != null && output.outputFile.name.endsWith('.apk')) {
outputFileName = mFileName
}
}
}
}
task copyApkFiles(type: Copy){
from 'build/outputs/apk/release'
into '../apk'
include mFileName
}
afterEvaluate {
assembleRelease.doLast {
tasks.copyApkFiles.execute()
}
}
signingConfigs {
...
}
buildTypes {
...
}
}
================================================== ==
প্রাথমিক উত্তর:
আমি চাই সংস্করণ নামটিও স্বয়ংক্রিয়ভাবে বৃদ্ধি পাবে। সুতরাং এটি আমার পক্ষে পুরোপুরি কাজ করেছিল কমন্সওয়্যারের উত্তরের কেবলমাত্র একটি সংযোজন। এটি আমার জন্য কাজ করে কি না
defaultConfig {
versionCode code
versionName "1.1." + code
minSdkVersion 14
targetSdkVersion 18
}
সম্পাদনা করুন:
আমি যেমন কিছুটা অলস, আমি চাই আমার সংস্করণটি যথাসম্ভব স্বয়ংক্রিয়ভাবে কাজ করা হোক। আমি যা চাই তা হ'ল একটি বিল্ড সংস্করণ যা প্রতিটি বিল্ডের সাথে বৃদ্ধি পায়, যখন সংস্করণ নম্বর এবং সংস্করণ নাম কেবল তখনই বাড়ানো হয় যখন আমি একটি রিলিজ বিল্ড তৈরি করি।
এটিই আমি গত এক বছর ধরে ব্যবহার করছি, বেসিকগুলি কমন্সওয়্যারের উত্তর এবং আমার আগের উত্তর, আরও কিছু থেকে from নিম্নলিখিত সংস্করণে এর ফলাফল:
সংস্করণ নাম: 1.0.5 (123) -> মেজর.মিনোর.প্যাচ (বিল্ড), মেজর এবং মাইনর ম্যানুয়ালি পরিবর্তন করা হয়েছে।
বিল্ড.gradle এ:
...
android {
compileSdkVersion 23
buildToolsVersion '23.0.1'
def versionPropsFile = file('version.properties')
if (versionPropsFile.canRead()) {
def Properties versionProps = new Properties()
versionProps.load(new FileInputStream(versionPropsFile))
def value = 0
def runTasks = gradle.startParameter.taskNames
if ('assemble' in runTasks || 'assembleRelease' in runTasks || 'aR' in runTasks) {
value = 1;
}
def versionMajor = 1
def versionMinor = 0
def versionPatch = versionProps['VERSION_PATCH'].toInteger() + value
def versionBuild = versionProps['VERSION_BUILD'].toInteger() + 1
def versionNumber = versionProps['VERSION_NUMBER'].toInteger() + value
versionProps['VERSION_PATCH'] = versionPatch.toString()
versionProps['VERSION_BUILD'] = versionBuild.toString()
versionProps['VERSION_NUMBER'] = versionNumber.toString()
versionProps.store(versionPropsFile.newWriter(), null)
defaultConfig {
versionCode versionNumber
versionName "${versionMajor}.${versionMinor}.${versionPatch} (${versionBuild}) Release"
minSdkVersion 14
targetSdkVersion 23
}
applicationVariants.all { variant ->
variant.outputs.each { output ->
def fileNaming = "apk/RELEASES"
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
output.outputFile = new File(getProject().getRootDir(), "${fileNaming}-${versionMajor}.${versionMinor}.${versionPatch}-${outputFile.name}")
}
}
}
}
} else {
throw new GradleException("Could not read version.properties!")
}
...
}
...
প্যাচ এবং versionCode যদি আপনার সাথে টার্মিনাল মাধ্যমে আপনার প্রকল্প জড় বেড়ে যায় 'জড়' , 'assembleRelease' বা 'AR' যা আপনার প্রকল্পের রুট APK নামক / রিলিজে একটি নতুন ফোল্ডার তৈরি করে যাতে আপনি বিল্ড / আউটপুট মাধ্যমে সন্ধান করতে হবে না / আরও / আরও / আপনার এপিকে খুঁজতে আরও
আপনার সংস্করণ বৈশিষ্ট্যগুলির মতো দেখতে এটির প্রয়োজন হবে:
VERSION_NUMBER=1
VERSION_BUILD=645
VERSION_PATCH=1
স্পষ্টতই 0 দিয়ে শুরু করুন