рдлреНрд▓реЗрд╡рд░ рдореЗрдВ рдлреНрд▓реЗрд╡рд░ рдСрд░реНрдЧрдирд╛рдЗрдЬреЗрд╢рди

рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдлреНрд▓реЗрд╡рд░ рд╣реИрдВ?


рд╕реНрдерд┐рддрд┐ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ: рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИред рдПрдХ рд╡рд┐рдХрд╛рд╕ рджрд▓, рдкрд░реАрдХреНрд╖рдХ рдФрд░ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВред рд╡реЗ рдФрд░ рд╡реЗ рджреЛрдиреЛрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП A рдХрд┐рддрдиреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ? рд╣рдо рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ? рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рд┐рдХреА рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдХрд┐рддрдиреЗ рдЙрдкрдпреЛрдЧ рдереЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рдВрдХреНрд░рдордг)ред рд▓реЗрдХрд┐рди рд╣рдо рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ: рд╕рдВрдХреНрд░рдордгреЛрдВ рдХреА рдПрдХ рдирд┐рд╖реЗрдзрд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛, рдЬреЛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпреЗ рд╕рднреА рд╕рдВрдХреНрд░рдордг рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдореЗрдВ рдереЗред рд╣рдо рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд╕рдордп рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдереЗред рдФрд░ рдереЛрдбрд╝рд╛ рдкрд╣рд▓реЗ рдЗрд╕рдХреЗ рд╡рд┐рдХрд╛рд╕ред рдЙрд╕реА рд╕рдордп, рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рднреА рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ред рдирд┐рдЪрд▓рд╛ рд░реЗрдЦрд╛: рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрдВрджрд╛ рдФрд░ рдШрдЯрд┐рдпрд╛ рд╣реИред


рдпрд╣рд╛рдВ рдЖрдк рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рд╢рдмреНрдж рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ: рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди, рдХреНрд░реИрд╢ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдЖрджрд┐ред


рдФрд░ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рджреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдХреЗ рдмрдЪрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдиреНрдпреВрдирддрдо рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрдВрдбрд▓ рдЖрдИрдбреА (рдкреИрдХреЗрдЬ-рдирд╛рдо)ред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдХ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖ рджреЗрд╡ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдмрд┐рдХреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


рдпрд╣ рд╕реНрд╡рд╛рдж рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдпрд╣рд╛рдВ рдлреНрд▓реЗрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдлреНрд▓рдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдирд╛рдо рд╣реИред рдЬреЛ рд▓реЛрдЧ рдПрдВрдбреНрд░реЙрдЗрдб рд╡рд┐рдХрд╛рд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрдВрддреНрд░ рдХреЛ рддреБрд░рдВрдд рдорд╛рдиреНрдпрддрд╛ рджреА рдЧрдИ рдереАред



рд╕реНрд╡рд╛рдж рдореЗрдВ рдЧрдбрд╝рдмрдбрд╝реА?


рдЦреИрд░, рд╣рдордиреЗ рдЗрд╕ рдХрд╛рд░реНрдп рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд▓рд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП? рдХреНрдпрд╛ рд╕рдм рдХреБрдЫ рдЙрддрдирд╛ рд╣реА рд╕рд░рд▓ рд╣реИ рдЬрд┐рддрдирд╛ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ?
рдЖрдЗрдП рддреБрд░рдВрдд рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ: рдЬрд╛рдпрдХреЗ рдХрд╛ рд╕рдВрдЧрдарди рдПрдХ рд╢реБрджреНрдз рджреЗрд╢реА рдХрд╛рд░реНрдп рд╣реИред рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдбрд╛рд░реНрдЯ рдХреЛрдб рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдЧреАред рдЗрд╕рд▓рд┐рдП, рд╕рдВрдЧрдарди рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рдореВрд▓ рдореЛрдмрд╛рдЗрд▓ рд╡рд┐рдХрд╛рд╕ рдкрд░ рдЬрд╛рдПрдВрдЧреЗред


рдПрдВрдбреНрд░реЙрдпрдб


. android. : ┬л buildType?┬╗, .


, , :


flavorDimensions "release-type"

    productFlavors {
        dev {
            dimension "release-type"
            applicationIdSuffix  ".dev"
            versionNameSuffix "-dev"
        }

        prod {
            dimension "release-type"
        }
    }

, :


flutter run --flavor dev

android .


: ┬л buildType?┬╗ : Flutter buildType . , .


.
, builtTypes. IOS.
:


