<?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: Appcircle.io</title>
    <description>The latest articles on DEV Community by Appcircle.io (@appcircelio).</description>
    <link>https://dev.to/appcircelio</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%2Forganization%2Fprofile_image%2F4298%2Fc58057a4-e6e6-42aa-84cc-00086598df81.png</url>
      <title>DEV Community: Appcircle.io</title>
      <link>https://dev.to/appcircelio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/appcircelio"/>
    <language>en</language>
    <item>
      <title>What is CI/CD and Why Do You Need CI/CD in Mobile App Projects</title>
      <dc:creator>Sophie @Appcircle</dc:creator>
      <pubDate>Wed, 08 Sep 2021 16:36:34 +0000</pubDate>
      <link>https://dev.to/appcircelio/what-is-ci-cd-and-why-do-you-need-ci-cd-in-mobile-app-projects-ip1</link>
      <guid>https://dev.to/appcircelio/what-is-ci-cd-and-why-do-you-need-ci-cd-in-mobile-app-projects-ip1</guid>
      <description>&lt;p&gt;&lt;a href="https://appcircle.io/blog/what-is-ci-cd-why-mobile/" rel="canonical"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KseMRsB7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/04/Why-do-you-need-mobile-CI-CD-845x321.png.webp" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reading Time: 4 minutes&lt;/p&gt;

&lt;p&gt;As the backend systems are evolving to cloud-native apps and the frontend clients are unifying around mobile apps, continuous integration (CI) and continuous delivery (CD) are getting more and more crucial in every software development project regardless of the size and the scope. Mobile app development is one of the areas that can benefit from CI/CD the most.&lt;/p&gt;

&lt;p&gt;This article is the first in our CI/CD article series, where we answer the following questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  What is CI/CD and why do you need CI/CD in mobile app projects? (This article)&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://appcircle.io/blog/10-operational-business-benefits-of-mobile-ci-cd/"&gt;What are the operational and business benefits of CI/CD?&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://appcircle.io/blog/common-problems-mobile-app-lifecycle-how-appcircle-solves/"&gt;How does Appcircle solve the common problems in mobile app lifecycle?&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In our first article, we will start with a quick introduction.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Continuous Integration and Continuous Delivery?
&lt;/h2&gt;

&lt;p&gt;Continuous Integration (or CI for short) is the automated way of building every code pushed to a common code repository. This build process is ideally enhanced with workflows for steps like code reviews, code analysis and unit tests.&lt;/p&gt;

&lt;p&gt;Continuous Delivery (or CD for short), as the name indicates, is the automated delivery of the application with environment deployment (e.g. a development or production variant), code signing, versioning and sharing the successfully built releases with the related users (e.g. testers).&lt;/p&gt;

&lt;h3&gt;
  
  
  So, then, what is a pipeline (CI and CD)?
&lt;/h3&gt;

&lt;p&gt;When you consider CI and CD together, we get a full application "pipeline". With CI, you build your app and push it towards the pipeline. With CD, you ensure the app is transported through the pipeline properly to the correct recipients.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do CI and CD relate to some of the most prominent problems in mobile app projects?
&lt;/h2&gt;

&lt;p&gt;After laying the groundwork, let's explain why you need CI/CD in mobile app development, starting with the causes, the problems that are commonly observed in mobile app lifecycle and how CI/CD addresses them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Code repositories being used like a file storage, not as a collaboration tool: Automated CI/CD process encourages frequent code pushes.&lt;/li&gt;
&lt;li&gt;  Low application quality with issues slipping through the cracks in the end user release: Automated CI/CD process eliminates manual operation and possibility of human error.&lt;/li&gt;
&lt;li&gt;  Long build times of large apps with multiple dependencies: Agent-based CI/CD tools free the local environments from the resource and time-consuming build process.&lt;/li&gt;
&lt;li&gt;  Rapidly changing landscape with frequent updates to mobile operating systems and development frameworks: CI/CD tools handle the environment to be up to date while providing a wide range of options for build configurations.&lt;/li&gt;
&lt;li&gt;  Complexities and delays caused by application code signing due to the unique requirements of Apple and Google: With CI/CD all the complex steps in the app lifecycle are automated and the developers are isolated from these complexities&lt;/li&gt;
&lt;li&gt;  Complicated set of build artifacts to gather at every step of the app lifecycle: The CI/CD tools automatically collect and deliver all the artifacts from a single convenient point of access&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With all these problems and many more, it is indeed necessary to have a proper CI/CD solution in place and we can now have a more detailed look on why you would need CI and CD in mobile app projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do you need Continuous Integration in mobile app projects?
&lt;/h2&gt;

&lt;p&gt;CI is not just about using a source control system and resolving conflicts when multiple developers are working on the code. It is about establishing a discipline and a standard for development.&lt;/p&gt;

&lt;p&gt;The reason for this is that even if a team is using a common code repository but without an automated build process, the general tendency is to use it like a backup tool and push changes at the end of the day.&lt;/p&gt;

&lt;p&gt;From this perspective, one of the most important advantages of CI lies in the automated builds, which is then enhanced with automated workflow steps such as static code analysis, code quality review and of course, integration with testing automation or manual testing distribution.&lt;/p&gt;

&lt;p&gt;CI enables shorter release and test cycles, which is even more crucial with the unique complexities and error-prone nature of mobile apps.&lt;/p&gt;

&lt;p&gt;For instance, if you are developing your apps with a native or hybrid cross-platform framework, which is highly likely to have a single-project structure, building the same project for iOS and Android requires totally independent efforts, which can be automated with mobile CI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do you need Continuous Delivery in mobile app projects?
&lt;/h2&gt;

&lt;p&gt;Similarly, CD is not just about uploading and downloading multiple app binaries for different environments. CD automates the release process and eliminates the human factor, which again enables shorter release cycles and producing more reliable releases.&lt;/p&gt;

&lt;p&gt;In mobile apps, one of the most crucial pain points is the environment switches and with an automated CD process, you can easily get the same application for multiple environments.&lt;/p&gt;

&lt;p&gt;Another point that makes mobile CD more complex but also more important is code signing, which is not applicable for the majority of the web applications. Especially for iOS apps, there are different code signing procedures for different distribution methods (ad hoc, enterprise distribution and public distribution) and manual signing is indeed a complex process.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;These are just the tip of the iceberg in terms of the reasons and the benefits of using CI/CD in mobile development.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/blog/10-operational-business-benefits-of-mobile-ci-cd/"&gt;In our next article, we discuss and list the benefits of CI/CD both from a general and from mobile development perspective.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Appcircle is an all-in-one automated mobile CI/CD platform is that makes mobile CI/CD best practices accessible to everyone.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/contact?utm_source=devto&amp;amp;utm_medium=post&amp;amp;utm_campaign=what_is_ci_cd_and_why_do_you_need_ci_cd_in_mobile_app_projects"&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%2Fc9pfolgwlhw0k8nzem9v.png" alt="ContactUs" width="800" height="99"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cicd</category>
      <category>mobiledev</category>
    </item>
    <item>
      <title>Why Do You Need a Dedicated Mobile CI/CD Platform Instead of Jenkins</title>
      <dc:creator>Sophie @Appcircle</dc:creator>
      <pubDate>Wed, 08 Sep 2021 16:35:14 +0000</pubDate>
      <link>https://dev.to/appcircelio/why-do-you-need-a-dedicated-mobile-ci-cd-platform-instead-of-jenkins-2jg9</link>
      <guid>https://dev.to/appcircelio/why-do-you-need-a-dedicated-mobile-ci-cd-platform-instead-of-jenkins-2jg9</guid>
      <description>&lt;h1&gt;
  
  
  &lt;a href="https://appcircle.io/blog/mobile-ci-cd-devops-platform-comparison-jenkins/" rel="canonical"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CtD3k_UJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/12/Jenkins-for-Mobile-DevOps-845x321.png.webp" width="800" height="304"&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Reading Time: 4 minutes&lt;/p&gt;

&lt;p&gt;Jenkins is a general-purpose CI/CD tool, but you may be asking how you can use Jenkins for mobile app builds or if Jenkins is useful for mobile CI/CD. Jenkins is one of the most popular tools for DevOps processes, however mobile DevOps may benefit from specialized tools that meet the unique needs of mobile apps.&lt;/p&gt;

&lt;p&gt;In this article, we will discuss how Jenkins manages mobile DevOps processes, and show how it differs from a CI/CD solution that's specifically designed for mobile.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What is Jenkins and what is it good for?
Jenkins is highly flexible and configurable CI/CD platform with a wide range of plug-ins. This interoperability and flexibility makes Jenkins a preferred tool, however sometimes, plug-ins are needed even for the most basic tasks, but it syncs with a wide range of platforms, operating systems, programming languages and technologies. That also allows Jenkins to integrate with other software/tools used in your company’s tech stack, such as Maven, Gitlab, SonarQube, Selenium.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As a result, its complexity and dependency is high since everything is handled by manual efforts of integrating with the right plugins.&lt;/p&gt;

&lt;p&gt;You are also dependent on third parties, and whenever there is an issue, you have to get support from the plug-in developers themselves, the Jenkins community, or even whoever configured the platform in the first place.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How is Jenkins used for DevOps?
Jenkins works as a deployable solution, which is highly scalable. It can be used in different DevOps stacks with the right configuration and the plugins.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;From student projects to enterprise products, Jenkins can cover most of your needs if you deploy and set up everything by yourself. However, Jenkins can be hard to figure out as its unintuitive and outdated UI can be confusing for first-time users.&lt;/p&gt;

&lt;p&gt;It may take a decent amount of time and effort to for new users to be comfortable with using Jenkins.&lt;/p&gt;

&lt;p&gt;For this reason, there are many number of emerging tools that specialize on specific stacks to alleviate such issues.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Is Jenkins suitable for enterprise use and teams?
Jenkins can be used in enterprises, however it requires a huge deal of customization, setup and maintenance for enterprise-oriented or team-based tasks. Since it’s not designed for large teams in mind, the management of Jenkins is generally done by a single user, which leads to tracking and accountability problems with the pushed code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Jenkins has the risk of creating a singular “hero user” within a large team, which creates a potentially problematic dependency on top of other third-party dependencies for plugins and such.&lt;/p&gt;

