खोज…


टिप्पणियों

fastlane iOS, Mac और Android डेवलपर्स के लिए एक टूल है, जो थकाऊ कार्यों को स्वचालित करने के लिए स्क्रीनशॉट जनरेट करता है, प्रोविजनिंग प्रोफाइल से निपटता है, और आपके एप्लिकेशन को रिलीज़ करता है।

डॉक्स: https://docs.fastlane.tools/

स्रोत कोड: https://github.com/fastlane/fastlane

Crashlytics द्वारा बीटा को कई फ्लेवर बनाने और अपलोड करने के लिए फास्टफ़ाइल

यह एक बहु-स्वाद ऐप के लिए एक नमूना Fastfile सेटअप है। यह आपको सभी स्वादों या एकल स्वाद को बनाने और तैनात करने का विकल्प देता है। परिनियोजन के बाद, यह परिनियोजन की स्थिति को धीमा करने के लिए रिपोर्ट करता है, और क्रैशशीटिक्स परीक्षक समूह द्वारा बीटा में परीक्षकों को एक अधिसूचना भेजता है।

सभी जायके का उपयोग बनाने और तैनात करने के लिए:

fastlane android beta

एक APK बनाने और उपयोग करने के लिए:

fastlane android beta app:flavorName

एकल फास्टलेन फ़ाइल का उपयोग करके, आप आईओएस, एंड्रॉइड और मैक एप्लिकेशन का प्रबंधन कर सकते हैं। यदि आप इस फ़ाइल का उपयोग सिर्फ एक ऐप platform लिए कर रहे हैं, तो इसकी आवश्यकता नहीं है।

यह काम किस प्रकार करता है

  1. android तर्क फास्टलेन को बताता है कि हम उपयोग करेंगे :android प्लेटफ़ॉर्म।
  2. इनसाइड :android प्लेटफॉर्म पर आपके पास कई लेन हो सकते हैं। वर्तमान में, मेरे पास केवल :beta लेन है। ऊपर दिए गए कमांड से दूसरा तर्क उस लेन को निर्दिष्ट करता है जिसे हम उपयोग करना चाहते हैं।
  3. options[:app]
  4. दो ग्रेडल कार्य हैं। सबसे पहले, यह gradle clean रन करता है। आप app कुंजी के साथ एक स्वाद प्रदान किया है, Fastfile रन gradle assembleReleaseFlavor । अन्यथा, यह सभी निर्माण जायके बनाने के लिए gradle assembleRelease को चलाता है।
  5. यदि हम सभी स्वादों के लिए निर्माण कर रहे हैं, तो उत्पन्न APK फ़ाइल नामों की एक सरणी SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS अंदर संग्रहीत की जाती है। हम इसका उपयोग उत्पन्न फ़ाइलों के माध्यम से लूप करने के लिए करते हैं और उन्हें क्रैशलाईटिक्स द्वारा बीटा में तैनात करते हैं। notifications और groups फ़ील्ड वैकल्पिक हैं। उनका उपयोग क्रैशलीटिक्स द्वारा बीटा पर ऐप के लिए पंजीकृत परीक्षकों को सूचित करने के लिए किया जाता है।
  6. यदि आप Crashlytics से परिचित हैं, तो आप जान सकते हैं कि पोर्टल में किसी ऐप को सक्रिय करने के लिए, आपको इसे एक डिवाइस पर चलाना होगा और पहले इसका उपयोग करना होगा। अन्यथा, Crashlytics ऐप को निष्क्रिय मान लेगा और एक त्रुटि फेंक देगा। इस परिदृश्य में, मैं इसे कैप्चर करता हूं और एक विफलता के रूप में स्लैक को रिपोर्ट करता हूं, इसलिए आपको पता चल जाएगा कि कौन सा ऐप निष्क्रिय है।
  7. यदि तैनाती सफल होती है, तो फास्टलेन स्लैक के लिए एक सफलता संदेश भेजेगा।
  8. #{/([^\/]*)$/.match(apk)} इस रेगेक्स का उपयोग एपीके पथ से स्वाद नाम प्राप्त करने के लिए किया जाता है। आप इसे हटा सकते हैं यदि यह आपके लिए काम नहीं करता है।
  9. get_version_name और get_version_code ऐप संस्करण का नाम और कोड प्राप्त करने के लिए दो फास्टलेन प्लगइन्स हैं। यदि आप उपयोग करना चाहते हैं, तो आपको इन रत्नों को स्थापित करना होगा या आप इन्हें हटा सकते हैं। प्लगइन्स के बारे में यहाँ और पढ़ें।
  10. यदि आप एक ही एपीके का निर्माण और तैनाती कर रहे हैं, तो else विवरण निष्पादित किया जाएगा। हमें apk_path को apk_path प्रदान नहीं करना है क्योंकि हमारे पास केवल एक ऐप है।
  11. error do अंत में ब्लॉक कुछ और निष्पादन के दौरान गलत हो जाता है, तो सूचना पाने के लिए प्रयोग किया जाता है।

