<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Leon Arantes</title>
    <description>The latest articles on DEV Community by Leon Arantes (@leon_arantes).</description>
    <link>https://dev.to/leon_arantes</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F688765%2Fae186c64-e2d5-4cb1-b887-277f28fe79e4.png</url>
      <title>DEV Community: Leon Arantes</title>
      <link>https://dev.to/leon_arantes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leon_arantes"/>
    <language>en</language>
    <item>
      <title>Como o CodePush pode salvar tempo e simplificar as atualizações do seu app?</title>
      <dc:creator>Leon Arantes</dc:creator>
      <pubDate>Thu, 11 Jan 2024 23:50:54 +0000</pubDate>
      <link>https://dev.to/leon_arantes/como-o-codepush-pode-salvar-tempo-e-simplificar-as-atualizacoes-do-seu-app-3j14</link>
      <guid>https://dev.to/leon_arantes/como-o-codepush-pode-salvar-tempo-e-simplificar-as-atualizacoes-do-seu-app-3j14</guid>
      <description>&lt;p&gt;Na corrida contínua para manter aplicativos móveis atualizados e reativos às necessidades dos usuários, a agilidade é a chave. É aí que entra o CodePush, uma ferramenta poderosa que tem revolucionado o processo de atualização de aplicativos, permitindo a nos desenvolvedores fazerem mudanças instantâneas sem a complexidade das lojas de aplicativos tradicionais.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;A Agonia das Atualizações Tradicionais&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Atualizar um aplicativo móvel pode ser um verdadeiro desafio. Desde a necessidade de submeter uma nova versão à loja de aplicativos até a espera pela aprovação, o tempo entre a identificação de um problema e a correção pode ser significativo. E o que dizer das pequenas correções ou melhorias que não justificam uma atualização completa?&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;CodePush: A Solução Ágil&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Imagine poder implementar alterações no código do seu aplicativo e vê-las refletidas instantaneamente nos dispositivos dos usuários, sem a necessidade deles baixarem uma nova versão. É aqui que o CodePush brilha. Essa ferramenta permite enviar atualizações de forma direta para os aplicativos em execução, contornando o processo de aprovação das lojas de apps.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Vantagens Claras&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tempo Reduzido:&lt;/strong&gt; Corrija bugs e implemente melhorias sem esperar pelas revisões das lojas de aplicativos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Engajamento Aprimorado:&lt;/strong&gt; Mantenha os usuários satisfeitos com atualizações rápidas e contínuas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maior Controle:&lt;/strong&gt; Teste novos recursos com grupos específicos de usuários antes de implementar em larga escala.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Economia de Recursos:&lt;/strong&gt; Elimine downloads desnecessários, economizando dados e tempo dos usuários.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Momentos críticos onde a agilidade é o mais importante
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fka4b8zulmm15qsb42w1m.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fka4b8zulmm15qsb42w1m.jpg" alt="Image agility" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Vulnerabilidades de Segurança Emergentes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine um cenário onde uma nova vulnerabilidade de segurança é descoberta em seu aplicativo móvel após o lançamento. Com milhares de usuários confiando nele diariamente, cada momento conta. O CodePush aqui se torna uma ferramenta crucial: em vez de esperar pela aprovação da loja de aplicativos para uma atualização de segurança, os desenvolvedores podem agir instantaneamente, enviando um patch diretamente para os dispositivos dos usuários. Essa agilidade na resposta pode impedir potenciais violações de dados e proteger a reputação do aplicativo.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Problemas Críticos de Funcionamento&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Um aplicativo enfrenta um bug crítico que impede os usuários de realizar transações financeiras ou acessar conteúdo essencial. Em uma situação como essa, cada minuto sem correção impacta a experiência do usuário e, consequentemente, a reputação do aplicativo. Aqui, o CodePush se destaca ao permitir que os desenvolvedores implementem rapidamente uma solução direta nos dispositivos dos usuários afetados, contornando a espera por uma atualização completa da loja de aplicativos. Essa agilidade é crucial para minimizar os danos e restaurar a confiança dos usuários.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Importância do CodePush Nessas Situações&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Nos dois cenários apresentados, a capacidade de resposta rápida é crucial para minimizar danos, preservar a confiança do usuário e proteger a reputação do aplicativo. O CodePush desempenha um papel vital, permitindo atualizações instantâneas, sem atrasos das lojas de aplicativos. Essa agilidade possibilita aos desenvolvedores corrigir problemas de segurança ou bugs críticos imediatamente, oferecendo uma solução rápida e eficaz para situações caóticas que exigem intervenção imediata.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Conclusão&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;O CodePush é uma ferramenta inestimável para qualquer equipe de desenvolvimento de aplicativos móveis que busca agilidade, eficiência e satisfação do usuário. Ao permitir atualizações rápidas e diretas nos dispositivos dos usuários, ele redefine a maneira como pensamos sobre as atualizações de aplicativos.&lt;/p&gt;