&lt;p&gt;Assigning separate users or groups to split tasks or jobs is not available and Jenkins doesn’t allow one developer to reach the activities done by another team member, readily. Tracking the overall release progress becomes a challenging job for larger projects and enterprises. Reporting is also a major feature lacked by Jenkins.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How can Jenkins be used for mobile CI/CD?
Jenkins is very much like a Swiss Army Knife. It can work with many different stacks, but it’s not specialized in any of those; so in cases of complex and unique stacks like mobile, it requires a big deal of configuration, management, and many different plug-ins to set up a full pipeline.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Thus, Jenkins can solve the most common problems, but falls short in anything that requires precision without additional tools.&lt;/p&gt;

&lt;p&gt;For instance, there is no storage for previous builds and artifacts. Therefore, users need to store their former documents and artifacts manually to reach back later.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Is it actually possible to use Jenkins with high productivity for mobile CI/CD?
Build and deployment of mobile apps with Jenkins is not an easy task, and you have to maintain it all by yourself, without official support. Also, even if Jenkins itself is scalable, you will have issues with the build environments such as the unique requirement of a Mac to build iOS apps.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Jenkins is designed with freedom and flexibility in mind, but mobile stacks do not have the same freedom that backend stacks have. It is tightly controlled by the constantly changing rules and standards by Apple and Google. This increases not just the setup effort but the maintenance effort as well for mobile stacks.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What are the concerns of using Jenkins as a mobile CI/CD tool?
Especially for iOS, the build environments must be on a Mac and if you have multiple projects or multiple build it is difficult to isolate them or create queues by default. Scaling is another issue. You can easily scale the Jenkins instance itself, but the scaling of build environments requires additional efforts and a special set of knowledge for macOS.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When using Jenkins for mobile app projects, the build environments usually become the performance and operations bottleneck.&lt;/p&gt;

&lt;p&gt;With a cloud-based dedicated mobile CI/CD platform, you have higher performance all around as all relevant specifications and extensive automation is possible without third-party tools.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What is the alternative of Jenkins for mobile CI/CD?&lt;br&gt;
A special case for mobile CI/CD is that the DevOps processes are usually handled by the developers themselves.&lt;br&gt;
Mobile CI/CD is differentiated by the specific knowledge and the close attention required for the build and deployment processes.&lt;br&gt;
With all the concerns specified in the previous items, it is common for mobile developers or any mobile DevOps specialist to look for a Jenkins alternative for mobile DevOps.&lt;br&gt;
There are actually dedicated mobile CI/CD platforms that makes mobile CI/CD accessible by everyone by providing the best of both worlds set of features with high flexibility and ease of use.&lt;br&gt;
Dedicated mobile CI/CD platforms that can be used in the cloud in a fully scalable manner without the need for any maintenance or hardware investment or they can be deployed on-premises for enterprises. With this way, there is no compromise from what Jenkins offers with significant value added.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Benefits of using an dedicated mobile CI/CD platform as an alternative to Jenkins&lt;br&gt;
With an enterprise-oriented, specialized mobile CI/CD platform like Appcircle, you have native integrations and automated workflows.&lt;br&gt;
Any issue or maintenance is handled from a single point of contact with full support.&lt;br&gt;
As authorization and role management is available, proper collaboration can be achieved by the enterprise teams.&lt;br&gt;
Continuous integration and delivery in mobile DevOps have a unique set of requirements and demand a dedicated mobile CI/CD tool for the highest productivity, as Jenkins alone cannot achieve.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With Appcircle, you can manage the full CI/CD pipeline of mobile apps without the need for complex integrations and multiple tools. Appcircle is specialized on the specific needs of mobile apps.&lt;/p&gt;

</description>
      <category>jenkins</category>
      <category>mobile</category>
      <category>cicd</category>
    </item>
    <item>
      <title>SECURITY IN APPCIRCLE</title>
      <dc:creator>Sophie @Appcircle</dc:creator>
      <pubDate>Wed, 08 Sep 2021 16:34:13 +0000</pubDate>
      <link>https://dev.to/appcircelio/security-in-appcircle-4lh2</link>
      <guid>https://dev.to/appcircelio/security-in-appcircle-4lh2</guid>
      <description>&lt;p&gt;&lt;a href="https://appcircle.io/blog/security-in-appcircle/" rel="canonical"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H1Ki5Qwo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2021/01/Security-in-Appcircle-845x321.png.webp" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reading Time: 3 minutes&lt;/p&gt;

&lt;p&gt;A well-established CI/CD pipeline gets entwined with many enterprise processes and the security of the pipeline gets more and more crucial. In this article, we will outline how Appcircle ensures the security of your CI/CD pipeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code Security in Appcircle
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Appcircle connects to your repository to fetch your projects and branches so that you can build your apps in the cloud, however the source codes are not stored in Appcircle infrastructure.&lt;/li&gt;
&lt;li&gt;  The source code is fetched for the build only to a brand-new build agent specifically created for that build. Once the build is complete, the agent is killed along with all the source code and any leftover data from the build.&lt;/li&gt;
&lt;li&gt;  GitHub, GitLab and Bitbucket are all supported by Appcircle through oAuth. The agents connecting to your repositories follow the protocols enforced by the repository providers.&lt;/li&gt;
&lt;li&gt;  For all other repository providers, the only provided option is to use SSH connections for the utmost security.&lt;/li&gt;
&lt;li&gt;  Appcircle never modifies the contents of the repository itself. During the build, it is possible to modify the contents with custom scripts and workflow steps by the user, but these are not permanent and only applicable for the local copy.&lt;/li&gt;
&lt;li&gt;  Appcircle team does not have access to the source code for any means and purposes. The oAuth tokens or the SSH keys are stored securely in an AWS vault and they are only used to fetch the branch and commit list or during the build.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Infrastructure Security in Appcircle
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Appcircle fully runs on AWS, who considers cloud security as the highest priority with many built in security features and services. For more information on the cloud security, please refer to the &lt;a href="https://aws.amazon.com/security/"&gt;AWS Security Center&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;  Appcircle is built on Kubernetes. For every single build, there is a brand-new virtual machine specifically created for you. This enables Appcircle to keep your source codes secure and isolated from others.&lt;/li&gt;
&lt;li&gt;  The virtual build agents run on an internal private network and they are not directly accessible from the outside.&lt;/li&gt;
&lt;li&gt;  Even your concurrent builds run on different containers which eliminate the chances of conflicts and instability.&lt;/li&gt;
&lt;li&gt;  After the build is done, the virtual machine is killed and there is no residual data storage.&lt;/li&gt;
&lt;li&gt;  Only the selected build artifacts and the build logs are retained, and they are not accessible by the Appcircle team.&lt;/li&gt;
&lt;li&gt;  The same level of security is also applicable for the Appcircle simulator/emulator. A brand new virtual device is generated for every session and once the session ends, the virtual device is killed and no residual data is stored.&lt;/li&gt;
&lt;li&gt;  The same also applies for the shared app preview links. For every new session, a new device is generated even though the app is the same and you can set an expiration date for the public links as well.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Data Security in Appcircle
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  All secret data, including the keys, signing identities, environment variables and secrets are stored in an AWS vault. Since these are highly confidential and crucial elements for DevOps, Appcircle provides the best-in-class security for any private element.&lt;/li&gt;
&lt;li&gt;  For instance, the secret environment variables (both text keys and files) are not accessible externally. They can only be utilized in a build and they cannot be exposed by the build module users (e.g. they are automatically removed from the build logs). They cannot be modified and the only way to update them is deleting and re-adding.&lt;/li&gt;
&lt;li&gt;  As for the signing identities, again, if a user does not have access to the signing identities module, they cannot view, download or edit the signing identities while being able to use them in builds.&lt;/li&gt;
&lt;li&gt;  You can be highly confident when sharing the build logs with developers or others for any kind of assistance needed. They can see neither your secrets nor the signing identities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Enterprise-Grade User Management and Logging in Appcircle
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  For enterprises, Appcircle provides fine-grained permissions for all submodules so that you can manage which user can access which module in what level. This makes it well suited for team without the need to worrying about widespread access.&lt;/li&gt;
&lt;li&gt;  Appcircle provides logs for all modules so that the enterprise admin can track which build is done by whom or who ran an in-browser app preview session and when. This provides full transparency and visibility across the entire platform.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Billing Safety with Appcircle
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Appcircle uses &lt;a href="https://stripe.com/"&gt;Stripe&lt;/a&gt;, which is world's one of the most used and trusted payment platform. Your credit card information is never stored in Appcircle and does not pass through Appcircle infrastructure.&lt;/li&gt;
&lt;li&gt;  All transactions are done exclusively through the Stripe platform directly and transactions are done with 3D Secure for the supported credit cards.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Even Higher Security with Private Cloud and On-Premise Options
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  The Kubernetes-based next generation architecture of Appcircle enables private cloud and on-premise deployments as well. Even though Appcircle provides high security, you can optionally ensure that the full CI/CD pipeline is hosted in your own infrastructure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With Appcircle, you can manage the full CI/CD pipeline of mobile apps in a secure and trusted environment.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>HOW TO DEPLOY IOS AND ANDROID APPS TO AWS DEVICE FARM AND RUN TESTS AUTOMATICALLY</title>
      <dc:creator>Sophie @Appcircle</dc:creator>
      <pubDate>Wed, 08 Sep 2021 16:33:03 +0000</pubDate>
      <link>https://dev.to/appcircelio/how-to-deploy-ios-and-android-apps-to-aws-device-farm-and-run-tests-automatically-1i7h</link>
      <guid>https://dev.to/appcircelio/how-to-deploy-ios-and-android-apps-to-aws-device-farm-and-run-tests-automatically-1i7h</guid>
      <description>&lt;h1&gt;
  
  
  &lt;a href="https://appcircle.io/blog/how-to-deploy-ios-and-android-apps-to-aws-device-farm-and-run-tests-automatically/" rel="canonical"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yIVAVqSL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/10/Appcircle-with-AWS-Device-Farm-for-CT-845x321.png.webp" width="800" height="304"&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Reading Time: 5 minutes&lt;/p&gt;