ध्यान दें

अपने स्वयं के क्रेडेंशियल्स के साथ SLACK_URL , API_TOKEN , GROUP_NAME और BUILD_SECRET को बदलना न भूलें।

fastlane_version "1.46.1"

default_platform :android

platform :android do

    before_all do
        ENV["SLACK_URL"] = "https://hooks.slack.com/servic...."
    end
    
    lane :beta do |options|
        # Clean and build the Release version of the app.
        # Usage `fastlane android beta app:flavorName`
    
        gradle(task: "clean")
    
        gradle(task: "assemble",
               build_type: "Release",
               flavor: options[:app])
    
        # If user calls `fastlane android beta` command, it will build all projects and push them to Crashlytics
        if options[:app].nil?
            lane_context[SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS].each do | apk |
    
                puts "Uploading APK to Crashlytics: " + apk
    
                begin
                    crashlytics(
                      api_token: "[API_TOKEN]",
                      build_secret: "[BUILD_SECRET]",
                      groups: "[GROUP_NAME]",
                      apk_path: apk,
                      notifications: "true"
                    )
    
                    slack(
                      message: "Successfully deployed new build for #{/([^\/]*)$/.match(apk)} #{get_version_name} - #{get_version_code}",
                      success: true,
                      default_payloads: [:git_branch, :lane, :test_result]
                    )
                rescue => ex
                    # If the app is inactive in Crashlytics, deployment will fail. Handle it here and report to slack
                    slack(
                        message: "Error uploading => #{/([^\/]*)$/.match(apk)} #{get_version_name} - #{get_version_code}: #{ex}",
                        success: false,
                        default_payloads: [:git_branch, :lane, :test_result]
                    )
                end
            end
    
            after_all do |lane|
                # This block is called, only if the executed lane was successful
                slack(
                    message: "Operation completed for #{lane_context[SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS].size} app(s) for #{get_version_name} - #{get_version_code}",
                    default_payloads: [:git_branch, :lane, :test_result],
                    success: true
                )
            end
        else
            # Single APK upload to Beta by Crashlytics
            crashlytics(
                api_token: "[API_TOKEN]",
                build_secret: "[BUILD_SECRET]",
                groups: "[GROUP_NAME]",
                notifications: "true"
            )
    
            after_all do |lane|
                # This block is called, only if the executed lane was successful
                slack(
                    message: "Successfully deployed new build for #{options[:app]} #{get_version_name} - #{get_version_code}",
                    default_payloads: [:git_branch, :lane, :test_result],
                    success: true
                )
            end
        end
    
        error do |lane, exception|
            slack(
                message: exception.message,
                success: false,
                default_payloads: [:git_branch, :lane, :test_result]
            )
        end
    end
end

डिवाइस के लिए दिए गए बिल्ड प्रकार के लिए सभी फ्लेवर बनाने और स्थापित करने के लिए फास्टफाइल लेन

इस लेन को अपने Fastfile में जोड़ें और fastlane installAll type:{BUILD_TYPE} चलाएँ fastlane installAll type:{BUILD_TYPE} कमांड लाइन में fastlane installAll type:{BUILD_TYPE}BUILD_TYPE को उस बिल्ड प्रकार से बदलें, BUILD_TYPE आप बनाना चाहते हैं।

उदाहरण के लिए: fastlane installAll type:Debug

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

lane :installAll do |options|

    gradle(task: "clean")

    gradle(task: "assemble",
       build_type: options[:type])

    lane_context[SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS].each do | apk |

        puts "Uploading APK to Device: " + apk

        begin
            adb(
                command: "install -r #{apk}"
            )
        rescue => ex
            puts ex
        end
    end
end


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow