গ্রেডেল ব্যবহার করে APK ফাইলনেমে ভার্সননেম কীভাবে সেট করবেন?


169

আমি গ্রেড স্বয়ংক্রিয়ভাবে উত্পাদিত APK ফাইলের নামটিতে একটি নির্দিষ্ট সংস্করণ নম্বর সেট করার চেষ্টা করছি।

এখন গ্রেড উত্পন্ন করে myapp-release.apkতবে আমি এটির মতো দেখতে চাই myapp-release-1.0.apk

অদ্ভুত বলে মনে হচ্ছে এমন বিকল্পগুলির নাম পরিবর্তন করার চেষ্টা করেছি। এটি করার কোন সহজ পথ আছে কি?

buildTypes {
    release {
       signingConfig signingConfigs.release
       applicationVariants.each { variant ->
       def file = variant.outputFile
       variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" +    defaultConfig.versionName + ".apk"))
    }
}

আমি ভাগ্যবিহীন উপরের কোডটি চেষ্টা করেছি। কোনও পরামর্শ? (গ্রেড 1.6 ব্যবহার করে)

উত্তর:


225

আমাকে কেবল এক জায়গায় সংস্করণের নাম পরিবর্তন করতে হবে। কোডটিও সহজ।

নীচের উদাহরণগুলি নির্বাচিত বিল্ড ভেরিয়েন্টের উপর নির্ভর করে মাইকম্পানি-মাইঅ্যাপনেম-১.৪.৮-ডিবাগ.এপকে বা মাইকম্পানি-মাইঅ্যাপনাম-১.৪.৮-রিলিজ.এপকে নামকৃত এপিপি ফাইল তৈরি করবে ।

নোট করুন যে এই সমাধানটি APK এবং অ্যাপ্লিকেশন বান্ডিল উভয় (.aab ফাইল) এ কাজ করে

আরও দেখুন: অ্যান্ড্রয়েড প্রকল্পের জন্য গ্রেডে অগ্রগামী ম্যাপিং ফাইলের নামটি কীভাবে পরিবর্তন করা যায়

সাম্প্রতিক গ্র্যাডল প্লাগইন জন্য সমাধান

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"
    defaultConfig {
        applicationId "com.company.app"
        minSdkVersion 13
        targetSdkVersion 21
        versionCode 14       // increment with every release
        versionName '1.4.8'   // change with every release
        setProperty("archivesBaseName", "MyCompany-MyAppName-$versionName")
    }
}

উপরের সমাধানটি নিম্নলিখিত অ্যান্ড্রয়েড গ্রেডল প্লাগইন সংস্করণ দিয়ে পরীক্ষা করা হয়েছে:

  • 3.5.2 (নভেম্বর 2019)
  • 3.3.0 (জানুয়ারী 2019)
  • 3.1.0 (মার্চ 2018)
  • 3.0.1 (নভেম্বর 2017)
  • 3.0.0 (অক্টোবর 2017)
  • 2.3.2 (মে 2017)
  • ২.৩.১ (এপ্রিল 2017)
  • ২.৩.০ (ফেব্রুয়ারী ২০১))
  • ২.২.৩ (ডিসেম্বর ২০১))
  • 2.2.2
  • ২.২.০ (সেপ্টেম্বর ২০১))
  • ২.১.৩ (আগস্ট ২০১))
  • 2.1.2
  • 2.0.0 (এপ্রিল 2016)
  • 1.5.0 (2015/11/12)
  • 1.4.0-বিটা 6 (2015/10/05)
  • 1.3.1 (2015/08/11)

নতুন সংস্করণ প্রকাশের সাথে সাথে আমি এই পোস্টটি আপডেট করব।

সমাধানটি কেবলমাত্র 1.1.3-1.3.0 সংস্করণে পরীক্ষিত

নিম্নলিখিত অ্যান্ড্রয়েড গ্রেডল প্লাগিন সংস্করণগুলির সাথে নিম্নলিখিত সমাধানটি পরীক্ষা করা হয়েছে:

অ্যাপ্লিকেশন গ্রেড ফাইল:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"
    defaultConfig {
        applicationId "com.company.app"
        minSdkVersion 13
        targetSdkVersion 21
        versionCode 14       // increment with every release
        versionName '1.4.8'   // change with every release
        archivesBaseName = "MyCompany-MyAppName-$versionName"
    }
}