&lt;p&gt;Appcircle is a mobile CI/CD platform that provides a fully automated environment to manage mobile app CI, CD and CT (continuous testing).&lt;/p&gt;

&lt;p&gt;For continuous testing, you have a number of options with Appcircle and you can use AWS Device Farm for multiple-device testing. In this article, we will be integrating AWS Device Farm to your mobile CI/CD workflow in a few easy steps so that you can deploy apps and run tests automatically for a complete CI-CD-CT.&lt;/p&gt;

&lt;p&gt;Manage your mobile CI, CD and CT (continuous testing) with Appcircle&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/start"&gt;Start for Free&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding AWS Device Farm Step to the Build Workflow
&lt;/h2&gt;

&lt;p&gt;AWS Device Farm is an application testing service that enables you to run your tests concurrently on multiple mobile devices to speed up the execution of your tests and generates videos and logs to help you quickly identify issues with your app. Appcircle is integrated with AWS Device Farm for continuous testing. You can build your app in Appcircle and deploy it directly to AWS Device Farm to run automated tests.&lt;/p&gt;

&lt;p&gt;With the "AWS Device Farm Deploy and Run" step in Appcircle, you can directly deploy your binaries and test scripts during the build to the specified AWS Device Farm project and run tests.&lt;/p&gt;

&lt;p&gt;To start, you need to add the&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  "Android Build for UI Testing" step for Android&lt;/li&gt;
&lt;li&gt;  "Xcodebuild Build for Testing" step for iOS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;followed by the "AWS Device Farm Deploy and Run" step to the workflow from the &lt;a href="https://docs.appcircle.io/workflows/why-to-use-workflows#workflow-marketplace"&gt;workflow marketplace&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you just want to run tests, you can also remove other build steps such as "Android Build" or "Xcodebuild for Devices".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/10/AWS-Device-Farm-with-Appcircle-1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wuRI-3jJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/10/AWS-Device-Farm-with-Appcircle-1.png" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Android workflow for AWS Device Farm&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/10/AWS-Device-Farm-with-Appcircle-2.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8VKoyUyv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/10/AWS-Device-Farm-with-Appcircle-2.png" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;iOS workflow for AWS Device Farm&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuring the AWS Device Farm Step in the Workflow
&lt;/h2&gt;

&lt;p&gt;Once these steps are added, press save to exit the workflow edit mode and click on the AWS Device Farm step.&lt;/p&gt;

&lt;p&gt;The input values are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  AWS Access Key ID: Enter the AWS access key ID. &lt;a href="https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys"&gt;For more information, you can refer here.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  AWS Secret Access Key: Enter the secret access key associated with the ID entered above. &lt;a href="https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys"&gt;For more information, you can refer here.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  AWS Default Region: Enter the AWS region where for the run. &lt;a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints"&gt;You can find the endpoint codes for the regions here.&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is highly recommended to add the keys as &lt;a href="https://docs.appcircle.io/environment-variables/managing-variables"&gt;secret environment variables&lt;/a&gt; instead of typing them here for security purposes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  AWS Project ARN: The ARN of the project for deploy and run.&lt;/li&gt;
&lt;li&gt;  AWS Device Pool Arn: The ARN of the device pool for the run.&lt;/li&gt;
&lt;li&gt;  AWS Device Farm Run Name Prefix: The name prefix for the run to be scheduled. AWS Device Farm Run Test Type: The type of the test for the run.&lt;/li&gt;
&lt;li&gt;  AWS Device Farm File Upload Time Out: Time out duration (seconds) for the test file upload. The step is skipped if the time out is reached.&lt;/li&gt;
&lt;li&gt;  Maximum Waiting Time for Run Test Results: Time out duration (seconds) for the AWS Device Farm run. The step is skipped if this duration is reached, but the test execution continues in AWS Device Farm.&lt;/li&gt;
&lt;li&gt;  AWS Device Farm App ARN: The ARN of the application package to run tests against, created with CreateUpload. If you don't set this parameter, the subsequent App Upload File Name, App Upload Type and App Upload File Path parameters are required.&lt;/li&gt;
&lt;li&gt;  AWS Device Farm App Upload File Name: The file to be uploaded. The name should not contain any forward slashes (/ ). If you are uploading an iOS app, the file must have an .ipa extension. If you are uploading an Android app, the file must have an .apk extension.&lt;/li&gt;
&lt;li&gt;  AWS Device Farm App Upload Type: The upload type of the file.&lt;/li&gt;
&lt;li&gt;  AWS Device Farm App Upload File Path: The file path for the app upload.&lt;/li&gt;
&lt;li&gt;  AWS Device Farm Test ARN: The ARN of the uploaded test to be run. If you don't set this parameter, the subsequent Test Upload File Name, Test Upload Type and Test Upload File Path parameters are required.&lt;/li&gt;
&lt;li&gt;  AWS Device Farm Test Upload File Name: The test file to be uploaded. The file must have a .zip extension.&lt;/li&gt;
&lt;li&gt;  AWS Device Farm Test Upload Type: The upload type of the test.&lt;/li&gt;
&lt;li&gt;  AWS Device Farm Test Upload File Path: The file path for the test upload.&lt;/li&gt;
&lt;li&gt;  AWS Test Spec ARN: The ARN of the uploaded test spec to be run.&lt;/li&gt;
&lt;li&gt;  AWS Test Spec Upload File Name: The test spec file to be uploaded.&lt;/li&gt;
&lt;li&gt;  AWS Test Spec Upload Type: The upload type of the test spec.&lt;/li&gt;
&lt;li&gt;  AWS Test Spec Upload File Path:The file path for the test spec upload.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the details of the AWS Device Farm-specific parameters, please refer to the following documents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://docs.aws.amazon.com/cli/latest/reference/devicefarm/create-upload.html"&gt;create-upload --- AWS CLI Command Reference&lt;/a&gt; -- to upload apps and tests&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://docs.aws.amazon.com/cli/latest/reference/devicefarm/schedule-run.html"&gt;schedule-run --- AWS CLI Command Reference&lt;/a&gt; -- to run tests&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Running the Build with the AWS Device Farm Step
&lt;/h2&gt;

&lt;p&gt;After you save your settings, you can &lt;a href="https://docs.appcircle.io/build/build-manually-or-with-triggers"&gt;run the build automatically with the triggers or run it manually&lt;/a&gt; and the step will be executed accordingly. You can view the details of the upload operation in the build logs:&lt;/p&gt;

&lt;p&gt;After you save your settings, you can run the build and the step will be executed accordingly. You can view the details of the AWS Device Farm Deploy and Run step in the build logs:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/10/AWS-Device-Farm-with-Appcircle-3.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CPPZXW6C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/10/AWS-Device-Farm-with-Appcircle-3.png" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Building and deploying apps automatically for AWS Device Farm&lt;/p&gt;

&lt;p&gt;The full details of the tests are accessible in the &lt;a href="https://console.aws.amazon.com/devicefarm/"&gt;AWS Device Farm console&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/10/AWS-Device-Farm-with-Appcircle-4.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c99MMyj1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/10/AWS-Device-Farm-with-Appcircle-4.png" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An automated test run on AWS Device Farm&lt;/p&gt;

&lt;p&gt;With Appcircle, you can automate the full lifecycle of your mobile app with continuous integration, continuous delivery and continuous testing.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>GUIDE TO BUILDING FLUTTER WEB APPS WITH APPCIRCLE</title>
      <dc:creator>Sophie @Appcircle</dc:creator>
      <pubDate>Wed, 08 Sep 2021 16:29:06 +0000</pubDate>
      <link>https://dev.to/appcircelio/guide-to-building-flutter-web-apps-with-appcircle-2914</link>
      <guid>https://dev.to/appcircelio/guide-to-building-flutter-web-apps-with-appcircle-2914</guid>
      <description>&lt;h1&gt;
  
  
  &lt;a href="https://appcircle.io/blog/guide-to-building-flutter-web-apps-with-appcircle/" rel="canonical"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qyeHki8d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/10/Building-Flutter-Web-Apps-With-Appcircle-845x321.png.webp" width="800" height="304"&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Reading Time: 2 minutes&lt;/p&gt;

&lt;p&gt;Appcircle is a mobile CI/CD platform that provides a fully automated environment to manage mobile app lifecycle end-to-end, transforming DevOps to NoOps with the best practices and the Flutter framework is an open-source user interface toolkit created by Google.&lt;/p&gt;

&lt;p&gt;Flutter app development is done with the Dart language and you can develop iOS, Android, and web apps with Flutter.&lt;/p&gt;

&lt;p&gt;Appcircle supports the full lifecycle of Flutter apps for all Flutter CI/CD needs. In this article, we will be building a Flutter web app with Appcircle. &lt;a href="https://appcircle.io/blog/guide-to-automated-mobile-ci-cd-for-flutter-projects-with-appcircle/"&gt;For a full overview on mobile CI/CD with Flutter and Appcircle, please refer to this post.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Build Flutter mobile and web apps with Appcircle&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/start"&gt;Start for Free&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If your app supports Flutter Web, you can also build the Flutter web app along with the &lt;a href="https://appcircle.io/blog/guide-to-automated-mobile-ci-cd-for-flutter-projects-with-appcircle/"&gt;Flutter iOS or Android build&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Flutter Web Build is available as a workflow step in the workflow marketplace. Just configure your project as you would for iOS or Android and add the Flutter Build for Web step anywhere after the Flutter Install step to include a web build in the workflow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/10/Flutter-Web-1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eJ2bclZZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/10/Flutter-Web-1.png.webp" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to build your Flutter project only for web, you can &lt;a href="https://appcircle.io/blog/guide-to-automated-mobile-ci-cd-for-flutter-projects-with-appcircle/#creating-a-build-profile-for-a-flutter-project"&gt;add a Flutter Android project in the standard way&lt;/a&gt;, save your project configuration once, and then remove all the Android-related steps from the build workflow.&lt;/p&gt;