&lt;p&gt;Não deixe seu aplicativo ficar estagnado por longos períodos de revisão. Com o CodePush, economize tempo, simplifique atualizações e mantenha seu app sempre atualizado, sem frustrar seus usuários.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How CodePush can save time and simplify your App’s Updates?</title>
      <dc:creator>Leon Arantes</dc:creator>
      <pubDate>Tue, 09 Jan 2024 20:12:56 +0000</pubDate>
      <link>https://dev.to/leon_arantes/how-codepush-can-save-time-and-simplify-your-apps-updates-6b1</link>
      <guid>https://dev.to/leon_arantes/how-codepush-can-save-time-and-simplify-your-apps-updates-6b1</guid>
      <description>&lt;p&gt;In the ongoing race to keep mobile applications updated and responsive to user needs, agility is key. This is where CodePush comes in, a powerful tool that has revolutionized the app update process, allowing developers to make instant changes without the complexity of traditional app stores.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Agony of Traditional Updates&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Updating a mobile app can be quite a challenge. From the need to submit a new version to the app store to waiting for approval, the time between identifying a problem and fixing it can be significant. And what about minor fixes or improvements that don’t warrant a full update?&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;CodePush: The Agile Solution&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Imagine being able to implement changes in your app’s code and seeing them instantly reflected on users’ devices without them having to download a new version. This is where CodePush shines. This tool allows direct updates to running applications, bypassing the app store approval process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clear Advantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reduced Time:&lt;/strong&gt; Fix bugs and implement improvements without waiting for app store reviews.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced Engagement:&lt;/strong&gt; Keep users satisfied with quick and continuous updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Greater Control:&lt;/strong&gt; Test new features with specific user groups before implementing them on a large scale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource Savings:&lt;/strong&gt; Eliminate unnecessary downloads, saving users’ data and time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Critical Moments Where Agility Matters Most&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F84iyogq4y58vrxxyx7xu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F84iyogq4y58vrxxyx7xu.jpg" alt="importance to fast resolve" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Emerging Security Vulnerabilities&lt;/strong&gt;&lt;br&gt;
Imagine a scenario where a new security vulnerability is discovered in your mobile app after its release. With thousands of users relying on it daily, every moment counts. CodePush becomes a crucial tool here: instead of waiting for app store approval for a security update, developers can act instantly by sending a patch directly to users’ devices. This agility in response can prevent potential data breaches and protect the app’s reputation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Critical Functioning Issues&lt;/strong&gt;&lt;br&gt;
An app faces a critical bug preventing users from making financial transactions or accessing essential content. In a situation like this, every minute without a fix impacts user experience and, consequently, the app’s reputation. Here, CodePush excels by allowing developers to quickly implement a solution directly on the devices of affected users, bypassing the wait for a complete app store update. This agility is crucial to minimize damage and restore user trust.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;CodePush’s Importance in These Scenarios&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In both presented scenarios, quick responsiveness is crucial to minimize damage, preserve user trust, and protect the app’s reputation. CodePush plays a vital role by enabling instant updates, without delays from app stores. This agility enables developers to immediately address security issues or critical bugs, offering a swift and effective solution for chaotic situations requiring immediate intervention.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;CodePush is an invaluable tool for any mobile app development team seeking agility, efficiency, and user satisfaction. By allowing quick and direct updates to users’ devices, it redefines how we think about app updates.&lt;/p&gt;

&lt;p&gt;Don’t let your app remain stagnant during lengthy review periods. With CodePush, save time, simplify updates, and keep your app always updated without frustrating your users.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>React Native: Multiple Environments Setup (Schemas/Flavors)</title>
      <dc:creator>Leon Arantes</dc:creator>
      <pubDate>Wed, 18 May 2022 14:33:43 +0000</pubDate>
      <link>https://dev.to/leon_arantes/react-native-multiple-environments-setup-schemaflavors-3l7p</link>
      <guid>https://dev.to/leon_arantes/react-native-multiple-environments-setup-schemaflavors-3l7p</guid>
      <description>&lt;p&gt;Many times when developing an application, we developers need to create different builds with different configurations. Facilitating the maintenance and testing process. Usually 3 different builds are created: &lt;strong&gt;&lt;em&gt;development&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;staging&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;production&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Installing react-native-config