11
আমি মনে করি ফাইলগুলির নতুন নামকরণের জন্য অন্য কোনও কাজ লেখার পরিবর্তে এটি সঠিক পন্থা।
নন্দীশ এ

5
কেবল আর্কাইভবেসনেম = "মাইকম্পানি-মাই অ্যাপ্লনেম-$ ভার্সন নেম" এ পরিবর্তন করুন যদি আপনার ওসিডি থাকে এবং এএস না চান তবে আপনাকে +
লিগি

4
দুর্দান্ত অনুসন্ধান, তবে বিভিন্ন সংস্করণ কোডগুলির সাথে স্বাদে ভাল কাজ করে না। এগুলি সমস্ত একই সংস্করণ কোড সহ শেষ হয়।
ওয়েস্টন

2
variant.buildType.nameনাম যুক্ত করার কোনও উপায় আছে কি ? আমি জানি এটি সত্যই কোনও ডিফল্ট কনফিগার সম্পর্কিত নয়, তবে কীভাবে অপ্রচলিত variantOutput.getAssemble()সতর্কতা অপসারণ করা যায় তা নির্ধারণ করার চেষ্টা করছি
অ্যালান ডব্লু

2
Apk নাম থেকে শেষ '-debug' / '-relays' মুছে ফেলা সম্ভব?
ilamuromets

173

এটি আমার সমস্যার সমাধান করেছে: applicationVariants.allপরিবর্তে ব্যবহার করেapplicationVariants.each

buildTypes {
      release {
        signingConfig signingConfigs.release
        applicationVariants.all { variant ->
            def file = variant.outputFile
            variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk")) 
        }
    }       
}

হালনাগাদ:

সুতরাং দেখে মনে হচ্ছে এটি অ্যান্ড্রয়েড স্টুডিও গ্রেডেল প্লাগইন এর 0.14+ সংস্করণে কাজ করে না।

এটি কৌশলটি করে (এই প্রশ্ন থেকে রেফারেন্স ):

android {
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            output.outputFile = new File(
                    output.outputFile.parent,
                    output.outputFile.name.replace(".apk", "-${variant.versionName}.apk"))
        }
    }
}

3
গ্রেড কনফিগের পরিবর্তে আমার যদি একটি versionNameসংজ্ঞা দেওয়া থাকে তবে কীভাবে এটি কাজ করবেন তা আপনি জানেন AndroidManifest.xml? এটা myapp-release-null.apkএখন আমাকে দেয় ।
আইও বনাস

1
এই উত্তরটি গ্রেড প্লাগইনের 0.14+ সংস্করণ সহ কাজ করে না। তাদের সাথে কাজ করার জন্য কোনও আপডেট?
Argyle

1
@withoutclass আমি এটা নিজস্ব প্রশ্ন হিসাবে এই জিজ্ঞাসা এবং তা এখানে উত্তরে করেছেন: stackoverflow.com/questions/27068505/...
Argyle

2
পরিবর্তন: মানুষের জন্য Gradle 4 আপডেট eachকরার allএবং output.outputFileকরতে outputFileName। যদি কেউ এই কাজগুলি স্বীকার করে তবে উত্তরে এটি সম্পাদনা করা যেতে পারে :)
পিএইচপিরেট

6
@ পিএইচপিরেট: প্রায় কাজ করে:Error:(34, 0) Cannot set the value of read-only property 'name'
ম্যাকিং হাঁস

47

(অ্যান্ড্রয়েড স্টুডিও 3.0 এবং গ্রেডল 4 এর সাথে কাজ করার জন্য সম্পাদনা করুন)

আমি আরও জটিল এপিপি ফাইলের নাম পরিবর্তনের বিকল্পের সন্ধান করছিলাম এবং আমি এই আশায় লিখেছিলাম এটি অন্য কারও পক্ষে সহায়ক। এটি নিম্নলিখিত ডেটা দিয়ে এপিকে নতুন নাম দেয়:

  • গন্ধ
  • বিল্ড টাইপ
  • সংস্করণ
  • তারিখ

এটি গ্রেড ক্লাসে আমার কিছুটা গবেষণা এবং অন্যান্য উত্তরগুলি থেকে কিছুটা অনুলিপি / পেস্ট নিয়েছিল। আমি গ্রেড 3.1.3 ব্যবহার করছি ।

বিল্ড.gradle এ:

android {

    ...

    buildTypes {
        release {
            minifyEnabled true
            ...
        }
        debug {
            minifyEnabled false
        }
    }

    productFlavors {
        prod {
            applicationId "com.feraguiba.myproject"
            versionCode 3
            versionName "1.2.0"
        }
        dev {
            applicationId "com.feraguiba.myproject.dev"
            versionCode 15
            versionName "1.3.6"
        }
    }

    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            def project = "myProject"
            def SEP = "_"
            def flavor = variant.productFlavors[0].name
            def buildType = variant.variantData.variantConfiguration.buildType.name
            def version = variant.versionName
            def date = new Date();
            def formattedDate = date.format('ddMMyy_HHmm')

            def newApkName = project + SEP + flavor + SEP + buildType + SEP + version + SEP + formattedDate + ".apk"

            outputFileName = new File(newApkName)
        }
    }
}

আপনি যদি আজ (13-10-2016) 10:47-এ সংকলন করেন তবে আপনার পছন্দ অনুসারে স্বাদ এবং বিল্ড টাইপের উপর নির্ভর করে নিম্নলিখিত ফাইলের নাম পাবেন:

  • দেব ডিবাগ : আমারপ্রজেক্ট_দেভ_দেবগ_1.3.6 31016_1047.apk
  • দেব প্রকাশ : আমারপ্রজেক্ট_দেভ_রেইল__1.৩. _1৩১০১_1_০৪.এপকে
  • প্রোড ডিবাগ : মাইপ্রজেক্ট_ প্রোড_ডিবগ_1.2.0 _131016_1047.apk
  • প্রোড রিলিজ : মাইপ্রজেক্ট_ প্রোড_রেলেজ_1.2.0 _131016_1047.apk

দ্রষ্টব্য: স্বাক্ষরবিহীন সংস্করণ apk নামটি এখনও ডিফল্ট।


দুর্দান্ত সমাধান। আমি এটি চেষ্টা করেছিলাম এবং এটি আমার সমস্যার জন্য উপযুক্ত। ধন্যবাদ!
পাবেল

জামারিন স্টুডিওতে একই পন্থাটি ব্যবহার করা কি সম্ভব?
আলেসান্দ্রো কালিয়ারো

এটি সম্ভব হলে দুর্দান্ত হত, তবে আমি এখনই একটি জামারিন কোর্সটি শুরু করছি এবং এটি সম্ভব কিনা তা জানতে আমার এখনও এটির সাথে পর্যাপ্ত অনুশীলন হয়নি have আমি এই প্রশ্নটি জিজ্ঞাসা করব এবং আবার এখানে আসব।
Fer

কোর্সের শিক্ষকের কাছ থেকে মন্তব্য: "একটি বিকল্প রয়েছে যেখানে আপনি উত্পন্ন ফাইলগুলির নাম পরিবর্তন করতে আদেশগুলি ব্যবহার করতে পারেন"। সুতরাং, জামারিনের কাছ থেকে ব্যবহারের পদ্ধতির অবশ্যই অ্যান্ড্রয়েড স্টুডিওর জন্য আমি যেভাবে লিখেছি তার থেকে আলাদা হওয়া উচিত, দুঃখিত।
ফের

3
ত্রুটি সমাধান করার জন্য শুধুমাত্র পাঠযোগ্য সম্পত্তি 'outputFile' এর মান সেট করা যায় না - হিসেবে থাকার জন্য আগের মন্তব্যে উল্লেখ "পরিবর্তন eachকরতে allএবং output.outputFileকরতে outputFileName" - এই পোস্টের কিছু বিবরণ প্রদান করে: stackoverflow.com/a/44265374/2162226
জিন বো

19

সংক্ষেপে, যারা build.gradle(যেমন আমার) প্যাকেজ আমদানি করতে জানেন না তাদের জন্য নিম্নলিখিতটি ব্যবহার করুন buildTypes,

buildTypes {
      release {
        signingConfig signingConfigs.release
        applicationVariants.all { variant ->
            def file = variant.outputFile
            def manifestParser = new com.android.builder.core.DefaultManifestParser()
            variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" + manifestParser.getVersionName(android.sourceSets.main.manifest.srcFile) + ".apk")) 
        }
    }       
}

===== সম্পাদনা =====

আপনি যদি নিজের ফাইলটিতে versionCodeএবং এটির মতো সেট করেন :versionNamebuild.gradle

defaultConfig {
    minSdkVersion 15
    targetSdkVersion 19
    versionCode 1
    versionName "1.0.0"
}

আপনার এটি এটি সেট করা উচিত:

buildTypes {   
        release {
            signingConfig signingConfigs.releaseConfig
            applicationVariants.all { variant ->
                def file = variant.outputFile
                variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
            }
        }
}


====== অ্যান্ড্রয়েড স্টুডিও সহ 1.0 সম্পাদনা ======

আপনি যদি অ্যান্ড্রয়েড স্টুডিও 1.0 ব্যবহার করেন তবে আপনি এর মতো একটি ত্রুটি পাবেন:

Error:(78, 0) Could not find property 'outputFile' on com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@67e7625f.

আপনার build.Typesএই অংশটি পরিবর্তন করা উচিত :

buildTypes {
        release {
            signingConfig signingConfigs.releaseConfig
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
                }
            }
        }
    }

এটি দুর্দান্ত কাজ করে। তবে, যেহেতু গ্রেড বিল্ডে আমি আমার প্রকাশিত সংস্করণটি বাড়িয়েছি, এটি পুরানো (প্রাক-বর্ধন) মান সহ একটি APK তৈরি করবে। গ্রেড স্ক্রিপ্ট সংস্করণ সংখ্যা বৃদ্ধির পরে এটি কোনও প্রভাব ফেলবে তা নিশ্চিত করার কোনও উপায়?
গায়

1
@ গুয় সরি এতক্ষণ নিলেন আমি উত্তরটি সম্পাদনা করেছি, দেখুন এটি আপনার সমস্যার সমাধান করতে পারে কিনা।
ওয়েসলি

17

আপনি যদি ডিফল্ট কনফিগ ব্লকে সংস্করণ নাম নির্দিষ্ট না করে থাকেন তবে defaultConfig.versionNameফলাফল হবেnull

ম্যানিফেস্ট থেকে সংস্করণ নাম পেতে আপনি বিল্ড.gradle এ নিম্নলিখিত কোড লিখতে পারেন:

import com.android.builder.DefaultManifestParser

def manifestParser = new DefaultManifestParser()
println manifestParser.getVersionName(android.sourceSets.main.manifest.srcFile)

7
আমি বিশ্বাস করি গ্রেডের পরবর্তী সংস্করণগুলির সাথে এটি এখন com.android.builder.core.DefaultManLiveParser
রায়ান এস

8

আমার ক্ষেত্রে, আমি কেবল আলাদা apkনাম releaseএবং debugবৈকল্পিকগুলির উত্পাদনের স্বয়ংক্রিয়তার জন্য একটি উপায় খুঁজে পেতে চেয়েছিলাম । একটি শিশু হিসাবে এই স্নিপেটটি রেখে আমি এটি সহজেই পরিচালনা করতে পেরেছি android:

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def appName = "My_nice_name_"
        def buildType = variant.variantData.variantConfiguration.buildType.name
        def newName
        if (buildType == 'debug'){
            newName = "${appName}${defaultConfig.versionName}_dbg.apk"
        } else {
            newName = "${appName}${defaultConfig.versionName}_prd.apk"
        }
        output.outputFile = new File(output.outputFile.parent, newName)
    }
}

নতুন অ্যান্ড্রয়েড গ্রেডেল প্লাগইন 3.0.0 এর জন্য আপনি এর মতো কিছু করতে পারেন:

 applicationVariants.all { variant ->
    variant.outputs.all {
        def appName = "My_nice_name_"
        def buildType = variant.variantData.variantConfiguration.buildType.name
        def newName
        if (buildType == 'debug'){
            newName = "${appName}${defaultConfig.versionName}_dbg.apk"
        } else {
            newName = "${appName}${defaultConfig.versionName}_prd.apk"
        }
        outputFileName = newName
    }
}

এটি এমন কিছু উত্পাদন করে: My_nice_name_3.2.31_dbg.apk


6

আর একটি বিকল্প নিম্নলিখিতটি ব্যবহার করা হয়:

String APK_NAME = "appname"
int VERSION_CODE = 1
String VERSION_NAME = "1.0.0"

project.archivesBaseName = APK_NAME + "-" + VERSION_NAME;

    android {
      compileSdkVersion 21
      buildToolsVersion "21.1.1"

      defaultConfig {
        applicationId "com.myapp"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode VERSION_CODE
        versionName VERSION_NAME
      }

       .... // Rest of your config
}

এটি আপনার অ্যাপ্লিকেশন আউটপুটগুলিতে "অ্যাপনাম -০.০.০" সেট করবে।