&lt;p&gt;In this case, the workflow may look like the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/10/Flutter-Web-2.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iED4WoC5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/10/Flutter-Web-2.png.webp" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to deploy your web output automatically, you can use a &lt;a href="https://github.com/appcircleio/appcircle-custom-script-component/"&gt;Custom Script&lt;/a&gt; or &lt;a href="https://appcircle.io/blog/how-to-deploy-mobile-app-build-artifacts-automatically-to-amazon-s3-with-appcircle/"&gt;upload it to Amazon S3&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Once your build is configured, it can be built &lt;a href="https://appcircle.io/blog/guide-to-automated-mobile-ci-cd-for-flutter-projects-with-appcircle/#starting-a-build-and-after-a-build"&gt;manually or automatically in the same way with other apps&lt;/a&gt;. Your app will be built in the beta channel to enable web builds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/10/Flutter-Web-3.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--T9WEsXdf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/10/Flutter-Web-3.png" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After a build, you can download the web build output manually &lt;a href="https://appcircle.io/blog/guide-to-automated-mobile-ci-cd-for-flutter-projects-with-appcircle/#starting-a-build-and-after-a-build"&gt;from the build artifact list&lt;/a&gt; as the &lt;code&gt;web.zip&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/10/Flutter-Web-4.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mUGnqFPq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/10/Flutter-Web-4.png.webp" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With Appcircle, you can manage the CI/CD of your Flutter web, iOS and Android apps for free.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/start"&gt;Start Using Appcircle Now&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>12 App Store Review Tips: How to Get Along Well with Apple and Avoid App Rejections</title>
      <dc:creator>Sophie @Appcircle</dc:creator>
      <pubDate>Wed, 08 Sep 2021 16:28:32 +0000</pubDate>
      <link>https://dev.to/appcircelio/12-app-store-review-tips-how-to-get-along-well-with-apple-and-avoid-app-rejections-4oa</link>
      <guid>https://dev.to/appcircelio/12-app-store-review-tips-how-to-get-along-well-with-apple-and-avoid-app-rejections-4oa</guid>
      <description>&lt;h1&gt;
  
  
  &lt;a href="https://appcircle.io/blog/app-store-review-tips-how-to-get-along-well-with-apple-and-avoid-app-rejections/" rel="canonical"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PLBH2jBa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/10/App-Store-Review-Tips-How-to-Get-Along-Well-with-Apple-and-Avoid-App-Rejections-845x321.png.webp" width="800" height="304"&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Reading Time: 5 minutes&lt;/p&gt;

&lt;p&gt;This article may look like another article about the common app rejections by the App Store reviewers; though it's not.&lt;/p&gt;

&lt;p&gt;Even Apple itself is very open about this subject and they have an official guide on common app rejections in the app review. So we will rehash these from a positive perspective instead by focusing on how you can develop your app in such a way that it is well-received by Apple. For a much better app, don't ask yourself the question "How can I avoid being rejected?", instead ask yourself, "How can I make Apple like my app?"&lt;/p&gt;

&lt;p&gt;With such a positive approach, you can avoid rejection and also get a chance to become a "featured app". Let's dive deeper into the important points to increase your chances to be noticed by Apple.&lt;/p&gt;

&lt;h2&gt;
  
  
  12 Tips to get along well with Apple for app reviews
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Everyone likes crash-free apps
&lt;/h3&gt;

&lt;p&gt;One of the most important aspects of having a well-received app is to have it well-tested with minimal bugs and no crashes. It may be inevitable to have small bugs, but crashes are another thing, and no one, including Apple, does not like crashes.&lt;/p&gt;

&lt;p&gt;For this reason, make sure that your application is tested thoroughly in different conditions. For this purpose, you can use the Appcircle Distribute module for manual testing in the browser or on real devices. For automated testing, you can use AWS Device Farm and Firebase Test Lab in your Appcircle CI/CD workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Your app must be an app and an iOS-worthy one for Apple
&lt;/h3&gt;

&lt;p&gt;This one looks straightforward, but for one reason or another, developers may be inclined to use WebViews for certain functionality, but Apple recommends using native functionality over WebViews.&lt;/p&gt;

&lt;p&gt;Apps with no native functionality are rejected outright, but in any case, Apple likes apps with full native functionality more than the apps with a more hybrid approach.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Reasonable and transparent advertising
&lt;/h3&gt;

&lt;p&gt;It is perfectly fine to have a solid business model for your app, but transparency and respect for users' privacy are very important for Apple for any app.&lt;/p&gt;

&lt;p&gt;For instance, if you specify that you have no ads in your app you need to make sure that there are no ad frameworks present and no ads are displayed.&lt;/p&gt;

&lt;p&gt;If you are transparent about your business model, it would be highly likely to be better received by Apple.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Attention to transparency and privacy
&lt;/h3&gt;

&lt;p&gt;Similarly, your app should have a clear privacy policy and any data collection must be done transparently with an opt-in manner.&lt;/p&gt;

&lt;p&gt;Apple differentiates itself from others such as Google and Facebook with its emphasis on user privacy so any app sharing the same privacy-focused approach is preferred.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Adhering to the app permission rules and best practices
&lt;/h3&gt;

&lt;p&gt;Another point regarding privacy and transparency is requesting the permissions the right way. You should not ask for additional permissions than absolutely necessary and the reason for each permission request must be explained clearly.&lt;/p&gt;

&lt;p&gt;One of the most common rejection reasons is the missing permission request description in Info.plist file.&lt;/p&gt;

&lt;p&gt;As per Apple's focus on privacy, the way the permissions are requested, and the way the sensitive features are used are thoroughly reviewed.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. The infamous "Restore Purchases" button
&lt;/h3&gt;

&lt;p&gt;Another common review point is the "Restore Purchases" button. Any app that provides in-app purchases must have this button within the app.&lt;/p&gt;

&lt;p&gt;Again, it is all about these small details that make an app noticed or rejected by Apple.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. The mention of Android and the exclusivity
&lt;/h3&gt;

&lt;p&gt;Talking about small details, we should also point out that Apple also cares about the presentation and exclusivity. If the app description includes any references to Android or if the screenshots are coming from an Android device, the app is rejected right away. On the other hand, if an app is exclusive to the App Store, then it has a higher chance to be featured.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Do not underestimate the importance of the app metadata
&lt;/h3&gt;

&lt;p&gt;App Store listing description is indeed as important as the app itself. If you are keyword spamming in the app name or description or if the description is too short, the app will be rejected.&lt;/p&gt;

&lt;p&gt;Even though smart app store optimization (ASO) tricks are welcome, your primary objective should be providing insightful and meaningful descriptions. If the app description conveys the value of the app in an exemplary way, you also have a higher chance of getting more downloads and getting noticed. Keep in mind that being featured provides as high visibility as keyword optimization, if not more.&lt;/p&gt;

&lt;p&gt;This also applies to screenshots. Your screenshots should be relevant to the app and they must come from the actual form factor (e.g. iPad or iPhone) and of course, not from an Android device. Beautiful screenshots always attract more users and complement Apple's attention to beautiful design.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. What the user sees must be what the user gets
&lt;/h3&gt;

&lt;p&gt;Two other points regarding the app description are that it should not contain any pricing information and any features that are "in roadmap" or "coming soon".&lt;/p&gt;

&lt;p&gt;It must be a reflection of the currently available features. You must also refrain from classifications like "beta" or "testing".&lt;/p&gt;

&lt;h3&gt;
  
  
  10. App Store is no place for pre-release apps
&lt;/h3&gt;

&lt;p&gt;Anyway, any pre-release version of an app belongs to TestFlight or platforms like the Appcircle Distribute module, so you should avoid submitting pre-release apps entirely, not just avoid mentioning it in the description.&lt;/p&gt;

&lt;p&gt;This also applies to apps designed for private use such as an in-house enterprise or a closed group of people. In such a case, you should ideally be distributing your app through an Enterprise App Store with Enterprise or Ad Hoc certificates. However, also note that these certificates also have certain terms, so you cannot use them for public distribution out of the App Store.&lt;/p&gt;

&lt;h3&gt;
  
  
  11. Take advantage of Continuous Integration, Delivery and Testing to deliver the highest quality
&lt;/h3&gt;

&lt;p&gt;There are so many details to take note of to get along well with Apple, but it all comes down to having a high-quality app. If your app crashes right away, even the most amazing screenshot in the world does not matter.&lt;/p&gt;

&lt;p&gt;For this reason, you need to have a full CI/CD/CT (Continous Integration, Delivery, and Testing) pipeline set up for your project so that you can make sure that you can provide the best quality with the highest productivity. With Appcircle, you can manage the CI/CD/CT of your iOS apps for free.&lt;/p&gt;

&lt;p&gt;Build, deploy and test high-quality iOS apps without a Mac!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/start"&gt;Start for Free&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  12. You actually have a direct line to Apple
&lt;/h3&gt;

&lt;p&gt;The last but not the least important tip to get along well with Apple is to make life easy for the reviewers. Better descriptions and screenshots surely help with this, but you actually have a more powerful tool in your arsenal, which is the notes to the reviewer field.&lt;/p&gt;

&lt;p&gt;This is your direct connection to Apple so use it wisely and reasonably. If you have sample credentials, you must specify them here, but you can also specify instructions or certain features that are not visible at first sight. If you have exceptional cases for any reason, you can specify them here so that they are not classified as bugs. (Not a bug but a feature!)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Special thanks to Celil Bozkurt for his contributions to this article.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>CUSTOMER SUCCESS STORY: WEBEE STREAMLINES THE DEPLOYMENT OF HUNDREDS OF APPS WITH APPCIRCLE</title>
      <dc:creator>Sophie @Appcircle</dc:creator>
      <pubDate>Wed, 08 Sep 2021 16:27:30 +0000</pubDate>
      <link>https://dev.to/appcircelio/customer-success-story-webee-streamlines-the-deployment-of-hundreds-of-apps-with-appcircle-139h</link>
      <guid>https://dev.to/appcircelio/customer-success-story-webee-streamlines-the-deployment-of-hundreds-of-apps-with-appcircle-139h</guid>
      <description>&lt;p&gt;&lt;a href="https://appcircle.io/blog/customer-success-story-webee-streamlines-the-deployment-of-hundreds-of-apps-with-appcircle/" rel="canonical"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5GWWznE0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2021/03/webeeprefer-appcircle-845x321.png.webp" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reading Time: 2 minutes&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;WeBee is an award-winning guest engagement platform, which provides a mobile guest engagement solution with social distancing and contactless features for more than 150 hotels in 20 countries globally. Hotel guests can make any of their requests via their smartphones (iOS &amp;amp; Android) without a need for face-to-face communication.&lt;/p&gt;