&lt;/h2&gt;

&lt;p&gt;Install the package&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

// yarn 
yarn add react-native-config

// npm 
npm &lt;span class="nb"&gt;install &lt;/span&gt;react-native-config &lt;span class="nt"&gt;--save&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;For iOS also run &lt;strong&gt;pod install&lt;/strong&gt; after package is installed.&lt;/p&gt;

&lt;p&gt;And below line of code to &lt;strong&gt;android/app/build.gradle&lt;/strong&gt; to apply plugin&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight gradle"&gt;&lt;code&gt;

&lt;span class="n"&gt;apply&lt;/span&gt; &lt;span class="nl"&gt;plugin:&lt;/span&gt; &lt;span class="s2"&gt;"com.android.application"&lt;/span&gt;
&lt;span class="n"&gt;apply&lt;/span&gt; &lt;span class="nl"&gt;from:&lt;/span&gt; &lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;':react-native-config'&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;projectDir&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getPath&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s2"&gt;"/dotenv.gradle"&lt;/span&gt; &lt;span class="c1"&gt;// &amp;lt;- add this line&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Create .env files for each configuration
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;.env.development&lt;/code&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

ENV=development
API_URL=https://api.dev.com


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;code&gt;.env.staging&lt;/code&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

ENV=staging
API_URL=https://api.staging.com


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;code&gt;.env.production&lt;/code&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

ENV=production
API_URL=https://api.com


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Setup for Android
&lt;/h2&gt;

&lt;p&gt;Now we need to define &lt;strong&gt;envConfigFiles&lt;/strong&gt; in &lt;code&gt;build.gradle&lt;/code&gt; associating builds with env files. To achieve this, add the below code before the apply from call, and be sure to leave the build cases in lowercase.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;android/app/build.gradle&lt;/code&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight gradle"&gt;&lt;code&gt;

&lt;span class="n"&gt;apply&lt;/span&gt; &lt;span class="nl"&gt;plugin:&lt;/span&gt; &lt;span class="s2"&gt;"com.android.application"&lt;/span&gt;

&lt;span class="c1"&gt;// add this block&lt;/span&gt;
&lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;envConfigFiles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;
   &lt;span class="nl"&gt;productiondebug:&lt;/span&gt; &lt;span class="s2"&gt;".env.production"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
   &lt;span class="nl"&gt;productionrelease:&lt;/span&gt; &lt;span class="s2"&gt;".env.production"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
   &lt;span class="nl"&gt;developmentrelease:&lt;/span&gt; &lt;span class="s2"&gt;".env.development"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
   &lt;span class="nl"&gt;developmentdebug:&lt;/span&gt; &lt;span class="s2"&gt;".env.development"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
   &lt;span class="nl"&gt;stagingrelease:&lt;/span&gt; &lt;span class="s2"&gt;".env.staging"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
   &lt;span class="nl"&gt;stagingdebug:&lt;/span&gt; &lt;span class="s2"&gt;".env.staging"&lt;/span&gt;
&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="c1"&gt;// ---&lt;/span&gt;

&lt;span class="n"&gt;apply&lt;/span&gt; &lt;span class="nl"&gt;from:&lt;/span&gt; &lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;':react-native-config'&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;projectDir&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getPath&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dotenv&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;gradl&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Adding Product Flavor on project below line &lt;code&gt;compileSdkVersion&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;android/app/build.gradle&lt;/code&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight gradle"&gt;&lt;code&gt;