দুঃখিত (আর কোনও কাজ করে না): No such property: archivesBaseName for class: org.gradle.api.internal.project.DefaultProject_Decorated
মার্টিন

আপনি কোন গ্রেড সংস্করণ ব্যবহার করছেন?
মার্কো আরএস

6

গ্রেডেল 6+

আমি এখন নিম্নলিখিতটি অ্যান্ড্রয়েড স্টুডিও and.০ এবং গ্রেডেল .4.৪ এ ব্যবহার করছি:

android {
    defaultConfig {
        applicationId "com.mycompany.myapplication"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode 15
        versionName "2.1.1"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            applicationVariants.all { variant ->
                variant.outputs.all {
                    outputFileName = "ApplicationName-${variant.name}-${variant.versionName}.apk"
                }
            }
        }
    }
}

গ্রেডেল 4

সিনট্যাক্স থেকে Gradle 4 (অ্যান্ড্রয়েড স্টুডিও 3+) (একটু পরিবর্তিত হয়েছে output.outputFileথেকে outputFileName, থেকে ধারণা এই উত্তর এখন হচ্ছে:

android {
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def newName = outputFileName
            newName.replace(".apk", "-${variant.versionName}.apk")
            outputFileName = new File(newName)
        }
    }
}

গ্রেড 6 এর জন্য এটি কীভাবে ঠিক করবেন কোনও ধারণা?
স্পার্টিগডব্লিউ

@ স্পার্টিগড উত্তরটি আপডেট করেছেন
পিএইচপিরেট

5

@ জোন উত্তর অনুসারে , এপিকে নামকরণের সঠিক উপায়

defaultConfig {
        applicationId "com.irisvision.patientapp"
        minSdkVersion 24
        targetSdkVersion 22
        versionCode 2  // increment with every release
        versionName "0.2" // change with every release
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        //add this line
        archivesBaseName = "AppName-${versionName}-${new Date().format('yyMMdd')}"
    }   

বা অন্য কোনও উপায়ে আপনি একই ফলাফল অর্জন করতে পারেন

android {
    ...

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            def formattedDate = new Date().format('yyMMdd')
            outputFileName = "${outputFileName.replace(".apk","")}-v${defaultConfig.versionCode}-${formattedDate}.apk"
        }
    }
}

এই ভাল লাগছে! আমি এটি আরও ভাল পছন্দ করি তবে বর্তমানে এটি করার মতো অন্যান্য উপায়গুলি।
ড্রয়েড ক্রিস

3

অনেকগুলি উত্তর রয়েছে যা পুরো বা কিছু সংশোধনীর পরে সঠিক। তবে আমি যাইহোক আমার যোগ করতে চলেছি যেহেতু আমি তাদের সকলের সাথেই সমস্যা হচ্ছিলাম কারণ আমি টাস্কটিতে আবদ্ধ হয়ে ডায়নামিকভাবে ভার্সননেম এবং ভার্সনকোড তৈরি করতে স্ক্রিপ্টগুলি ব্যবহার করছিলাম preBuild

আপনি যদি কিছু অনুরূপ পদ্ধতির ব্যবহার করেন তবে এই কোডটি কাজ করবে:

project.android.applicationVariants.all { variant ->
    variant.preBuild.doLast {
    variant.outputs.each { output ->
        output.outputFile = new File(
                output.outputFile.parent,
                output.outputFile.name.replace(".apk", "-${variant.versionName}@${variant.versionCode}.apk"))
        }
    }
}

ব্যাখ্যা করার জন্য: যেহেতু আমি প্রথম ক্রিয়ায় সংস্করণ কোড এবং নামটিকে ওভাররাইড করছি তাই আমাকে এই কার্যটির preBuildশেষে ফাইলটির নাম পরিবর্তন করতে হবে। সুতরাং গ্রেড এই ক্ষেত্রে কি করবে তা হ'ল:

ইনজেকশন সংস্করণ কোড / নাম-> প্রাক বিল্ড ক্রিয়াগুলি করুন -> এপিপির জন্য নাম প্রতিস্থাপন করুন


আপনি উত্পন্ন সংস্করণকোড এবং সংস্করণনাম ভেরিয়েবলগুলি কোথায় সেট করছেন?
মঙ্গলবার

যেমনটি আমার মনে আছে এটি আমাদের কাস্টম গ্রেড প্লাগইনের ভিতরে করা হয়েছিল। এর সম্পাদনকে প্রাক বিল্ড টাস্কের শেষ ক্রিয়া হিসাবে ডাকা হত।
ইগোর Čordaš