&lt;p&gt;Their digital solution enhances guest experience and improves guest satisfaction. Users can handle everything through the app, such as reservation, transfer opportunities, check-in/out, or in-room dining/laundry/housekeeping requests.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges
&lt;/h2&gt;

&lt;p&gt;WeBee uses a mono-repo (single codebase) approach to create and deploy multiple white-label apps for Google Play Store and Apple Store.&lt;/p&gt;

&lt;p&gt;End-users experience different interfaces as the hotel-specific apps have different branding with dynamic app name, icon, and content supplied by the clients' content management systems.&lt;/p&gt;

&lt;p&gt;WeBee's database runs on AWS, and it directs user requests from the end user apps to the staff app of the specific hotel. Those apps are updated with new features from a single, unified codebase, but required separate app builds for each white-label client. Thus, the team manually signed unique apps and submitted them to the app stores from different publisher accounts.&lt;/p&gt;

&lt;p&gt;That was taking a tremendous amount of time and manual effort before they met Appcircle.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Appcircle upped the game for us for achieving the highest efficiency in deploying and managing hundreds of mobile apps under different brands, strengthening our leadership with our unique focus on mobility.&lt;/p&gt;

&lt;p&gt;Ozgur ZanFounder -- &lt;a href="https://www.getwebee.com/"&gt;WeBee&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;WeBee streamlined and automated mobile DevOps processes with Appcircle.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  They manage all updates efficiently as tagging code commits with hotel name triggers build for specific clients.&lt;/li&gt;
&lt;li&gt;  Appcircle can then automatically build any requested version of the app with the specific customizations for that client.&lt;/li&gt;
&lt;li&gt;  They use the Appcircle online emulator/simulator to provide clients instant app previews, where they can approve the final version immediately.&lt;/li&gt;
&lt;li&gt;  Publishing the client apps under their own publisher accounts has also been automated. WeBee linked various Google Play IDs and Apple Developer IDs to lead deployments in Appcircle.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The mobile CI/CD pipeline of the WeBee apps is fully automated with tagged pushes from a single codebase, resulting in significant improvements in productivity and time-to-market.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>HOW TO USE FASTLANE WITH APPCIRCLE FOR AUTOMATED MOBILE CI/CD</title>
      <dc:creator>Sophie @Appcircle</dc:creator>
      <pubDate>Wed, 08 Sep 2021 16:26:03 +0000</pubDate>
      <link>https://dev.to/appcircelio/how-to-use-fastlane-with-appcircle-for-automated-mobile-ci-cd-55l7</link>
      <guid>https://dev.to/appcircelio/how-to-use-fastlane-with-appcircle-for-automated-mobile-ci-cd-55l7</guid>
      <description>&lt;p&gt;&lt;a href="https://appcircle.io/blog/how-to-use-fastlane-with-appcircle-for-automated-mobile-ci-cd/" rel="canonical"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aZrln7Rt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/08/Using-Fastlane-for-Mobile-CI-CD-Automation-Appcircle-845x321.png.webp" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reading Time: 4 minutes&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/"&gt;Appcircle&lt;/a&gt; is a mobile CI/CD platform that provides a fully automated environment to build and deploy apps, which also supports *fastlane *for build automation.&lt;/p&gt;

&lt;p&gt;With Appcircle, you can automate your build and signing processes with the flexible workflow structure and you can also use &lt;em&gt;fastlane *as a workflow step within the build workflows. To use *fastlane&lt;/em&gt;, Appcircle expects the presence of a fastfile in your repository.&lt;/p&gt;

&lt;p&gt;Manage your mobile CI, CD and CT (continuous testing) with Appcircle&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/start"&gt;Start for Free&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How Does Fastlane Work with Appcircle
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://fastlane.tools/"&gt;&lt;em&gt;fastlane&lt;/em&gt;&lt;/a&gt; is an automation tool for mobile app build and deployment and just as the name indicates, it provides a "fast lane" for mobile app projects by running the command line tools like xcodebuild. It can automate and simplify these processes and even though you can use it locally, it works best in tandem with CI/CD tools. It is especially popular with the traditional, general-purpose CI/CD tools that don't support mobile app projects out of the box.&lt;/p&gt;

&lt;p&gt;Mobile CI/CD tools like Appcircle can already automate the full mobile CI/CD process without the need for &lt;em&gt;fastlane&lt;/em&gt; or any third-party tool. However, if you already have a project configured for Fastlane or if you have very specific dependencies on certain &lt;em&gt;fastlane&lt;/em&gt; features, you can use it within Appcircle. With this way, you can actually enhance your &lt;em&gt;fastlane&lt;/em&gt; flows with the advanced automation and workflow features of Appcircle. Moreover, you can use &lt;a href="https://docs.appcircle.io/signing-identities"&gt;Appcircle Centralized Signing Identities&lt;/a&gt; or &lt;a href="https://docs.appcircle.io/distribute/create-or-select-a-distribution-profile"&gt;Appcircle Distribution&lt;/a&gt; or even the &lt;a href="https://appcircle.io/emulator"&gt;Appcircle In-Browser Emulator&lt;/a&gt; for your apps built with &lt;em&gt;fastlane&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Use Fastlane in the Mobile CI/CD Workflow
&lt;/h2&gt;

&lt;p&gt;Setting up &lt;em&gt;fastlane&lt;/em&gt; with Appcircle is very easy. You just add &lt;em&gt;fastlane&lt;/em&gt; as a step and you just need to have a fastfile present in your repository. Appcircle will take care of &lt;em&gt;fastlane&lt;/em&gt; installation and automation.&lt;/p&gt;

&lt;p&gt;The default actions are supported (such as fastlane &lt;a href="https://docs.fastlane.tools/actions/gym/"&gt;gym&lt;/a&gt;, fastlane &lt;a href="https://docs.fastlane.tools/actions/cocoapods/"&gt;cocoapods&lt;/a&gt;, fastlane &lt;a href="https://docs.fastlane.tools/actions/gradle/"&gt;gradle&lt;/a&gt; for building iOS and Android apps, fastlane &lt;a href="https://docs.fastlane.tools/actions/scan/"&gt;scan&lt;/a&gt; for testing apps,  fastlane &lt;a href="https://docs.fastlane.tools/actions/pilot/"&gt;pilot&lt;/a&gt; and fastlane &lt;a href="https://docs.fastlane.tools/actions/deliver/"&gt;supply&lt;/a&gt; to send apps to App Store Connect (formerly iTunes Connect) and TestFlight, fastlane &lt;a href="https://docs.fastlane.tools/actions/deliver/"&gt;deliver&lt;/a&gt; to send apps to Google Play Store, etc.)&lt;/p&gt;

&lt;p&gt;Appcircle supports different types of mobile app projects so that you can use &lt;em&gt;fastlane&lt;/em&gt; iOS, &lt;em&gt;fastlane&lt;/em&gt; Android, &lt;em&gt;fastlane&lt;/em&gt; React Native and &lt;em&gt;fastlane&lt;/em&gt; Flutter. You can opt in to use Appcircle counterparts of the &lt;em&gt;fastlane&lt;/em&gt; actions as well. Appcircle workflow feature enables cherry-picking mobile CI/CD steps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating a Build Profile to Connect Your Repository with a Fastfile
&lt;/h2&gt;

&lt;p&gt;In Appcircle, a &lt;a href="https://docs.appcircle.io/build/adding-a-build-profile"&gt;build profile&lt;/a&gt; contains the build workflows and the configuration of an app per target platform. (i.e. separate for iOS and Android).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; To create your first build profile, go to the "Build Module". (The first item on the left menu) and click on the orange "Add New" button on the top right of the screen.&lt;/li&gt;
&lt;li&gt; In the next screen, enter a name for your build profile and select the target operating system (iOS or Android) and the target platform (Obj-C/Swift, Java/Kotlin, React Native and Flutter projects are supported). If you have two different targets in your project for iOS and Android, you need to create two separate profiles. This allows you to manage separate build workflows for different operating systems.&lt;/li&gt;
&lt;li&gt; Once created, click on the build profile to connect your repository that contains a fastfile. You can connect private and public repositories on GitHub, Bitbucket, GitLab and other compatible git providers. You can authorize Appcircle to connect to your cloud repository provider account. This will allow you to use auto-build your project with hooks.&lt;/li&gt;
&lt;li&gt; The build configuration has different flows for iOS and Android and the projects are configured on a branch basis. You can have different configurations for different branches and you can build any of your commits (assuming that they are compatible with the current configuration).&lt;/li&gt;
&lt;li&gt; You can use *fastlane *with the signing configuration defined in the lane or you can configure your build to use &lt;a href="https://app.gitbook.com/@smartface/s/appcircle/signing-identities/"&gt;Appcircle centralized code signing&lt;/a&gt; as an alternative to *fastlane *match.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Adding *fastlane *to the Appcircle Build Workflow as a Step
&lt;/h2&gt;