&lt;span class="n"&gt;android&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;ndkVersion&lt;/span&gt; &lt;span class="n"&gt;rootProject&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ndkVersion&lt;/span&gt;
    &lt;span class="n"&gt;compileSdkVersion&lt;/span&gt; &lt;span class="n"&gt;rootProject&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;compileSdkVersion&lt;/span&gt;

    &lt;span class="c1"&gt;// add this block&lt;/span&gt;
    &lt;span class="n"&gt;flavorDimensions&lt;/span&gt; &lt;span class="s2"&gt;"default"&lt;/span&gt;
    &lt;span class="n"&gt;productFlavors&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;production&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;minSdkVersion&lt;/span&gt; &lt;span class="n"&gt;rootProject&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;minSdkVersion&lt;/span&gt;
            &lt;span class="n"&gt;applicationId&lt;/span&gt; &lt;span class="s2"&gt;"com.zenix"&lt;/span&gt;
            &lt;span class="n"&gt;targetSdkVersion&lt;/span&gt; &lt;span class="n"&gt;rootProject&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;targetSdkVersion&lt;/span&gt;
            &lt;span class="n"&gt;resValue&lt;/span&gt; &lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"build_config_package"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"com.zenix"&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="n"&gt;staging&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;minSdkVersion&lt;/span&gt; &lt;span class="n"&gt;rootProject&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;minSdkVersion&lt;/span&gt;
            &lt;span class="n"&gt;applicationId&lt;/span&gt; &lt;span class="s2"&gt;"com.zenix.staging"&lt;/span&gt;
            &lt;span class="n"&gt;targetSdkVersion&lt;/span&gt; &lt;span class="n"&gt;rootProject&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;targetSdkVersion&lt;/span&gt;
            &lt;span class="n"&gt;resValue&lt;/span&gt; &lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"build_config_package"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"com.zenix"&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="n"&gt;development&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;minSdkVersion&lt;/span&gt; &lt;span class="n"&gt;rootProject&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;minSdkVersion&lt;/span&gt;
            &lt;span class="n"&gt;applicationId&lt;/span&gt; &lt;span class="s2"&gt;"com.zenix.development"&lt;/span&gt;
            &lt;span class="n"&gt;targetSdkVersion&lt;/span&gt; &lt;span class="n"&gt;rootProject&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;targetSdkVersion&lt;/span&gt;
            &lt;span class="n"&gt;resValue&lt;/span&gt; &lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"build_config_package"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"com.zenix"&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
   &lt;span class="c1"&gt;// ---&lt;/span&gt;
&lt;span class="o"&gt;...&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Names should match based on &lt;strong&gt;productFlavors&lt;/strong&gt;, so &lt;strong&gt;productiondebug&lt;/strong&gt; will match &lt;strong&gt;debug&lt;/strong&gt; in this case and generate debug build of App with configuration from &lt;strong&gt;.env.production&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Also add &lt;strong&gt;matchingFallbacks&lt;/strong&gt; in &lt;strong&gt;buildTypes&lt;/strong&gt; as shown below:&lt;br&gt;
&lt;code&gt;android/app/build.gradle&lt;/code&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight gradle"&gt;&lt;code&gt;

 &lt;span class="n"&gt;buildTypes&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;debug&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;signingConfig&lt;/span&gt; &lt;span class="n"&gt;signingConfigs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;debug&lt;/span&gt;
            &lt;span class="n"&gt;matchingFallbacks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'debug'&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'release'&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;// &amp;lt;- add this line&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="n"&gt;release&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;signingConfig&lt;/span&gt; &lt;span class="n"&gt;signingConfigs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;debug&lt;/span&gt;
            &lt;span class="n"&gt;minifyEnabled&lt;/span&gt; &lt;span class="n"&gt;enableProguardInReleaseBuilds&lt;/span&gt;
            &lt;span class="n"&gt;proguardFiles&lt;/span&gt; &lt;span class="nf"&gt;getDefaultProguardFile&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"proguard-android.txt"&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt; &lt;span class="s2"&gt;"proguard-rules.pro"&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Create scripts on &lt;code&gt;package.json&lt;/code&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="nl"&gt;"android:staging"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"react-native run-android --variant=stagingdebug"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"android:staging-release"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"react-native run-android --variant=stagingrelease"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"android:dev"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"react-native run-android --variant=developmentdebug"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"android:dev-release"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"react-native run-android --variant=developmentrelease"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"android:prod"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"react-native run-android --variant=productiondebug"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"android:prod-release"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"react-native run-android --variant=productionrelease"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Android Change App name and App Icon
&lt;/h2&gt;