2
    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            output.outputFileName = output.outputFileName.replace(".apk", "-${variant.versionName}.apk")
        }
    }

যদিও এই কোড স্নিপেট একটি ব্যাখ্যা সহ প্রশ্নটি সমাধান করতে পারে, সত্যিই আপনার পোস্টের মান উন্নত করতে সহায়তা করে। মনে রাখবেন যে আপনি ভবিষ্যতে পাঠকদের জন্য প্রশ্নের উত্তর দিচ্ছেন, এবং সেই লোকেরা আপনার কোড পরামর্শের কারণগুলি জানেন না।
রোজারিও পেরেইরা ফার্নান্দেস

1

আমার ক্ষেত্রে আমি এই ত্রুটিটি এইভাবে সমাধান করি

ডিবাগ সংস্করণে একটি SUFFIX যোগ করা, এক্ষেত্রে আমি আমার ডিবাগ স্থাপনের সাথে "-DEBUG" পাঠ্য যুক্ত করছি

 buildTypes {
        release {

            signingConfig signingConfigs.release
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'


        }
        debug {

            defaultConfig {
                debuggable true

                versionNameSuffix "-DEBUG"
            }
        }
    }

এটি APK ফাইলের নাম পরিবর্তন করে না।
টম

1
এটি আসলে একটি দুর্দান্ত টিপ। সঠিক প্রশ্নে নয়, তবে ভাল। এটি সম্পর্কে আমি আরও কোথায় পড়তে পারি? versionNameSuffixজিআইটি শাখার ভিত্তিতে ব্যবহার করা কি সম্ভব ? উদাহরণস্বরূপ, এটি "মাস্টার" এ না থাকলে সর্বদা একটি প্রত্যয় রাখুন, যদিও এটি একটি সংস্করণ প্রকাশিত সংস্করণ
অ্যান্ড্রয়েড বিকাশকারী

0

সর্বশেষ গ্রেড সংস্করণগুলির জন্য আপনি নিম্নলিখিত স্নিপেট ব্যবহার করতে পারেন:

প্রথমে আপনার অ্যাপ্লিকেশনটির প্রকাশের অবস্থান সেট করুন

 sourceSets {
        main {
            manifest.srcFile 'src/main/AndroidManifest.xml'
        {
    }

এবং পরে build.gradle এ

import com.android.builder.core.DefaultManifestParser

def getVersionName(manifestFile) {
    def manifestParser = new DefaultManifestParser();
    return manifestParser.getVersionName(manifestFile);
}

def manifestFile = file(android.sourceSets.main.manifest.srcFile);
def version = getVersionName(manifestFile)

buildTypes {
    release {
       signingConfig signingConfigs.release
       applicationVariants.each { variant ->
       def file = variant.outputFile
       variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" +    versionName + ".apk"))
    }
}

আপনার প্রতি বিল্ড প্রকারে পৃথক ম্যানিফাইস্ট থাকলে সামঞ্জস্য করুন। তবে যেহেতু আমার একক আছে - আমার পক্ষে পুরোপুরি কাজ করে।


কোনও ক্লাস ফাইল থেকে এপিকে নামের সাথে একটি স্ট্রিং যুক্ত করা সম্ভব ??
উপেন্দ্র শাহ

0

অ্যান্ড্রয়েড স্টুডিও ১.১.০ হিসাবে, আমি এই সংমিশ্রণটি ফাইলের অ্যান্ড্রয়েড বডিতে কাজ করতে দেখেছি build.gradle। আপনি কীভাবে ম্যানিফেস্টে এক্সএমএল ফাইল ডেটা আমদানি করবেন তা যদি বুঝতে না পারেন তবে এটি। আমি আশা করি এটি অ্যান্ড্রয়েড স্টুডিও দ্বারা আরও সমর্থিত হয়েছিল, তবে আপনি পছন্দসই এপিপি নামের আউটপুট না পাওয়া পর্যন্ত মানগুলি নিয়ে ঘুরে দেখুন:

defaultConfig {
        applicationId "com.package.name"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 6
        versionName "2"
    }
    signingConfigs {
        release {
            keyAlias = "your key name"
        }
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            signingConfig signingConfigs.release
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace("app-release.apk", "appName_" + versionName + ".apk"))
                }
            }
        }
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.