&lt;p&gt;A &lt;a href="https://docs.appcircle.io/workflows/why-to-use-workflows"&gt;workflow&lt;/a&gt; in Appcircle is a ladder of steps taken to build your applications. Each step has a different purpose and the workflow can be customized by modifying step parameters and inputs, running custom scripts or re-ordering steps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/08/Fastlane-Appcircle.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NybSAOjX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/08/Fastlane-Appcircle.png" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; To utilize *fastlane *in your builds, open the &lt;a href="https://docs.appcircle.io/workflows/why-to-use-workflows"&gt;workflow editor&lt;/a&gt; and add the "fastlane" step after the "Git Clone" step.&lt;/li&gt;
&lt;li&gt; If you want to run a specific &lt;em&gt;fastlane *command, you can add a "Custom Script" step anywhere after the *fastlane&lt;/em&gt; step.&lt;/li&gt;
&lt;li&gt; Once added, click on the *fastlane *step to configure it. Fastlane is easy to use with Appcircle just with two options.&lt;/li&gt;
&lt;li&gt; The "Fastlane Directory" option is used to specify the fastfile path . If you keep your fastfile in its default location, it is automatically used without the need to change this field.&lt;/li&gt;
&lt;li&gt; With the "Fastlane Lane" option, you can specify which lane to use.&lt;/li&gt;
&lt;li&gt; Once everything is set up, press Save to save your step configuration. Then you can configure and run your build just like any other app.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/08/Fastlane-Appcircle-2.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2sblh2XP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/08/Fastlane-Appcircle-2.png.webp" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Appcircle also supports building and signing the app independently with the "Build" and "Sign" steps in the workflow. These steps can be used in parallel with &lt;em&gt;fastlane&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running the Build Workflow
&lt;/h2&gt;

&lt;p&gt;To run the build workflow that includes the *fastlane *step, you can start a &lt;a href="https://docs.appcircle.io/build/build-manually-or-with-triggers"&gt;manual build or trigger an automatic build&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The full output of the *fastlane *execution can be viewed in the build log in real-time or after the build.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/08/Fastlane-Appcircle-3.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jgEzaCCL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/08/Fastlane-Appcircle-3.png" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploying the &lt;em&gt;fastlane&lt;/em&gt; Build Output
&lt;/h2&gt;

&lt;p&gt;You can use *fastlane *to deploy the built apps to the supported third-party services or you can use the &lt;a href="https://docs.appcircle.io/distribute/create-or-select-a-distribution-profile"&gt;Appcircle Distribute module&lt;/a&gt; to share the app with the testers or send it to the public app stores.&lt;/p&gt;

&lt;h2&gt;
  
  
  Further Documentation
&lt;/h2&gt;

&lt;p&gt;For more information, screenshots, and support, please refer to the &lt;a href="https://docs.appcircle.io/"&gt;Appcircle documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;With Appcircle, you can automate the full lifecycle of your mobile app with continuous integration, continuous delivery and continuous testing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/start"&gt;Start Using Appcircle Now&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>HOW TO TEST YOUR MOBILE APPS IN THE BROWSER</title>
      <dc:creator>Sophie @Appcircle</dc:creator>
      <pubDate>Wed, 08 Sep 2021 16:21:40 +0000</pubDate>
      <link>https://dev.to/appcircelio/how-to-test-your-mobile-apps-in-the-browser-25g5</link>
      <guid>https://dev.to/appcircelio/how-to-test-your-mobile-apps-in-the-browser-25g5</guid>
      <description>&lt;p&gt;HOW TO TEST YOUR MOBILE APPS IN THE BROWSER&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/blog/test-your-mobile-applications-on-web-browser/" rel="canonical"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m508kMiR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/04/In-browser-device-emulator-845x321.png.webp" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reading Time: 3 minutes&lt;/p&gt;

&lt;p&gt;One of the most challenging parts of mobile application development is testing. iOS and Android mobile apps need to be tested on a wide range of devices from various manufacturers and form factors with different operating system versions to ensure compatibility and stability.&lt;/p&gt;

&lt;p&gt;From iPhone SE to iPhone 11 Pro or from a Samsung Galaxy to a Xiaomi Redmi Note, the mobile apps must be compatible with many different mobile devices.&lt;/p&gt;

&lt;p&gt;Testing a mobile application on physical devices can be virtually impossible due to the large number of different devices being used all around the world. This leaves a mobile development team with only two options to test mobile applications on mobile phones or tablets, which are simulators and emulators.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DYPAfYNA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/04/preview_mobile_devices.jpg.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DYPAfYNA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/04/preview_mobile_devices.jpg.webp" alt="Preview mobile applications" width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the difference between Simulators and Emulators for Mobile App Development?
&lt;/h2&gt;

&lt;p&gt;While they look (and sound) similar, mobile device simulators and emulators have distinct differences.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Emulators imitate the software and the hardware environments of the target mobile devices while simulators provide only software environment imitation and they use the host system's hardware resources such as processors, memory and network connectivity&lt;/li&gt;
&lt;li&gt;  Emulators are better for debugging purposes but simulators won't be much use for debugging your mobile application&lt;/li&gt;
&lt;li&gt;  Emulators usually act slower than simulators since they imitate the hardware of the mobile device when simulators are software-based&lt;/li&gt;
&lt;li&gt;  A good example of a mobile device emulator is Google Android SDK. A good example of a mobile device simulator is Apple's iOS Simulator.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Emulators imitate the software and the hardware environments of the target mobile devices. (i.e. Running an authentic ARM architecture on an x86 environment.) Simulators, on the other hand, provide only software environment imitation and they use the host system's hardware resources such as processors, memory and network connectivity. (i.e. running iOS and Android directly on an x86 environment.)&lt;/p&gt;

&lt;p&gt;Android in that sense is an open platform and you can run Android emulators on any desktop operating system whether macOS or Windows; however things are more complicated if you are looking to download an iOS emulator. Emulating iOS hardware is not just limited by Apple's license agreements (e.g. Xcode on Windows is not directly possible), but also there are certain technical challenges toward iPhone emulators.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Appcircle can help you test your mobile application on your web browser by providing you a web-based, in-browser, iOS simulator, which is the closest you can get to an online iPhone emulator on Windows, macOS, Linux or any other desktop OS.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Appcircle offers &lt;a href="https://appcircle.io/emulator"&gt;various simulation options&lt;/a&gt; for the device, screen size and operating system versions for iOS and Android which gives you a broad range of selection to test your mobile applications. You don't even need to download any large emulator stacks, you can run and test your mobile apps in the cloud.&lt;/p&gt;

&lt;p&gt;Having access to a number of iPhone, iPad and Android mobile and tablet devices online lets you make sure your application will function as expected if you have a specific audience using a specific form factor and operating system combination.&lt;/p&gt;

&lt;p&gt;Mobile applications that are built with Appcircle's build module &lt;a href="https://appcircle.io/emulator"&gt;can be previewed on a device emulator or simulator instantly with a single click&lt;/a&gt;. You can test the native functionality of your applications without the need for using a real device.&lt;/p&gt;

&lt;p&gt;If you have an application that was built earlier, you can simply upload your compatible application binary file (built with x86 architecture on Android or the simulator binary for Xcode) to Appcircle's distribution module and preview the application on a mobile device emulator on a web browser for Android or on a mobile device simulator for iOS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/emulator"&gt;Click here for more information about the Appcircle emulator&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>HOW TO INTEGRATE FIREBASE TEST LAB TO THE MOBILE CI/CD PIPELINE FOR ANDROID</title>
      <dc:creator>Sophie @Appcircle</dc:creator>
      <pubDate>Wed, 08 Sep 2021 16:20:30 +0000</pubDate>
      <link>https://dev.to/appcircelio/how-to-integrate-firebase-test-lab-to-the-mobile-ci-cd-pipeline-for-android-48gf</link>
      <guid>https://dev.to/appcircelio/how-to-integrate-firebase-test-lab-to-the-mobile-ci-cd-pipeline-for-android-48gf</guid>
      <description>&lt;p&gt;&lt;a href="https://appcircle.io/blog/how-firebase-test-lab-ci-cd-android-apps/" rel="canonical"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Vxf7mKaR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/07/Using-Firebase-Test-Lab-for-Continuous-Testing-845x321.png.webp" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reading Time: 4 minutes&lt;/p&gt;

&lt;p&gt;Appcircle is a mobile CI/CD platform that provides a fully automated environment to manage mobile app CI, CD and CT (continuous testing).&lt;/p&gt;

&lt;p&gt;For continuous testing, you have a number of options with Appcircle and you can use Firebase Test Lab for multiple-device testing. In this article, we will be integrating Firebase Test Lab to your mobile CI/CD workflow in a few easy steps.&lt;/p&gt;

&lt;p&gt;Manage your mobile CI, CD and CT (continuous testing) with Appcircle&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/start"&gt;Start for Free&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting Up a Firebase Project and a Service Account
&lt;/h2&gt;

&lt;p&gt;To start with the &lt;a href="https://firebase.google.com/products/test-lab"&gt;Firebase Test Lab&lt;/a&gt;, you need to have an associated Firebase Project, which is created in the &lt;a href="https://console.firebase.google.com/"&gt;Firebase console&lt;/a&gt;. Go to the console, press the "Add Project" button and specify the project name and the other settings:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cr_wpjaN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-1.png.webp" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After your project is created, go to the &lt;a href="https://console.cloud.google.com/iam-admin/serviceaccounts/"&gt;Google Cloud Platform console&lt;/a&gt; to create a service account. Press the "Create Service Account" button and follow the prompts to create a service account with the Editor role:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-2.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vBX3Jbz8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-2.png" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the service account is created, click on the three dot menu next to the service account and press "Create Key".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-3.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1i1mFFfv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-3.png" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select the key format as "JSON" and download the created key. We will be using this key for Appcircle to be able to deploy apps to Firebase Test Lab.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-4.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7i6Wb_a7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-4.png" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As the final step, go to the &lt;a href="https://console.developers.google.com/apis/library"&gt;Google Developers Console API Library page&lt;/a&gt; and find and enable the following APIs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Google Cloud Testing API&lt;/li&gt;
&lt;li&gt;  Cloud Tool Results API&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-5.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f87y7z8M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-5.png" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Firebase Test Lab Authentication Configuration in Appcircle
&lt;/h2&gt;

&lt;p&gt;To start, go to the environment variables section and add the service account JSON key created in the previous step as a &lt;a href="https://docs.appcircle.io/environment-variables/managing-variables#create-environment-variable-groups-and-add-key-value-pairs"&gt;new environment variable&lt;/a&gt;. Take a note of the variable name, which will be necessary in the workflow configuration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-6.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hviX3CAJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-6.png.webp" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then &lt;a href="https://docs.appcircle.io/environment-variables/managing-variables#use-environment-variable-groups-in-builds"&gt;select the related environment variable group&lt;/a&gt; in the build configuration of the project that will be using Firebase Test Lab.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-7.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DLLkHpIo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-7.png.webp" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Build Workflow Configuration for Firebase Test Lab
&lt;/h2&gt;

&lt;p&gt;To utilize Firebase Test Lab in your builds, open the &lt;a href="https://docs.appcircle.io/workflows/why-to-use-workflows"&gt;workflow editor&lt;/a&gt; and add the "Firebase Test Lab for Android" step after the build or sign steps. If you want to run instrumentation tests, also add the "Android Build for UI Testing" step before the Firebase Test Lab step.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-8.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ngMrxhET--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-8.png" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to use the UI Test Build output or the Signed Build output in Firebase Test Lab, add any of these steps before the Firebase Test Lab step and take a note of the output path of these steps. You will need this environment variable for testing configuration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-9.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AkoHbyqz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-9.png.webp" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-10.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--um8y-i52--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-10.png.webp" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before the build, the last task is to configure the Firebase Test Lab for Android step:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Project ID: Enter the name of the Firebase project created&lt;/li&gt;
&lt;li&gt;  Key File: Enter the name of the key file uploaded as an environment variable ($ is required before the key name).&lt;/li&gt;
&lt;li&gt;  Test Type: Select a test type. robo and instrumentation are supported.&lt;/li&gt;
&lt;li&gt;  Bucket Name: Enter a bucket name to store the test results in a Google Cloud Storage bucket.&lt;/li&gt;
&lt;li&gt;  APK Path: The default value is the APK produced by the "Android Build" step. You can specify a different environment variable to use the APK files produced in other steps.&lt;/li&gt;
&lt;li&gt;  Test APK Path: Specify the environment variable to the path of the APK build for UI testing&lt;/li&gt;
&lt;li&gt;  Extra Arguments: For further configuration of the test run. Please refer to the &lt;a href="https://cloud.google.com/sdk/gcloud/reference/firebase/test/android/run"&gt;Google Cloud CLI Documentation&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once everything is set up, press save to save your step configuration. Then you can configure and run your build just like any other app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-11.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e2goRLAZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-11.png.webp" alt="" width="800" height="556"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Viewing the Firebase Test Lab Step Results
&lt;/h2&gt;

&lt;p&gt;Once your build is done, you can view the results of the Firebase Test Lab step in the build logs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-12.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--s4iS6_rH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-12.png" alt="" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The full details of the tests are accessible in the &lt;a href="https://console.firebase.google.com/"&gt;Firebase console&lt;/a&gt; and in your Google Cloud Storage bucket for analysis.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-13.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NWoa-SOr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/07/Firebase-Test-Lab-Appcircle-13.png" alt="" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With Appcircle, you can automate the full lifecycle of your mobile app with continuous integration, continuous delivery and continuous testing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/start"&gt;Start Using Appcircle Now&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>GUIDE TO AUTOMATED MOBILE CI/CD FOR REACT NATIVE WITH APPCIRCLE</title>
      <dc:creator>Sophie @Appcircle</dc:creator>
      <pubDate>Wed, 08 Sep 2021 15:25:02 +0000</pubDate>
      <link>https://dev.to/appcircelio/guide-to-automated-mobile-ci-cd-for-react-native-with-appcircle-47pc</link>
      <guid>https://dev.to/appcircelio/guide-to-automated-mobile-ci-cd-for-react-native-with-appcircle-47pc</guid>
      <description>&lt;p&gt;&lt;a href="https://appcircle.io/blog/guide-to-automated-mobile-ci-cd-for-react-native-appcircle/" rel="canonical"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---7FouyBc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/06/Building-React-Native-Apps-with-Appcircle-845x321.png.webp" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reading Time: 8 minutes&lt;/p&gt;

&lt;p&gt;Appcircle is a mobile CI/CD platform that provides a fully automated environment to manage mobile app lifecycle end-to-end, transforming DevOps to NoOps with the best practices.&lt;/p&gt;

&lt;p&gt;Appcircle supports the full lifecycle of React Native apps for all CI/CD needs. In this article, we will be building and deploying a React Native app with Appcircle with no need for a Mac or any third-party tools.&lt;/p&gt;

&lt;p&gt;Build, distribute and test your React Native project quickly with Appcircle&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/start"&gt;Start for Free&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first step is getting started with Appcircle. Just go to &lt;a href="https://appcircle.io/start"&gt;https://appcircle.io/start&lt;/a&gt; and register. (Regardless of the login provider you select, you can connect any other provider for the repository connections.)&lt;/p&gt;

&lt;h1&gt;
  
  
  Creating a Build Profile for a React Native Project
&lt;/h1&gt;

&lt;p&gt;In Appcircle, a build profile contains the build workflows and the configuration of an app per target platform. (i.e. Separate for iOS and Android).&lt;/p&gt;

&lt;p&gt;To create your first build profile, click on the orange "Add New" button on top right of the screen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/06/Add-New-Flutter-App.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VYBvD94z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/06/Add-New-Flutter-App.jpg.webp" alt="" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter a name for your build profile and select the target operating system (iOS or Android) and the target platform as React Native. If you have two different targets in your project for iOS and Android, you need to create two separate profiles. This allows you to manage separate build workflows for different operating systems.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/06/New-React-Native-Build-Profile.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZIpBdohI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/06/New-React-Native-Build-Profile.jpg.webp" alt="" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will see your build profile once it has been created. Click on the build profile to connect to a repository that contains a valid React Native app.&lt;/p&gt;

&lt;p&gt;You can connect GitHub, Bitbucket and GitLab repositories to your build profile through oAuth apps. Alternatively, You can connect private repositories through SSH and public repositories directly on GitHub, Bitbucket, GitLab and other compatible git providers.&lt;/p&gt;

&lt;p&gt;You can authorize Appcircle to connect to your cloud repository provider account. This will allow you to use auto-build your project with hooks. If you authorize Appcircle to access your repositories, you can select the repository that you want to connect. If you use a private repository using an SSH Key, you need to have an SSH key pair ready and enter your private key to Appcircle so Appcircle can access your repository.&lt;/p&gt;

&lt;p&gt;Appcircle will then pull your branches, commits, and other information from your repository.&lt;/p&gt;

&lt;p&gt;To test drive the Appcircle platform for React Native app builds, you can also use our sample React Native App by forking it or adding it as a public repository: &lt;a href="https://github.com/appcircleio/appcircle-sample-react-native"&gt;https://github.com/appcircleio/appcircle-sample-react-native&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/06/Connect-Flutter-Repository.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4tBIb1aD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/06/Connect-Flutter-Repository.jpg.webp" alt="" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  React Native Application Build Configuration for iOS and Android
&lt;/h1&gt;

&lt;p&gt;The build configuration has different flows for iOS and Android and the projects are configured on a branch basis. You can have different configurations for different branches and you can build any of your commits (assuming that they are compatible with the current configuration).&lt;/p&gt;

&lt;h2&gt;
  
  
  iOS Build Configuration
&lt;/h2&gt;

&lt;p&gt;Click on the gear icon on the top right to access the build configuration. The first step will be entering the project details. You can enter these details manually or click on the Fetch button to retrieve them from your project to detect the correct path for the Xcode project automatically.&lt;/p&gt;

&lt;p&gt;Your iOS project needs to have an Xcode project or an Xcode workspace and a shared scheme to complete the build configuration successfully. Appcircle can fetch these workspaces and shared schemes from your branch automatically.&lt;/p&gt;

&lt;p&gt;You can also select a specific Xcode version if you have certain dependencies or if you want to test your build on a specific version.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/06/React-Native-iOS-Build-Configuration.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YpnGR4t7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/06/React-Native-iOS-Build-Configuration.jpg.webp" alt="" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Android Build Configuration
&lt;/h2&gt;

&lt;p&gt;Click on the gear icon on the top right to access the build configuration. The first step will be entering the project details. You can enter these details manually or click on the Fetch button to retrieve them from your project to get the available modules and the variants in your project. You can also select the output type (APK or Splik APK as AAB).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/06/React-Native-Android-Build-Configuration.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--s6NdAIl3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/06/React-Native-Android-Build-Configuration.jpg.webp" alt="" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Build Triggers for Auto Builds
&lt;/h2&gt;

&lt;p&gt;The next section, Triggers, is common for both iOS and Android.&lt;/p&gt;

&lt;p&gt;Appcircle allows you to trigger builds manually or automatically using build triggers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  On push: Whenever code is pushed to a configured branch, the build is triggered.&lt;/li&gt;
&lt;li&gt;  On a tagged push: Whenever a tagged commit is pushed, the build is triggered for that commit. Commits without any tags are ignored.&lt;/li&gt;
&lt;li&gt;  On push with selective tags: Whenever a commit includes one of typed in tags, the build is triggered. You can specify tags with Unix shell-style wildcards to trigger builds.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/06/React-Native-Build-Triggers.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UYdPhvl_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/06/React-Native-Build-Triggers.png.webp" alt="" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Signing Configuration
&lt;/h2&gt;

&lt;p&gt;Appcircle allows you to sign your app for deployment.&lt;/p&gt;

&lt;p&gt;Appcircle is unique that it doesn't require you to generate signing identities with a third-party tool. You can simply create your iOS certificates/profiles and Android keystores within the platform and use them in any project in a centralized manner.&lt;/p&gt;