&lt;p&gt;Just copy the &lt;em&gt;android/app/main&lt;/em&gt; folder and rename it to the referring names placed in the flavors in our case we put it&lt;br&gt;
&lt;code&gt;development&lt;/code&gt; and &lt;code&gt;staging&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Duplicate main file &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9mudwxn57m3puga1g698.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9mudwxn57m3puga1g698.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rename file to &lt;code&gt;development&lt;/code&gt; or &lt;code&gt;staging&lt;/code&gt; and remove file &lt;code&gt;java&lt;/code&gt; &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fal7sumomfwa8j6nspbuu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fal7sumomfwa8j6nspbuu.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To change the app icons, just add it inside the specific mipmap of the build development, staging or main(production).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To change app name, open file and rename &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;android/app/src/development/res/values/strings.xml&lt;/em&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;resources&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;string&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"app_name"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;zenix dev&lt;span class="nt"&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/resources&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;em&gt;android/app/src/staging/res/values/strings.xml&lt;/em&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;resources&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;string&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"app_name"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;zenix stg&lt;span class="nt"&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/resources&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;The result should be like&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9l98zxg57wlqbhrkxlst.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9l98zxg57wlqbhrkxlst.jpg" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Setup for iOS
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Duplicate schema on Xcode 2 times&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ad450kc1uyfratfnbsc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ad450kc1uyfratfnbsc.png" alt="duplicate schema on Xcode"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on duplicate only&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0xqsc5kdks1c5kzpizdm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0xqsc5kdks1c5kzpizdm.png" alt="click on duplicate only"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Rename target to &lt;strong&gt;Target&lt;/strong&gt;Dev and &lt;strong&gt;Target&lt;/strong&gt;Stg&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9rzn4xw9caf97cp0mv8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9rzn4xw9caf97cp0mv8y.png" alt="rename target"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The result should be like:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frhe3wyehdd5w5x2xvhgy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frhe3wyehdd5w5x2xvhgy.png" alt="Result"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Next step open manage schemas&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2t500o4hqm5ar5g13xgl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2t500o4hqm5ar5g13xgl.png" alt="open manage schemas"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check that the names have been changed correctly&lt;br&gt;
&lt;strong&gt;zenix copy&lt;/strong&gt; to &lt;strong&gt;zenixDev&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbqs32912zsiqrfqcaksb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbqs32912zsiqrfqcaksb.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now we&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3cf51v6sehwol0f4tipv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3cf51v6sehwol0f4tipv.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select schema build settings same as selected schema and add this script&lt;br&gt;
&lt;code&gt;cp "${PROJECT_DIR}/../.env.development" "${PROJECT_DIR}/../.env.development"&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Edit schema &amp;gt; Build &amp;gt; Pre-actions&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4h1j9rkryru8xft0cme7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4h1j9rkryru8xft0cme7.png" alt="Select schema build settings same as selected schema and add this script"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Repeat the same process for the debug mode pre-actions&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw86qnt6bltm1xmbbr8f4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw86qnt6bltm1xmbbr8f4.png" alt="Repeat the same process for the debug mode pre-actions"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finishing the development configuration, we need to do the same process for staging, changing the script from &lt;code&gt;development&lt;/code&gt; to &lt;code&gt;staging&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2l55ymx7dz3h23d3yre0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2l55ymx7dz3h23d3yre0.png" alt="staging configuration"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F30yod7kucvw1olp1btic.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F30yod7kucvw1olp1btic.png" alt="staging configuration"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Correctly name the info.plist files of each schema&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo8hqxlvp04xk3dh314tu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo8hqxlvp04xk3dh314tu.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Rename info.plist on dev build settings&lt;br&gt;
Schema*&lt;em&gt;Dev&lt;/em&gt;* &amp;gt; Build Settings &amp;gt; Search filter &amp;gt; info.plist File&lt;br&gt;
&lt;code&gt;zenix dev-Info.plist&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbt8kih956dkzdoszlpyo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbt8kih956dkzdoszlpyo.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rename info.plist on dev build settings&lt;br&gt;
Schema*&lt;em&gt;Stg&lt;/em&gt;* &amp;gt; Build Settings &amp;gt; Search filter &amp;gt; info.plist File&lt;br&gt;
&lt;code&gt;zenix stg-Info.plist&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3gkdi8fsusudglnl7vg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3gkdi8fsusudglnl7vg.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open &lt;code&gt;Podfile&lt;/code&gt; and change target to abstract_target and rename abstract_target to &lt;strong&gt;ProjectName&lt;/strong&gt;+CommonPods like:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

target 'zenix' do // &amp;lt;- Remove this

abstract_target 'zenixCommonPods' do // &amp;lt;- Add this


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Inside the abstract_target add the targets&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

 target 'zenixDev' do
 end

 target 'zenixStg' do
 end

 target 'zenix' do
 end


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Now just give a pod install in the ios folder
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6dpft53uo3gerxoy4ba8.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  iOS Change App Icon and App Name
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Select the target name and go to general and search for Display name&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftptcpgth6u4gzodjemcx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftptcpgth6u4gzodjemcx.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Further down there will be the app icon, just select another app icon&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa66jvf6thmb5nz77s7w0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa66jvf6thmb5nz77s7w0.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The result should be like:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7bgtvbqf95qlq71tpef4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7bgtvbqf95qlq71tpef4.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  See the source code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/LeonArantes/react-native-multilpe-enviroments" rel="noopener noreferrer"&gt;https://github.com/LeonArantes/react-native-multilpe-enviroments&lt;/a&gt;&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>environments</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
