2014-07-09 21 views
12

में कस्टमाइज़ नाम प्रारूप के साथ रिलीज एपीके बनाएं, मैं .apk को निम्नलिखित नाम प्रारूप (टाइमस्टैम्प के साथ) के साथ बनाया जाना चाहता हूं।एंड्रॉइड स्टूडियो

मैं इसे कैसे सेट कर सकता हूं?

प्रारूप: {app_name}{yyyymmddhis}.apk

अब, यह नाम {app_name}-{release}.apk

उत्तर

26
build.gradle फ़ाइल में

, आप बदलना चाहिए/इस तरह buildTypes जोड़ें:

buildTypes { 
     release { 
     signingConfig signingConfigs.release 
     applicationVariants.all { variant -> 
      def file = variant.outputFile 
      def date = new Date(); 
      def formattedDate = date.format('yyyyMMddHHmmss') 
      variant.outputFile = new File(
            file.parent, 
            file.name.replace("-release", "-" + formattedDate) 
            ) 
     } 
    }  
} 


====== साथ एंड्रॉयड स्टूडियो 1.0 ====== संपादित

आप तो एंड्रॉयड स्टूडियो 1.0 का उपयोग कर रहे हैं, तो आप इस तरह एक त्रुटि प्राप्त होगी:

Error:(78, 0) Could not find property 'outputFile' on com.and[email protected]67e7625f. 

आपबदलना चाहिए यह करने के लिएके कलपुर्जे:

buildTypes { 
     release { 
      signingConfig signingConfigs.releaseConfig 
      applicationVariants.all { variant -> 
       variant.outputs.each { output -> 
        def date = new Date(); 
        def formattedDate = date.format('yyyyMMddHHmmss') 
        output.outputFile = new File(output.outputFile.parent, 
              output.outputFile.name.replace("-release", "-" + formattedDate) 
              ) 
       } 
      } 
     } 
    } 
+0

क्या आपके पास ग्रेडल का उपयोग करने के तरीके की कोई अच्छी ट्यूटोरियल वेबसाइट प्रदान की जा सकती है :)? – LoGary

+0

@ लॉजरी http://tools.android.com/tech-docs/new-build-system/user-guide यह शुरू करने के लिए एक अच्छी साइट है। और आप हमेशा स्टैक ओवरफ्लो पर खोज सकते हैं – Wesley

0

साथ तय हो गई है आप कुछ इस तरह बदलना चाहिए। गतिशील रूप से करना।

project.archivesBaseName = {app_name}{yyyymmddhis};

लेकिन मैं पढ़ लिया है कि इस बहिष्कार कर दिया जा रहा है।

मांग पर गुण बनाना (ए.के.ए. गतिशील गुण) को हटा दिया गया है और इसे ग्रेड 2.0 में हटा दिया जाना निर्धारित है। अस्वीकृत गतिशील संपत्ति: "रूट प्रोजेक्ट" myapp 'पर "archivesBaseName", मान: "AnotherName"।

8

एक तरफ ध्यान दें के रूप में, मैं वास्तव में पता करने के लिए जहां लोगों को Gradle निर्माण वस्तुओं की वस्तुओं संरचनाओं प्राप्त करना चाहते हैं।

यह कुछ परीक्षण और त्रुटि है, Googling का एक सा है, और this (जो पुराना हो चुका है)

android { 
    ... 

    buildTypes { 
     debug { 
      signingConfig signingConfigs.debug 
     } 
     release { 
      signingConfig signingConfigs.release 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
     } 
     applicationVariants.all { variant -> 
      variant.outputs.each { output -> 
       def flavor = "default"; 
       if (variant.productFlavors.size() > 0) 
        flavor = variant.productFlavors.get(0); 

       def initials = "DefaultFlavor"; 
       if (flavor.name == "flavor1") 
        initials = "F1"; 
       else if (flavor.name == "flavor2") 
        initials = "F2"; 

       def build = "Debug"; 
       if (variant.buildType.name == "release") 
        build = "Release" 
       def finalName = variant.versionCode + "-" + initials + "-" + build + "-v" + flavor.versionName + "-MyAppName.apk"; 
       output.outputFile = new File(output.outputFile.parent, finalName) 
      } 
     } 
    } 
    ... 
} 

ठीक है का निर्माण करने के लिए मैं का उपयोग किया है, तो एक पक्ष नोट के रूप में, यदि आप चाहते हैं अपने libs प्रोजेक्ट के नामों को निर्धारित करें यहां एक त्वरित स्क्रिप्ट है, सुनिश्चित करें कि आप इसे अपनी प्रत्येक लाइब्रेरी ग्रेडल बिल्ड फाइलों में डाल दें।

android { 
    ... 

    defaultConfig { 
     minSdkVersion 10 
     targetSdkVersion 16 
     versionCode 1 
     versionName "1.0.4" 
     project.version = versionName 
    } 

    libraryVariants.all { variant -> 
     variant.outputs.each { output -> 
      def outputFile = output.outputFile 
      if (outputFile != null && outputFile.name.endsWith('.aar')) { 
       def fileName = "${archivesBaseName}-v${version}.aar" 
       output.outputFile = new File(outputFile.parent, fileName) 
      } 
     } 
    } 

    ... 
} 
संबंधित मुद्दे