&lt;p&gt;If you have readily available signing identities, you can also upload them once to the Appcircle Signing Identities module and use them centrally in any project. (No need for separate uploads of the same certificate for separate projects.)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  For more information on iOS certificate and provisioning profile management, please refer to the following document: &lt;a href="https://docs.appcircle.io/signing-identities/ios-certificates-and-provisioning-profiles"&gt;https://docs.appcircle.io/signing-identities/ios-certificates-and-provisioning-profiles&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  For more information on Android keystore management, please refer to the following document: &lt;a href="https://docs.appcircle.io/signing-identities/android-keystores"&gt;https://docs.appcircle.io/signing-identities/android-keystores&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For signing iOS apps, press add, select the bundle ID from the first dropdown and then select a compatible provisioning profile (added from the signing identities module) from the second dropdown.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/06/React-Native-iOS-App-Signing.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NG_C4WuY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/06/React-Native-iOS-App-Signing.jpg.webp" alt="" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For signing Android apps, simply select a keystore (added from the signing identities module).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/06/React-Native-Android-App-Signing.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZvRXdlgc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/06/React-Native-Android-App-Signing.jpg.webp" alt="" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Distribution (Deployment) Configuration
&lt;/h2&gt;

&lt;p&gt;Appcircle is an end-to-end mobile CI/CD tool and enables you to build and deploy your apps to mobile devices with full automation.&lt;/p&gt;

&lt;p&gt;Distribution is a critical step when it comes to test your application on real devices. You may need multiple testers and test groups to download, install, and test your application and make sure it works on different devices and operating system versions.&lt;/p&gt;

&lt;p&gt;Distribution configuration allows you to set up which testing groups will receive your application after the build is complete. You can manually send your binary file to testers or Appcircle can do this for you.&lt;/p&gt;

&lt;p&gt;For more information on how to set up testing groups and deploy your app after the build, please refer to the following document: &lt;a href="https://docs.appcircle.io/distribute/create-or-select-a-distribution-profile"&gt;https://docs.appcircle.io/distribute/create-or-select-a-distribution-profile&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can select a previously created distribution profile or create a new one in this window. Use the top input box to enter a name for the new distribution profile you want to create. Press enter or click on the green + icon on the right to create the distribution profile.&lt;/p&gt;

&lt;p&gt;Finally, check Auto Distribute if you want your build to be sent to the distribution profile automatically. If the target profile has autosend configured, your testers will receive the latest version automatically.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/06/React-Native-Distribution-Configuration.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sVJkYGf0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/06/React-Native-Distribution-Configuration.jpg.webp" alt="" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are three main automation points in Appcircle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Autobuild: builds new pushes automatically&lt;/li&gt;
&lt;li&gt;  Autodistribute: deploys new binaries automatically to the Appcircle Distribute module, where you can use it with the online mobile device simulator/emulator or share with the testers.&lt;/li&gt;
&lt;li&gt;  Autosend: Sends new versions of the apps automatically to the selected testing groups.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Environment Variables Configuration
&lt;/h2&gt;

&lt;p&gt;The final tab is to add environment variables to the build. For advanced use cases, you can define variables and secrets to be incorporated during the build in the Environment Variables submodule so that you don't need to store certain keys and configurations within the repository.&lt;/p&gt;

&lt;h1&gt;
  
  
  Workflows for Advanced Build Configuration
&lt;/h1&gt;

&lt;p&gt;Appcircle is a simple, but flexible platform. You can make basic changes in a simple user interface with the build configuration and use the workflows for advanced use cases. A workflow is a ladder of steps taken to build your applications. Each step has a different purpose and the workflow can be customized by modifying step parameters and inputs, running custom scripts or re-ordering steps. Workflows allow you to have complete control on your build process and enhance it with third-party services and features.&lt;/p&gt;

&lt;p&gt;Also note that the workflows are set up by default, so you don't need to set them up for builds.&lt;/p&gt;

&lt;p&gt;For more information on the workflows, you can refer to the following document: &lt;a href="https://docs.appcircle.io/workflows/why-to-use-workflows"&gt;https://docs.appcircle.io/workflows/why-to-use-workflows&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You have a wide variety of options with workflows. For instance, if you want to run a specific npm command before or after the build, you can add a custom script step at any point in the workflow. If you want to deploy your app with a third-party service instead of Appcircle, you can configure it with the workflows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/06/React-Native-Build-Workflow-Appcircle.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mNFHq8Us--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/06/React-Native-Build-Workflow-Appcircle.png" alt="" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Starting a Build and After a Build
&lt;/h1&gt;

&lt;p&gt;To start your first build, just press the start build button -- the play button under the actions columns (or push some code to your repo if autobuild is configured.)&lt;/p&gt;

&lt;p&gt;You will see the build progress and the log in realtime.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/06/React-Native-Build-Progress.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KLCtSiT8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/06/React-Native-Build-Progress.png" alt="" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once your build is complete, you can now download the binary file or deploy it to distribute module manually (if autodistribute is enabled, it will be sent automatically after a successful build).&lt;/p&gt;

&lt;p&gt;You can also view or download your build logs anytime.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/06/React-Native-Build-Artifacts-1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zbRM-yTf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/06/React-Native-Build-Artifacts-1.png" alt="" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Testing the React Native App
&lt;/h1&gt;

&lt;p&gt;With Appcircle, you have two options to test your app. You can use the standard unit testing workflows by adding the related Android and iOS test steps or by running custom scripts or as for the second option, you can use the Appcircle in-browser mobile device emulator/simulator to run your app for manual testing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploying Your App to the In-Browser Emulator
&lt;/h2&gt;

&lt;p&gt;If you set a distribution profile in the distribution configuration, you can deploy your app and share it with the testers or preview them right in your browser in the online Android emulator or the iOS Simulator.&lt;/p&gt;

&lt;p&gt;In the Distribute module, click on the selected profile, select your OS on the top left and then select a version. To run that version in the online emulator, just press the "Preview on Device" button on the top right. (Your app must support the x86 architecture for this feature to work.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/06/React-Native-Emulator.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dPORoUtJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/06/React-Native-Emulator.png.webp" alt="" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With Appcircle, you can manage the CI/CD of your React Native apps for iOS and Android for free.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/start"&gt;Start Using Appcircle Now&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>GUIDE TO FLUTTER WEB CI CD, WITH APPCIRCLE</title>
      <dc:creator>Sophie @Appcircle</dc:creator>
      <pubDate>Tue, 24 Aug 2021 16:33:07 +0000</pubDate>
      <link>https://dev.to/appcircelio/guide-to-flutter-web-ci-cd-with-appcircle-15ac</link>
      <guid>https://dev.to/appcircelio/guide-to-flutter-web-ci-cd-with-appcircle-15ac</guid>
      <description>&lt;h1&gt;
  
  
  &lt;a href="https://appcircle.io/blog/guide-to-building-flutter-web-apps-with-appcircle/" rel="canonical"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qyeHki8d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/10/Building-Flutter-Web-Apps-With-Appcircle-845x321.png.webp" width="800" height="304"&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Reading Time: 2 minutes&lt;/p&gt;

&lt;p&gt;Appcircle is a mobile CI/CD platform that provides a fully automated environment to manage mobile app lifecycle end-to-end, transforming DevOps to NoOps with the best practices and the Flutter framework is an open-source user interface toolkit created by Google.&lt;/p&gt;

&lt;p&gt;Flutter app development is done with the Dart language and you can develop iOS, Android, and web apps with Flutter.&lt;/p&gt;

&lt;p&gt;Appcircle supports the full lifecycle of Flutter apps for all Flutter CI/CD needs. In this article, we will be building a Flutter web app with Appcircle. &lt;a href="https://appcircle.io/blog/guide-to-automated-mobile-ci-cd-for-flutter-projects-with-appcircle/"&gt;For a full overview on mobile CI/CD with Flutter and Appcircle, please refer to this post.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Build Flutter mobile and web apps with Appcircle&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/start"&gt;Start for Free&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If your app supports Flutter Web, you can also build the Flutter web app along with the &lt;a href="https://appcircle.io/blog/guide-to-automated-mobile-ci-cd-for-flutter-projects-with-appcircle/"&gt;Flutter iOS or Android build&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Flutter Web Build is available as a workflow step in the workflow marketplace. Just configure your project as you would for iOS or Android and add the Flutter Build for Web step anywhere after the Flutter Install step to include a web build in the workflow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/10/Flutter-Web-1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eJ2bclZZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/10/Flutter-Web-1.png.webp" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to build your Flutter project only for web, you can &lt;a href="https://appcircle.io/blog/guide-to-automated-mobile-ci-cd-for-flutter-projects-with-appcircle/#creating-a-build-profile-for-a-flutter-project"&gt;add a Flutter Android project in the standard way&lt;/a&gt;, save your project configuration once, and then remove all the Android-related steps from the build workflow.&lt;/p&gt;

&lt;p&gt;In this case, the workflow may look like the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/10/Flutter-Web-2.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iED4WoC5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/10/Flutter-Web-2.png.webp" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to deploy your web output automatically, you can use a &lt;a href="https://github.com/appcircleio/appcircle-custom-script-component/"&gt;Custom Script&lt;/a&gt; or &lt;a href="https://appcircle.io/blog/how-to-deploy-mobile-app-build-artifacts-automatically-to-amazon-s3-with-appcircle/"&gt;upload it to Amazon S3&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Once your build is configured, it can be built &lt;a href="https://appcircle.io/blog/guide-to-automated-mobile-ci-cd-for-flutter-projects-with-appcircle/#starting-a-build-and-after-a-build"&gt;manually or automatically in the same way with other apps&lt;/a&gt;. Your app will be built in the beta channel to enable web builds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/10/Flutter-Web-3.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--T9WEsXdf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/10/Flutter-Web-3.png" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After a build, you can download the web build output manually &lt;a href="https://appcircle.io/blog/guide-to-automated-mobile-ci-cd-for-flutter-projects-with-appcircle/#starting-a-build-and-after-a-build"&gt;from the build artifact list&lt;/a&gt; as the &lt;code&gt;web.zip&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/wp-content/uploads/2020/10/Flutter-Web-4.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mUGnqFPq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://appcircle.io/wp-content/uploads/2020/10/Flutter-Web-4.png.webp" alt="" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With Appcircle, you can manage the CI/CD of your Flutter web, iOS and Android apps for free.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appcircle.io/start"&gt;Start Using Appcircle Now&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