AndroidIOS
build typesbuild configurations
flavorstargets

тАФ , ( ). flavorтАЩ targetтАЩ тАФ .


, , ┬л┬╗...


Runner тАФ .


, target flavors iOS . , Flutter . , . . .


IOS


: (dev, prod, ).


:


  1. .
  2. .
  3. !

.



: dev, prod. :


    #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug-dev.xcconfig"
    #include "Generated.xcconfig"
    #include "common.xcconfig"

    bundle_suffix=.dev
    IDENTIFIER=$(identifier)$(bundle_suffix)

, bundle_suffix.


, Flutter Release Debug. bundle_suffix. , IDE.


IDENTIFIER тАФ .


, :


ios/Flutter/dev.xcconfig
ios/Flutter/prod.xcconfig

XCode ( , ). Runner тЖТ New File тЖТ Configuration Settings File тЖТ .


Build Configurations. .


. Runner.xcworkspace Xcode Project.


┬л+┬╗ Configurations : Release Debug, .


:



, , IOS .


Scheme


, .



. : тАФ Runner.
Edit Scheme .


Info.plist


(: ) тАФ Bundle Identifier Info.plist


$(PRODUCT_BUNDLE_IDENTIFIER)$(bundle_suffix)

...


, , Android , fastlane gym iOS тАФ . , IOS - тАж .


No Provisioning Profile


тАФ . , .


, Info.plist , gym PRODUCT_BUNDLE_IDENTIFIER, .
common.xcconfig IDENTIFIER? .


, , , PRODUCT_BUNDLE_IDENTIFIER.


:


identifier=your.bundle.identifier

include User Defined
IDENTIFIER:


#include "common.xcconfig"

IDENTIFIER=$(identifier)$(bundle_suffix)

Xcode. Build Settings:



Product Bundle Identifier ( Packaging):



:


$(IDENTIFIER)


Info.plist bundle suffix, :


$(PRODUCT_BUNFLE_IDENTIFIER)

. .


bundle id


. Firebase, ( ).


тАФ google-services.json(Google-Services.Info.plist). Android : flavorтАЩ .


IOS - .



, . :



: XCode. . XCode тАФ IDE, Add to target.
.



, . - , .


Run Script (setup firebase ):



, !


, :


# Name of the resource we're selectively copying
GOOGLESERVICE_INFO_PLIST=GoogleService-Info.plist

# Get references to dev and prod versions of the GoogleService-Info.plist
# NOTE: These should only live on the file system and should NOT be part of the target (since we'll be adding them to the target manually)
GOOGLESERVICE_INFO_DEV=${PROJECT_DIR}/${TARGET_NAME}/Firebase/dev/${GOOGLESERVICE_INFO_PLIST}
GOOGLESERVICE_INFO_PROD=${PROJECT_DIR}/${TARGET_NAME}/Firebase/prod/${GOOGLESERVICE_INFO_PLIST}

# Make sure the dev version of GoogleService-Info.plist exists
echo "Looking for ${GOOGLESERVICE_INFO_PLIST} in ${GOOGLESERVICE_INFO_DEV}"
if [ ! -f $GOOGLESERVICE_INFO_DEV ]
then
echo "No Development GoogleService-Info.plist found. Please ensure it's in the proper directory."
exit 1 # 1
fi

# Make sure the prod version of GoogleService-Info.plist exists
echo "Looking for ${GOOGLESERVICE_INFO_PLIST} in ${GOOGLESERVICE_INFO_PROD}"
if [ ! -f $GOOGLESERVICE_INFO_PROD ]
then
echo "No Production GoogleService-Info.plist found. Please ensure it's in the proper directory."
exit 1 # 1
fi

# Get a reference to the destination location for the GoogleService-Info.plist
PLIST_DESTINATION=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
echo "Will copy ${GOOGLESERVICE_INFO_PLIST} to final destination: ${PLIST_DESTINATION}"

# Copy over the prod GoogleService-Info.plist for Release builds
if [[ "${CONFIGURATION}" == *-prod ]]
then
echo "Using ${GOOGLESERVICE_INFO_PROD}"
cp "${GOOGLESERVICE_INFO_PROD}" "${PLIST_DESTINATION}"
else
echo "Using ${GOOGLESERVICE_INFO_DEV}"
cp "${GOOGLESERVICE_INFO_DEV}" "${PLIST_DESTINATION}"
fi


. , , Flutter ( ). , . .


All Articles