React-native-future-of-app-development

6 REASONS WHY REACT NATIVE CAN BE THE FUTURE OF MOBILE APP DEVELOPMENT

Most of us have witnessed the expansion of mobile apps beyond comprehension. The demand for better, faster and more innovative apps has been on the rise.
However, it is hard to meet all these requirements when high performing apps (usually native apps) take so much longer to develop. On the other hand, faster deployment processes, associated with hybrid apps have to compromise on performance, to a certain extent.

Therefore, you will always see programmers longing for better languages and development tools that support high-quality hybrid apps development and frameworks. One of such languages that have rapidly revolutionized the world of mobile app development is Facebook and Instagram’s React Native.

 JavaScript library

It is a JavaScript library that you use to build the user interface and develop mobile apps that work as smoothly as native apps. You are not required to develop separately for Android and IOS, as you can use the same code for both platforms while saving time and money. It even allows you to reuse the code throughout the web and mobile platforms.

Let’s look at six reasons why React Native can be the future of mobile app development.

ios vs android
divider

Get Native Performance At Hybrid’s Speed

React Native uses cross-platform development concept and code-reuse functionality that allows you to come up with a standard code that works on both the iOS app development and Android app development.

React Native doesn’t make your app lack in performance where native code is required. It provides you both, the Native performance with faster deployment cycles.

Most of the hybrid apps, when built using JavaScript, allows you to use native APIs, instead of the more frequent use of JavaScript and HTML inside a WebView. Although, while using React Native, the JavaScript elements perform as native platform widgets, which makes your app function just like a native app without WebView.

Hence, if you want to add the Google Maps component into your app, you should use a native module as a plugin.

divider

Easier Learning Curve

React Native mobile app development is based on language fundamentals, which makes it highly readable and easy to learn. However, if you only have started working with JavaScript then React Native is the right place to start. It has the potential to be a great learning tool to master various range of components, such as filters and maps.

Whereas, if you are an experienced developer who has been in the market for a while and build up expertise in standard features, then React Native may not give you space to reinvent the wheel. However, this allows you to save time and money on the development process.

Must Read – Five common mistakes to avoid in mobile app development.

Learn Once And Write Everywhere

Hybrid app development allows you to write your code once and use it again wherever you like. But this has more negative connotations attached to it than positive. As it results in subpar performance on both Android and IOS. That said, while using React Native, you see the language acknowledging the difference between the two operating systems. It allows you to do things differently and efficiently.

A React Native app developer works by using JavaScript files in the app and implementing them locally. By using the famous library of React, mobile app developers can integrate new features as a plugin. Without having to manipulate the complete code.

Dynamic Experience For Developers

React Native developers often have an overall dynamic and positive experience, with a great development environment. They can also make and apply modifications in the app while it is live and running. Eliminating the need to restart.

With React Native the developers can use flexbox to generate app layouts. Which allows them to use a similar layout for IOS, Android and the web. Additionally, developers can even embed Chrome developer tools with their React native using a desktop chrome browser. Which gives them easy access to its debugger and profiling tools.

While working on an existing app, you can even incorporate React Native components, regardless of the current code.

Prompt Live Updates

As we know, React Native uses JavaScript, and it enables the developers to directly release the updates. You don’t need to go through the app store. Developers can even find some handy tools that help them launch the updates instantly. React Native makes the process simpler and more streamlined.

Better UI Development

With React Native, the user interface is deployed using CSS-like stylesheets. It becomes effortless to mark the components margins. Boarders, height, and weight, as well as the fonts and colors, using these sheets.

Where most JavaScript frameworks, like Angular JS and MeteorJS, provide hybrid app development. The main focus of React Native is on the UI for mobile devices. It works more as a JavaScript library than a framework.

To make a more informed decision about your next mobile app development project, click here to find out more about – React Native vs. Xamarin vs. Flutter.

divider

General FAQs

What is React Native?

React Native is an open-source mobile application framework, created by Facebook. Developers across the world use React Native to develop apps for IOS. Android, Web, and UWP by using the native platform capabilities of React Native. It combines the best parts of native development and uses the JavaScript library for building user interfaces.

React Native works by using the JavaScript code to deliver the native experience. It manages to offer the UI views in IOS and a native view in Android in the runtime.

Which is better to develop a hybrid application for my startup – Ionic or React Native?”

Ionic app development offers the complete SDK to develop hybrid apps. Whereas the goal with React Native app development is to follow the ‘learn once and write anywhere’ theory. React Native gives you a seamless native experience, as it adopts the native behavior and other standards of the platform. However, when it comes to choosing between Ionic and React Native for your app development project. It comes down to your specific requirements to make the best decision.

Will React Native replace swift?

Swift is a general-purpose, multi-paradigm, compiled programming language developed by Apple Inc. Swift works with Apple’s Cocoa and Cocoa Touch frameworks and the vast body of existing Objective-C. Code written for Apple products. Whereas React Native, unlike Swift code, doesn’t compile your app. You reload it like you would when working on a website in a web browser. Moreover, being a cross-platform tool, React Native apps function on IOS and Android devices. However, the development world is shifting towards hybrid development, and cross-platform app development may replace native in the future.

The developing world is swiftly switching to cross-platform apps. And they are going to become one of the most used technologies in the coming time. React Native will inevitably lead the way in the future of mobile app development. With several benefits like shorter development process. Native performance, and more. Furthermore, while React Native help build apps with very high quality, it also makes designing apps a breeze. That said and looking at all the points we talked about above. You can be sure to see React Native in the future of mobile app development. And make sure to consider it for your next app development project.

preview_1564414582

7-Step Approach to Migrating your App to Cloud Seamlessly

Cloud migration is the process of moving digital assets such as applications, IT resources, data and workloads to the cloud infrastructure. A migration can also involve moving some assets or all the assets from one cloud to another cloud.

However, with the constant fall of costs for the hybrid cloud infrastructure and cloud computing, most organizations have decided to migrate the apps to the cloud.

In this article, we will discuss the tips for an app migration.

Steps for App migration

1. Understand your applications

Before starting with the migration process, the first thing you need to do is to get a complete understanding of your app. The major things to focus on include understanding your app platform, application state which represents those places where information is stored in apps, the quantity of data to be moved, storage required, network appliances, the security and compliance.

2. Choose a strategy for cloud migration

With the help of a time quadrant you could get to know what you can do with the system’s components. However, the right migration strategy could be applied by understanding the app’s category. There are 6 cloud migration strategies to choose from, including rehost, replatform, refactor, retirement, repurchase and retain.

Along with this, the most essential aspect of choosing a migration strategy is using a dependency mapping tool to check the dependencies between the applications.

3. Understand migration success

This step is concerned with measuring the cloud migration performance for achieving the business objectives. There are different types of KPIs to be measured while moving the data to the cloud such as:

  • The ratio between total request and error request
  • The peak response time
  • Network Latency and Memory use
  • Monthly Billing and Number of data exposure
  • Frequency of potentially malicious and unusual user activity

4. Select a cloud environment

Before choosing a cloud environment, you must understand the cloud model. You could either choose between the hybrid model, public cloud, or private cloud. Once you have selected the cloud environment, you are required to choose a cloud provider.

The major cloud providers are Microsoft Azure offering an SLA of 99.95%, Amazon whose web services have extensive technical documentation and Google Cloud Platform that boosts high productivity.

5. Automate Migration

The next step after choosing a cloud environment is to automate the migration. The automation tools are very important for integrating the success of migration projects. IaC tools are one of the automation tools that help to replace manual infrastructure management by using high-level coding language.

The basic IaC tools are Google Cloud Deployment Manager, Terraform, Azure Resource Manager and AWS Cloud Formation.

With this, the developers can automate test-driven development (TDD), continuous delivery (CD) and continuous integration (CI).

6. Conduct a pilot migration

A pilot migration is very essential to check up on the efficiency of the migration strategy. With the pilot migration, we could easily know about the latency and performance of the cloud and take the necessary steps if required.

7. Migrate

This is the last and the most important step that requires you to move your data or users to the cloud after you have made a successful strategy.

Conclusion

Migrating apps to the cloud is quite a challenging process. If you want to successfully migrate your apps to the cloud, you should follow the above-given steps for a successful and effective app migration process.

post another img

How To Incorporate Blockchain Into Your Website or App

There is a lot of discussion about blockchain and blockchain app development in recent years. Their popularity is growing rapidly and almost every industry be it media, manufacturing, telecommunication and even the government sector is showing an interest in blockchain application development. Blockchain is a tech breakthrough with unlimited potential in the future.

What is blockchain?

Simply put blockchain is a decentralized and distributed ledger that is immutable and it facilitates the process of recording transactions and tracking assets. Assets can be tangible or intangible. Anything of value can be tracked as well as traded within a blockchain network. It can significantly reduce risks and costs.

Information is critical for business. Blockchain can deliver information that is fast and accurate. It provides transparent, shared, and immediate information on an immutable ledger which can be accessed only by persons who have permission. Blockchain networks can track payments, production, orders, and a lot more. All the details of the transactions can be viewed by members hence giving greater confidence to the users.

Benefits of blockchain

1. Security

Your data is critical and sensitive. Blockchain technology is definitely more secure than other record-keeping systems. Only agreed transactions are recorded. The transaction that’s approved is encrypted and linked to the prior transaction. The information is stored in a network of computers instead of a single server thereby making it very difficult for hackers to steal or compromise data. By anonymizing personal data and user permissions to restrict access privacy can be maintained.

2. Transparency

Since blockchain uses a distributed ledger, transactions and data are recorded identically in all the locations. This makes the transaction histories much more transparent as all the network participants share the same documentation as opposed to individual copies. The documents can be updated only through consensus as everyone should agree on them. Transactions are immutability recorded and are date and time-stamped. Thus data on a blockchain is much more accurate, consistent, and transparent and is available only to those participants who have permission access. Members have the ability to view the entire history of a transaction which basically eliminates any opportunity for fraud.

3. Traceability

When exchanges of goods are recorded on a blockchain, you get a trail that shows where an asset has come from and every step of its journey. Using this it is easy to trace an item back to its origin, and this can be used to prevent fraud and counterfeiting. It’s also possible to share data about provenance with the customers directly. Traceability data is quite useful to find out any weaknesses in any supply chain. Blockchain can also help verify the authenticity of assets and prevent any fraud from taking place.

4. Efficiency and speed

Traditional trading is a cumbersome and time-consuming process with a lot of paperwork. Transactions can be completed faster and more efficiently if they are automated with blockchain. Since a single digital ledger keeps all the records that are shared among all the participants, there is no need to reconcile multiple ledgers. Since the information is shared by all there is no need for intermediaries also. This clearing and settlement can be much faster.

5. Smart contracts

On the blockchain, transactions can be automated with smart contracts. A smart contract is an agreement in the form of a computer program that is executed automatically once certain programmed conditions are met. This enables parties to enter into an agreement with reduced dependence on middlemen. A smart contract helps reduce costs, is more secure and transparent. It saves time as it takes place simultaneously for all the participating parties once the necessary criteria are satisfied.

6. Reduced costs

As shown in the previous points, the necessity of third parties or middlemen are greatly reduced. No guarantees are necessary. You will have to just trust the data on the blockchain. There is no need to review a lot of documentation also. Implementing blockchain will bring down your costs significantly.

Industries where blockchain can be applied

Blockchain can be practically applied to any industry be it banking, healthcare, education, e-commerce, retail, media, entertainment among others. No matter what your business is, incorporating blockchain on your app or website is going to enhance the quality of your service and improve the confidentiality and integrity of your data.

overview-new

Developing Mobile Web Applications: When, Why, and How

There are 6.8 billion people on the planet, 5.1 billion of whom own a cell phone. And today, an ever-growing percentage of these devices are smartphones. According to a recent Pew Research Center Study, the number of users accessing the Internet on their smartphones has more than doubled in the past 5 years, as has the number of users downloading and using mobile apps. Of those who use the Internet or email on their phones, more than a third go online primarily through their handheld devices.

Indeed, mobile computing is becoming increasingly ubiquitous… and it’s awesome.

Except, of course, when it’s not.

As a mobile device user, few things are as frustrating and difficult to fat-finger-navigate as a poorly designed mobile web app, or even a native app.

And as a mobile app developer, few things can be as intensely irritating as striving to support as wide a range of mobile clients as possible, each of which has its own frustrating set of idiosyncrasies. Whether you choose to develop a mobile web, native, or hybrid app, the quest to support multiple mobile browsers, more exotic devices, and coming to grips with various platforms can be quite a gut wrenching experience indeed.

This mobile web app development tutorial seeks to help you navigate different browsers and platforms.

As a mobile device user, few things are as frustrating and difficult to fat-finger-navigate as a poorly designed mobile web or native app. And as a mobile app developer, few things can be as intensely irritating as striving to support as wide a range of mobile clients as possible, each of which has its own frustrating set of idiosyncrasies.

Of course, not every developer today needs to worry about supporting mobile clients. But the increasingly omnipresent nature of mobile devices and applications strongly suggests that those who don’t need to support mobile clients today will more than likely need to do so in the not-too-distant future. So if you’re not already thinking about mobile app development, you probably should be.

Mobile Web App vs. Native App vs. Hybrid App

As is true with most technology selections, there’s no one-size-fits-all answer when it comes to the type of mobile app to develop. There are numerous web app best practices to consider, not all of which are technical. Who is your target audience? Are they more likely to prefer a mobile web or a native app? What’s the difference between native and hybrid apps? What development resources do you have and which mobile technologies are they most familiar with? What is the licensing and sales model that you’re envisioning for your product?

Generally speaking (although there are always exceptions). The mobile web app route is faster and cheaper than the native mobile app route. Especially when the objective is to support a wide range of devices. Conversely, there may be capabilities native to the mobile device (such as the movement sensor and so on). That are essential to your app, but which are only accessible via a native app. (which would therefore make the mobile web app choice a non-starter for you).

And beyond the old web apps vs. native apps question. A hybrid mobile app may be the right answer for you, depending on your requirements and resource constraints. Hybrid apps, like native apps, run on the device itself (as opposed to inside a browser). But are written with web technologies (HTML5, CSS and JavaScript) and typically underpinned by a hybrid app framework. More specifically, hybrid apps run inside a native container. And leverage the device’s browser engine (but not the browser) to render the HTML and process the JavaScript locally. A web-to-native abstraction layer enables access to device capabilities that are not accessible in mobile web applications. Such as the accelerometer, camera, and local storage.

But whatever choice you make – whether it be a mobile web app. A native or hybrid app – be careful to adequately research and confirm your assumptions. As an example, for the purposes of this mobile web app development tutorial. You may have decided to develop a native mobile app for e-commerce to sell your products. But, according to Hubspot, 73% of smartphone users say they use the mobile web more than native apps to do their shopping… So, in this case, you may have bet on the wrong horse. But whatever choice you make – whether it be mobile web, native or hybrid app –. Be careful to adequately research and confirm your assumptions.

And then, of course, there are the practical considerations of time and budget. As one of my favorite sayings goes, “faster, better, cheaper… pick any two”. While time-to-market and cost constraints are of paramount importance in web application development. It’s crucial not to compromise too heavily on quality in the process. It’s quite difficult to recover the confidence of a user who has had a bad first experience.

Indeed, mobile web, native, and hybrid apps are all radically different beasts. Each with their own unique set of benefits and challenges. This mobile web development tutorial specifically focuses on methodologies and tools to employ, and pitfalls to avoid. In the development of highly functional, intuitive, and easy-to-use mobile web applications.

A critical best practice in determining how to develop a mobile web application is to know your customer.

Mobile Web App Development Requires Detailed Planning

Identifying your (or your customer’s) requirements is one of the most essential best practices in app development, mobile or otherwise. Carefully research the targeted capabilities to determine if they are achievable in your mobile web app. It’s quite frustrating, and highly unproductive, to realize that one or more of your essential client functions aren’t supported, when you’ve already invested the time and resources to design the web-based interface and supporting infrastructure.

Another common gotcha for mobile web app developer newbies is to assume that web-based code for a desktop browser will work “as is” in a mobile browser. Not. There most definitely are differences and, if you’re not aware of them, they can definitely bite you. The HTML5 <video> tag’s autoplay functionality, for example, doesn’t work on mobile browsers. Similarly, the CSS transition and opacity properties are not supported (or at least are not consistently supported) in most mobile browsers nowadays. You will also have problems with some web API methods on a mobile platform, such as the SoundCloud music streaming API that requires Adobe Flash which is not supported on most mobile devices.A common gotcha for mobile web app developer newbies is to ass-u-me that web-based code for a desktop browser will work “as is” in a mobile browser.

A particularly complicating factor in mobile web application development is that the lifespan of mobile devices tends to be much shorter than that of desktop displays (the average lifespan of a cell phone in the U.S. is around 21 months). These shorter device life spans, accompanied by constant releases of new mobile devices and technologies, yield an ever-changing landscape of to-be-targeted devices. While working in a browser does somewhat alleviate this issue by shielding you from a number of device-specific issues, you will still need to design a browser-based view that supports many different screen resolutions (as well as adjusting appropriately for landscape and portrait orientations).

Thought needs to be given as well to supporting Apple’s Retina Displays (liquid crystal displays that have a pixel density high enough that the human eye is unable to discern individual pixels at a typical viewing distance). Several Apple products – including the iPhone, iPod Touch, iPad, MacBook Pro, iPad Mini, and iPad Air – offer Retina displays. For a mobile web app in particular, it’s important to be aware that a Retina display makes low resolution images (which are typically served to mobile devices) look fuzzy and pixelation can occur. The best app development solution in these cases is to have the server recognize that the request is coming from a Retina device and to then provide an alternate higher resolution image to the client.

If you want to use some of the cool HTML5 stuff, remember to verify in advance that the functionality you’re looking for is supported across the device landscape that your customers are likely to be using. For example, in iOS 6 and above, there is no support for the navigator getUserMedia functionality since the camera is only accessible through native apps. Two great resources for checking what’s supported on specific devices and browsers are caniuse.com and html5test.com.Remember to verify in advance that the functionality you’re looking for is supported across the device landscape that your customers are likely to be using.

CSS3 media queries can also help you provide customized content for each device. Here’s some example code for capturing different device characteristics, such as pixel density, screen resolution, and orientation:

/* For lower than 700px resolutions */
@media (max-width: 700px) { ... }
/* Same as last but with the device orientation on land scape */
@media (max-width: 700px) and (orientation: landscape) { ... }
/* Including width and orientation you can add a media type clause,
   in this case 'tv' */
@media tv and (min-width: 700px) and (orientation: landscape) { ... }
/* for low resolution display with background-image */
.image {
    background-image: url(/path/to/my/image.png);
    background-size: 200px 300px;
    height: 300px;
    width: 200px;
}
/* for high resolution (Retina) display with background-image */
@media only screen and (min--moz-device-pixel-ratio: 2),
only screen and (-o-min-device-pixel-ratio: 2/1),
only screen and (-webkit-min-device-pixel-ratio: 2),
only screen and (min-device-pixel-ratio: 2) {
    -repeat;
        background-size: 200px 400px;
    /* rest of your styles... */
    }
}

Optimizing Your Mobile Web Application for Performance

“OMG, this thing is sooooo slow!” As a mobile web app developer, those are probably the very last words you ever want to hear from one of your users. You must therefore think carefully about how to reduce and optimize each byte and server transfer to reduce the user’s wait time. It’s unrealistic to expect that transfers will always be done over a WiFi network, and you should know that 60% of mobile web users say they expect a site to load on their mobile phone in 3 seconds or less (source). Similarly, Google found that, for every extra five seconds of load time, traffic dropped by 20% (and it is also worth noting that search engines look at load times as part of their calculation of page quality score).60% of mobile web users say they expect a site to load on their mobile phone in 3 seconds or less.

As a part of this mobile web app development tutorial, here are a few tips that can help optimize the performance of your mobile web applications and minimize latency:

  • Image Optimization. Image load time is well-known to be one of the biggest performance issues affecting page load on mobile devices. Use of online image optimizers, such as smushit.com, can be helpful in addressing this issue.
  • Code compression. Compressing your JavaScript and CSS files, depending on the amount of code you have, can potentially have a significant impact on performance.
  • Database queries.
    • Some mobile device browsers don’t accept as many cookies as desktop browsers do, which can result in the need to execute even more queries than usual. Server-side caching is therefore especially crucial when supporting mobile web app clients.
    • Remember to employ the appropriate filters to preclude SQL query injection that could otherwise compromise the security of your site and server.
  • Content delivery networks (CDN). If you are planning to provide lots of videos, images, audio files, or other types of media, use of a CDN is highly recommended. Some of the more common commercial CDNs include Amazon S3Microsoft Windows Azure, and MaxCDN. The advantages of using a CDN are numerous and include:
    • Improved download performance. Leveraging a CDN’s resources enables you to distribute load, save bandwidth, and boost performance. The better CDNs offer higher availability, lower network latency, and lower packet loss. Moreover, many CDNs provide a globally distributed selection of data centers, enabling downloads to occur from a server closer to the user’s location (resulting in fewer network hops and faster downloads).
    • More concurrent downloads. Browsers typically limit the number of concurrent connections to a single domain, after which additional downloads are blocked until one of the previous downloads has completed. You can often see this limit in action when downloading many large files from the same site. Each additional CDN (on a different domain) allows for additional concurrent downloads.
    • Enhanced analytics. Many commercial CDNs provide usage reports that can supplement your own website analytics and which may offer a better quantification of video views and downloads. GTmetrix, for example, has an excellent website reporting tool for monitoring and optimizing the sources loaded on your site.

Mobile Web App Development Tools

“The right tools for the right job” is an age-old adage that applies as much to software development as it does to any other domain. This tutorial provides and introduction to some of the more popular and widely-used tools for mobile web app development, but bear in mind that there may very well be other tools that are the “right” ones for developing your mobile web application, depending on your requirements and available resources.

Choosing the Right JavaScript Mobile Web App Framework

As mobile web app development tend to create many of the same common challenges – such as cross-browser compatibility and inconsistent HTML and CSS in mobile browsers – frameworks have been developed (based on HTML5 and CSS3) that are specifically designed to address these issues and to work as flawlessly as possible on a wide array of smart phones and tablets. Most of these mobile web app frameworks are lightweight, which helps facilitate fast mobile web browsing without compromising the look and feel of your site.

Broadening our view beyond the mobile landscape, if there is a single popular JavaScript framework worth mentioning, it is jQuery. If you’re familiar with the desktop version, I recommend trying jQuery Mobile for your mobile web app. It has a widget library that converts semantic markup into a gesture-friendly format, making operations easy on touch-screens. The latest version consists of a really lightweight code base that packs a punch with a lot of graphical elements that really can improve your UI.

Another alternative, Sencha Touch, is rapidly gaining market share as well. It offers excellent performance overall and helps produce a mobile web user interface that largely looks and feels like a native one. Its full-featured widget library is based on Sencha’s ExtJS JavaScript library.

Here are some key differences to consider when comparing jQuery Mobile and Sencha Touch:

  • Look and feel. Generally speaking, the look and feel of a Sencha Touch app is crisper and superior to that of a jQuery mobile app, but it is important to remember that such reactions do tend to be highly subjective.
  • Extensibility. jQuery Mobile offers lots of 3rd party extensions and is inherently designed to be highly extensible, whereas Sencha Touch is currently much more of a “closed” framework.
  • Device support. jQuery Mobile currently targets a larger cross-section of devices than Sencha Touch.
  • HTML “vs.” JavaScript. jQuery is largely HTML-centric (i.e., extending and manipulating existing HTML in JavaScript), whereas Sencha Touch coding is entirely JavaScript-based. (This is an example, incidentally, of the skill set of your development team being important to consider when making your technology selections.)
  • External dependencies. jQuery mobile requires jQuery and jQuery UI for DOM manipulation, whereas Sencha Touch has no external dependencies.
  • Learning curve. Most developers find the ramp-up time with jQuery to be less than that of Sencha Touch, perhaps fueled by the large percentage of web developers who are already familiar with the standard jQuery libraries.

Responsive Frameworks and Mobile Web Applications

An increasing number of responsive frameworks have begun cropping up in recent years, with two of the currently most popular being Bootstrap and Foundation. In short, responsive frameworks simplify and streamline web-based responsive UI design and implementation, encapsulating the most common layouts and UI paradigms into a reusable, performance-optimized framework. Mostly based on CSS and JavaScript, many of these frameworks are open-source, free to download, and easily customizable. Unless you have a highly peculiar set of requirements, it is likely that use of one of these frameworks will reduce the level-of-effort to design and implement your mobile web application.

Examining the two leading options, Bootstrap and Foundation, a few of the key differences to consider include:

  • Targeted platforms. While Bootstrap does support mobile, tablet, and desktop devices, it is primarily oriented toward desktop use. Foundation, on the other hand, is designed for essentially all screen sizes and types.
  • Browser compatibility. Bootstrap is compatible with IE7 or higher, whereas Foundation is only compatible with IE9 or higher.
  • Diversity of layouts and components. Bootstrap has a significantly larger collection of UI elements than is offered by Foundation.
  • Auto-resizing. With Foundation, the grid shrinks and stretches according to the current browser height and width, whereas Bootstrap only supports a pre-defined set of grid sizes based on a standard set of screen sizes.

Debugging and Testing Mobile Web Apps

Debugging mobile web apps can be tricky and somewhat frustrating, especially if you need to scrounge around for different devices to test on, or install SDKs for a (typically imperfect) emulation of the targeted client platforms.

In this context, one clear advantage of mobile web development (as compared with native app development) is that you can utilize standard browser-based developer tools to debug your application. Based on my personal preference for remote debugging, the one I recommend in this app development tutorial is Chrome with its DevTools. Other standard options include Firefox with Firebug or Opera’s Dragonfly tools.

When learning how to develop web applications, look toward Chrome and its DevTools.

Some of the reasons I prefer Chrome with its DevTools include:

  • Mobile emulator in Chrome’s DevTools. This is perhaps alone sufficient reason to select Chrome for debugging of mobile web apps. Key features include emulation of touch events, user agent spoofing, network bandwidth throttling, geolocation overrides, device orientation overrides, and CSS Media Type Emulation.
  • Interactive editor. Ability to edit JavaScript or CSS on-the-fly.
  • Superior JavaScript debugger. Allows for DOM breakpoints and provides the ability to profile your JavaScript code execution time.
  • Built-in JSON and XML viewers. Avoids the need for any plugins to inspect server responses.
  • Support for the Android Debug Bridge (ADB) protocol directly over USB. Facilitates easy instantiation of a remote debugging session. (Here is a good tutorial by Google on how to start remotely debugging in Chrome.)
  • Dynamic inspection of resources. Allows you to inspect your app’s local data sources, including IndexedDB or Web SQL databases, local and session storage, cookies, and Application Cache resources. You can also quickly inspect your application’s visual resources, including images, fonts, and style sheets.

To test the layout and cross browsing compatibility of your web app, you can also use some helpful online tools, such as BrowserStack. Just enter the URL for your application, select the browser, version, and operating system, and you’ll get the emulated view (and load speed) of your site in that environment. Another useful tool for the this purposes is CrossBrowserTesting.

Wrap up

With the continued rapid expansion of the number. Variety and sophistication of mobile devices on the market and in use today, the need for effective, user-friendly

and high performance mobile applications is likely to increase substantially. Being able to develop these applications intelligently and efficiently will therefore continue to be of paramount importance.

Many factors must be considered when choosing between web, native, and hybrid mobile app options for mobile devices. Each has its own advantages, but mobile web apps will often represent your most efficient development (and therefore time-to-market) option. Should you choose to go down that path. I hope this mobile web app development tutorial helps get you more directly and successfully to your destination.

post 56

Why Discovery Process Is Critical For Mobile App Development? How To Initiate the Discovery Process?

Imagine you are venturing out in your brand new car, and have just hit the road, all pumped up with excitement. But then, you realize that you don’t have a map for the destination where you are planning to go.

Where will you end up in this situation?

Nowhere to be precise.

You will not only lose time but also resources and you will never be able to reach your destination.

This is why the discovery process for mobile app development is probably the most important phase. Without a discovery process, you are like that traveler without a roadmap.

Why Discovery Process?

Discovery process is a roadmap for the development of any project: It can be a mobile app, a new website, new software, or even a new building. Within the discovery process, we need to gather critical information that will help us to conceptualize and design the said project.

In this blog, we will focus on the discovery process for our mobile app development company and find out how we can trigger and initiate the discovery process for mobile app development.

Let’s take an example of why the discovery process is important for mobile app development: Assume you wish to launch a mobile app for creating a community platform for those who love fishing.

In case we don’t execute the discovery process, and directly jump into the development phase, then the mobile app can be a failure. We won’t have any idea what our target audience prefers, what are the basic requirements for fishing, is there any market for such a community, and what features can such an app for anglers have.

Without the discovery process, the entire mobile app development becomes a gamble, and we lose control over its success.

Definition Of Discovery Process

A discovery process strives to find answers, that will lead to the optimal design, development, UX/UI, and overall mobile app development. These answers form the foundation on which we at TechAhead understand the requirements of the client, connect them with the market needs, and subsequently develop a mobile app solution.

The eventual answers that Discovery Process leads to, are:

  • Critical information that will form the base of the mobile app development (for example user journeys, personas).
  • Information on how users can get benefited from using the mobile app (why will they use our app?).
  • Set of features of the mobile app, that will establish the user interface and user experience of the mobile app (this will lead to wireframe of the new app).

How To Initiate the Discovery Process?

Although different mobile app development projects have different Discovery Processes (app for the fishing community will be different from an app for programmers), there are a few basic processes that form the foundation for all discovery processes.

The three main steps for initiating the discovery process are Research, Ideation, and Evaluation.

Research

Via exploratory research, the developers and mobile app architects will be able to gain information about the domain of the mobile app, and it will induce more clarity into the overall development of the mobile app.

Surveys and questionnaires can be used to scoop out relevant data and information about the domain, and it opens up new ideas about the new app. Competitive analysis can also be an important part of the research process, and it will help to have a better understanding related to the objectives and purpose of developing the app.

In the example of a mobile app for fishing lovers, the research phase can help the developers to understand why some people are passionate about fishing, what are terms they use for fishing, and the psychology of a typical user via user persona.

Ideation

Based on the information gathered via the research process, we will ideate the app development, and this happens due to one critical aspect of this stage: Pain Points.

In the ideation stage of the discovery process, we will try to understand the pain points of the userbase, and brainstorm ideas to resolve those pain points.

By figuring out how we can solve the pain points, the very foundation of mobile app development is created. We can precisely, and specifically focus on the pain points, and ideate on all the aspects of the mobile app development: features list, user interface, user experience, and product experience.

For example, for the app for fishing lovers, we can ideate on the pain points, and then brainstorm ideas to resolve them. Their biggest pain points can be location, good fishing spots, buying fishing equipment, learn how to fish, and developing connections with other fishing lovers.

Evaluation

Based on the ideation process, and the ideas generated, we arrive at the final and eventual stage of the discovery process: Evaluation.

At this stage, we have the information about the domain, we have the typical user persona, and we have a set of ideas related to the features, user interface, and user experience based on the pain points.

Now, all we need to do is connect the dots, and evaluate the final structure of the mobile app.

In most cases, a wireframe of the new mobile app is the outcome of the evolution stage, which is created after concept testing. Developers can create the concept of the mobile app via wireframe, insert navigational parameters based on the user’s expectations, and then evaluate this framework with the client, and subject matter experts.

For example, a wireframe based on the available information about the app can be shown to the fishing lovers first hand, and those who have knowledge and experience about fishing.

Let them evaluate the features list, navigation, and overall user experience of the app via concept testing, and then based on their inputs, the actual design and development of the mobile app can be initiated.

Thus, after the discovery process ends, the mobile app developers and designers are empowered with the right information and inputs to initiate the mobile app development process.

And this is a sure-shot path to success.

Need more clarifications on the discovery process? Talk to our mobile app consultants today, and start the process of launching your mobile app, right now!

Why Android Is Easy For End-Users But Difficult For Developers

Introduction

 Android is one of the leading operating systems used in more than 4 billion smartphones and other devices such as TVs and home appliances. Unlike iOS, Android is flexible, reliable, and compatible with may devices. If compared with iOS, Android endows the users with the ability to explore the seamless and unlimited number of features of Android smartphones.  There is almost no restriction of doing things in an Android smartphone for its users. But have you ever thought about the point of view of developers towards the Android OS? If not, then you must know about the fact that the Android OS, which is liked by the users, is not liked much by the developers for some valid reasons. There are many challenges which are faced by an Android developer because using Android applications is very easy but developing and designing them is quite tough. There is so much complexity involved in the development of Android applications. But to produce high-end results for the Android users, an Android developer faces these challenges and complexities. Some of these complexities are mentioned below.

  1. DesigningDesigning apps in Android is the most important part. You have to design applications in such a way that it suits all or almost all the screens in the universe. The screen resolution is not the only major concern here but you have to take care of the OS versions too. 
  2. Coding in multiple files for one screenTo display one window, you have to write several files like for end-user, it’s just a product display page but for developers its 3 XML files and a minimum 2 Java files that work together. Developers, particularly the ones who have changed their career from .NET to Android find themselves in big trouble here, for sure.  
  3. Time-consuming testingAs you cannot depend on one screen or one version of Android, after every update, you have to check them on various different devices including brands and sizes.  
  4. Resolving issues and Bug FixesAfter launching the application, some bugs and issues will definitely arise and to fix these issues extra effort has to be made. Regular updates in the interface of the application so as to improve the overall performance and functioning is also another very important aspect for the developers. For this, feedback and suggestions given by the users play an important role. Generally, some issues occur on specific devices and on other devices things working properly. Permission to access devices some important task looks secure as per end-users point of view but programming to access them is quite a difficult task. Programmers have to code in the way that it will support all the versions including older to newer. 
  5. Compatibility with all android devicesWhile developing an Android application, developers need to be careful that their application will be compatible with all Android devices. Like all features, for example, camera, keyboard adjustments, size, storage, etc needs to be fully ensured before launching the application on the Google Play store.  
  6. Audits and researchApart from designing and developing applications, an audit needs to be done before developing an app. For example, if a developer is planning to develop an application in the gaming segment, then he/she needs to know about the popularity of the games among the users from different countries. This audit is not an easy task, but it needs to be done for the success of the application.  
  7. Continuous updation by AndroidAlthough it sounds good, updating your Android studio every time when there is no major difference between the two versions is quite a big headache. These updations are also in MBs and GBs. Sometimes after updating, the existing code will start giving an error. And after research on Google, we get solutions like changing the application folder, create new projects and copy-paste and blah blah.  
  8. Google’s monopoly on their productsYes, of course, it’s your platform buddy, but suddenly you people announce, “in a few months, having this or this thing is mandatory in-app code”. Boss, we are a developer and yes we have the capacity to develop anything but forcing us to be like you, is making us slaves. I know changing compile to implementation is an easy task but if you have loads of such things then it will surely be a headache.  
  9. PublishingPublishing Android apps is not that simple a task. But after doing it for the first time, your mind gets set to do so (Until Google changes policies and applies new rules). While publishing you have to take care of version code, and you’re not able to understand why Android studio doesn’t do it itself. Also, like visual studio, why is there no publishing wizard to publish your app to the world? Every time I have to publish the app, then I have to locate publishing folder, go to the Playstore publish a website, click on the app name, click on manage, then some other window, then drag the file and ohh.. its throws the error “Version code already used”. So, I update the version code and do the procedure again.

Conclusion

 There is a high complexity involved between developing an Android application and using that application. For users, it is very easy and for developers, it is a quite tough job for them and the above points which have been listed justify this statement. Please do share your opinions and thoughts in the comments section.

post-4

Tips for Developing an Android App: My Lessons Learned

Hi! I’m Ivan and I’ve been an Android app developer for quite a while now. Or so it seems. Back in the day (we are talking about 2009), Android was just an infant and I watched the Little Green Man grow ever since. I’m afraid some time ago, Android managed to outgrow me.

Nowadays, Android is not just on tens of thousands of different phones and tablets. It’s on your wrist, in your living room, in your car, and as soon we start assigning IP addresses to inanimate objects, it is going to be pretty much everywhere around us. A lot of ground for even an experienced Android developer to cover!

Also there are over one million apps just on Google Play, not counting Amazon AppStore or markets we are not generally interested in, like China. Let’s not forget countless mobile app development companies that generate billions in revenue every year.

So, how can an independent developer create a successful app in this huge market with big players? I have no idea, I haven’t made a successful app! But, I have made a cute one, and I’d like to share my story with you.

Lesson 1: Connect The Dots

Success (usually) doesn’t happen overnight and this is not my first app. I have ones ranging from unexpected over-the-weekend development hits like Macedonian Orthodox Calendar, with over 30,000 users in a language that no more than 4 million people can understand, to more successful failures like TweetsPie, an app with heavy media coverage and a terrible user-base of just over 600 active users. A lot of lessons there!

While these apps helped me understand the mind of the “elusive creature called the User” a bit better, the one that inspired me was a two-hour project. Originally developed to make me a millionaire, once 1,428,571 users purchased the app as Google takes 30 cents out of every dollar, The Dollar App was made to test my merchants account.

Little did I know that years later I will receive an email from a happy mom stating that it was the best dollar that she ever spent since her boy was smiling every time my app gave him a hug.

Android app development for beginners can be simple and fun when scaled effectively.

And that’s how an idea was born! Why not use the fundamental human need for a hug and make it pretty? Make it for a specific audience, interactive, challenging, fun to use, and even more fun to share.

Lesson 2: Understand The Android Market

All the things I mentioned above added up to a live wallpaper app. The basics are not that hard to guess. Android has a bigger market share than iOS, but iOS users purchase more. Messaging apps are wildly popular, but freemium games top the earnings. China, India, Brazil and Russia are emerging markets, but lack spending habits. You can read the App Annie Index for more insights.

So how does a live wallpaper app fit into this? First of all, it eliminates most of the platforms since a live wallpaper is an Android thing. Second, this feature was added in Android 2.1 so it has a large community and quite a few beautiful examples. Most notably Paperland and Roman Nurik’s open source Muzei, probably the best reference point for Android development.

While there are lot of live wallpapers out there, most of them fall under the scenic/weather category, and very few fall under the cuteness overload category. This is something we wanted to change and offer something that gives you a smile each time you unlock your phone, even though you unlocked it for a completely different reason. We gave you a cute little bundle of joy to hug you before you go to bed at night, or when you turn off your alarm in the morning. And even better, make it personal and customizable.

Without further ado, and before we go into technical details, I proudly present you: Ooshies – The Live Wallpaper

Ooshies is the name of my Android app. It may not have been successful but it helped me learn the lessons needed to write this guide for beginner Android developers.

It features:

  • free live wallpaper app that gives you hugs
  • 12 unique ooshies to choose from
  • free, un-lockable, and purchasable content
  • current weather updates
  • social login and data sync
  • seasonal greetings
  • many surprises
  • a ninja cat
  • did we mention hugs?
Successful Android apps sometimes just make you smile.

Lesson 3: Try To Make It Happen

Ooshies seemed like a pretty straightforward Android app idea. Paint a background, overlay some clouds and stars, put a bear with a balloon on top, and you are good to go. But no, it’s Android! What seems easy is often quite difficult and we tend to repeat the same common mistakes over and over again. Here’s a quick rundown of the challenges I faced:

  1. Hardware acceleration – why draw using the CPU when the GPU is so much better at it? Well, it turns out that drawing bitmaps on a canvas cannot be hardware accelerated. At least not for the time being.
  2. OpenGL – if we want hardware acceleration we need to use OpenGL ES or even better a framework that does most of the work for us.
  3. Bitmap loading – a well known memory consumption issue. We need to allocate 1 byte [0-255] of memory, for each channel in the #ARGB, to display a single pixel. Also the images we use often have higher resolutions than the device’s display. Loading them all will quickly result in OutOfMemroyException.
  4. Home launchers – the live wallpaper will be hosted in the home launcher process, and different launcher tend to give different callbacks to the live wallpaper service (most notably Nova and TouchWiz).
  5. Battery life – if not done right, the live wallpapers and the widgets can drain a lot of battery. With all the buzz about the Lollipop (Android 5.0) terrible battery life the first app to go will be the live wallpaper.

So, overlaying a bitmap, painting it on a canvas, and then switching frames on touch to give a hug, doesn’t seem like a big deal, even when if it is done on the CPU, right? Thats right, it’s not a problem. But, who wants a static live wallpaper? It beats the purpose. The wallpaper should respond to your touches, it should move as you scroll your home screens, it should perform random acts of kindness and make you feel happy.

And there is an Android development trick for that. There is a term called the parallax effect for adding depth in a 2-dimensional space. Imagine yourself driving a car. The house closer to you moves faster than the mountain in the distance. Same effect can be achieved by moving objects in different speed on a canvas. Although, they are all in the same plane, your brain perceives the faster moving objects as closer to you. Much like adding drop shadows, the parallax effect adds a z-axis.

And this is where all hell breaks loose! On most devices moving the Ooshie, the weather overlay, and the background, at different speeds, yields significant frame rate drop. Here’s how a single frame is drawn:

    canvas.drawBitmap(background, 0 - offsetX / 4, 0, null);
    canvas.drawBitmap(weatherOverlay, 0 - offsetX / 2, 0, null);
    if (!validDoubleTap) {
      canvas.drawBitmap(ooshieNormal, positionX - offsetX, positionY, null);
    }
    else {
      canvas.drawBitmap(ooshieTapped, positionX - offsetX, positionY, null);
    }

The offset is a percentage of the distance user has scrolled. It’s a callback that the wallpaper engine provides:

    @Override
    public void onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep, float yOffsetStep,
                                 int xPixelOffset, int yPixelOffset){
      super.onOffsetsChanged(xOffset, yOffset, xOffsetStep, yOffsetStep, xPixelOffset, yPixelOffset);
      // athe current offset should be a fraction of the screen offset to achieve parallax
      if (!isPreview()) {
        float newXOffset = xOffset * 0.15f;
        wallpaperDrawHelper.setOffsetX(newXOffset);
        if (isVisible() && hasActiveSurface) {
          wallpaperDrawHelper.drawFrame(false);
        }
      }
    }

I must note that all of this would be unnecessary if I knew how to work with OpenGL! It’s on my TODO list, since anything more complex than what we have now will require a hardware acceleration. But, for the time being I have to work harder, not smarter (I’m open to suggestions in the comments). So here’s what we did:

Lesson 4: Work With What You Have

As a big supporters of the minSdk=15 initiative, from the start we eliminated all the 2.x devices. The effort for maintaining backward compatibility is greater than the possible revenue from users unable\unwilling to upgrade their phones. So, in most cases, we’ll be able to achieve smooth experience with an added option to disable the parallax if desired.

Per this Android development guide, I wanted to give the option to disable the parallax.

Another big optimization is how we handle the bitmaps.

  1. Ooshie overlay – trimmed and carefully scaled Ooshie bitmap (can be accessorized)
  2. Combined overlay – a combined background and weather bitmap that moves with a fraction of the Ooshie speed

This Android development trick saves memory and speeds up the drawing time, for a slight parallax effect degrade.

When scrolling the home screens, frames will be drawn quite often (ideally more than 30 times per second). It’s crucial not to draw them when the home screen is not visible (some lock screens, some app drawer, opening/switching apps etc.) to minimize the CPU usage.

This is all tied closely with the weather updates. Initially there was a repeating task, executing every hour or two, to sync the weather, but it was really an overkill. If the user cannot see the wallpaper, the weather info is irrelevant. So now, weather updates happen only when wallpaper is visible.

    long lastUpdate = prefStore.getLong(SharedPrefStore.Pref.WEATHER_TIMESTAMP);
    if (System.currentTimeMillis() - lastUpdate > Consts.WEATHER_UPDATE_INTERVAL){
        // update the weather if obsolete
        Intent intent = new Intent(getApplicationContext(), WeatherUpdateService.class);
        startService(intent);
    }

So, basically, here’s the checklist for a memory optimized smooth software bitmap drawing:

  1. Combine bitmaps once
  2. Draw less bitmaps
  3. Redraw only on demand
  4. Avoid background tasks
  5. Offer users some control over the process

Lesson 5: Test. Test. Test

I cannot stress how important this is! Never, I repeat NEVER, release your app before testing it! And, I don’t mean that YOU should do the testing. You wrote the code, you know how it works, and you influence the result by knowing the expectations. I’m not talking about JUnit testing (although recommended), but about staged rollouts i.e. alpha and beta testing.

If you are into Android software development the terms are straightforward, but here is a quick rundown:

  1. Alpha testers – a small group of people consisting of your teammates and people from the industry, preferably Android developers. Chances are they are going the have high-end devices and will play around with the developers options. They’ll send you stack traces, bug reports, and even give you some code/UI optimization tips and tricks. Perfect for early releases with partial/missing features.
  2. Beta testers – a much broader audience with various demographics. Stable releases should be published here. Even if your ninja level is too damn high, you can never predict, let alone account, for all the possible Android distributions and ways people use their phones.

Once we passed the alpha, I thought we were done. But, boy I was wrong?! Turned out that not all Android users have Nexus devices with the latest software! Who’d know? 🙂

Here are some Android development issues based on this revelation:

  1. Different launchers have different default home screens – usually the first or the middle one, and ,as far as I know, there is no way of knowing it’s position.
  2. It’s hard to center the Ooshie without knowing the default home screen position – thus the settings slider for adjusting the parallax offset.
  3. A random user will suggest your next feature.

So I would like to thank all our beta testers for the hard work they did. I hope that getting all the latest features before anyone else is a decent reward for their dedication. If you’d like, you can also be a part of our Google+ Beta Community.

Beta testing is a critical step for Android beginners to keep in mind as they begin programming their successful Android apps.

Lesson 6: Let The Data Speak

Making an Android app that stands out today is a bit more difficult than making a calculator app, when there were none back in 2009. Making the perfect app is hard. Mainly because perfection is in the eye of the beholder. What is good for me, doesn’t necessarily mean it’s good for you. That’s why it’s important to let the app grow. Our roadmap checklist for new features shows that we have enough work for the whole 2015. Among other things we’ll soon include:

  1. Sounds
  2. Seasonal backgrounds
  3. Customizations (background color, weather packs, ooshie skins, etc.)
  4. Region specific ooshies (ex. babushkas)
  5. A lot of new ooshies and ways to unlock them

Now, we might have kept the app in beta until all is done, but that way we are throwing away valuable data. Not all beta testers will dedicate a portion of their day to send you the feedback. That is where you can benefit in using tools for getting the feedback. You can use Google Analytics, Flurry, Mixpanel, Crashalytics, ACRA, etc. to collect usage data.

For example, by analyzing the data we noticed that users don’t click the settings button a lot, so we made it more apparent and added a quick tutorial for tweaking the settings.

Although this is a background process, it can be used to further improve the user experience. Why not show the user how many times:

  1. he/she received a hug
  2. how many rainy days were brightened up by a smile
  3. how many taps were needed to unlock an Ooshie with a mini-game
  4. many of your friends installed the app because of you
Every Android development guide should tout the importance of Google Analytics in optimizing your app!

This is important because it provides consequences for their actions. Don’t make the same mistake our educational system does, making the users passive content consumers. Make them in charge. Give them the option to control their own devices and create their own personal experience.

In the end, you need to evolve your Android app development based on this data as a guide. Although primarily intended for moms/kids, this app may become popular in other demographics. Otherwise they’ll find someone who can.

Conclusion

Let’s return to my most successful failure TweetsPie. Despite couple of awards and huge media coverage, the app failed to retain it’s users (the reasons why are beyond the scope of this article).

Success is not always apparent. Thanks to the whole experience I learned a lot. I gave, at least, a dozen lectures on How (not) to fail as a startup on various events and hackathons, and managed to get a couple of clients at Toptal.

Even more important, I try not to repeat the same Android development mistakes with Ooshies by following the tips and tricks in this guide.

To wrap up this long guide, what we define as a success is, at later stage, tightly coupled with what we set as goal in the beginning. The most common success measure is, of course, making a lot of money. No matter if your app makes it or not, you must try to make it happen, and believe me at the end you’ll become a better person (hopefully one that manages to learn OpenGL). You’ll make new friends, few enemies, and if you are lucky/smart enough you’ll make a lot of users happy.

post-3

Qt on iOS and the ITMS-90338 Non-Public API usage for __ZN3WTF8pageSizeEv

Apple recently began rejecting iOS apps built with Qt because of the non-public API usage for __ZN3WTF8pageSizeEv.

Apple Store Connect - Reject Qt update

We found out about the issue while updating our Google AdMob and Amplitude plugin to the latest version to meet Apple’s requirements for the upcoming change with IDFA and SKAdNetwork usage for iOS 14.5.

Since this is relevant for our customers and our demo apps, we investigated the issue to come up with a reliable fix. Read on to learn how to solve your rejected iOS updates.

When is the Non-Public API Usage happening?

If you upload a new iOS app update to App Store Connect, Apple does some automated checks during the “Processing” state. These checks include a static binary analysis if you are using non-public APIs from iOS frameworks. Non-public API usage is not allowed according to App Store Review Guidelines 2.5.1 (“Apps may only use public APIs and must run on the currently shipping OS.”).

The result is that you can’t submit any new updates for your iOS app written with Qt. 

Why the Non-Public API Usage?

If you are creating your apps with Qt, you usually do not use Apple framework APIs in Objective-C or Swift directly. Still, the app review might trigger a false positive, reporting that you cannot use the __ZN3WTF8pageSizeEv API. But why is this happening?

The issue appears if you are linking against the JavaScriptCore framework from iOS. Qt does not link the framework automatically. Still, you can link it by integrating a third-party library or adding some native code to your app.

The JavaScriptCore framework includes the open-source JavaScriptCore Macro Assembler. Qt also uses that exact assembler code in the QtDeclarative module. As soon as you link the JavaScriptCore framework with your app, Apple thinks you are using the internal API WTF::pageSize() from the framework and falsely flags your app binary to use non-public APIs.

Even though this is a false positive, Apple does not accept appeals or makes exceptions here in general. So again, your app update is stuck.

How to solve the Non-Public API Usage Issue?

There is already a related Qt bug which is not resolved for years, though. The most straightforward solution right now is to rename the symbols within the Qt sources and rebuild Qt for your iOS targets, including the builds for devices (arm64) and simulators (x86_64).

See how you can fix the Non-Public API usage issue and get your updates into the iOS App Store again

There are three solutions right now:

1. Build Qt from Sources

Follow these steps to build Qt for yourself:

  1. Install build dependencies for building Qt for iOS from source
  2. Clone the Qt source code or download a snapshot from Qt download servers and extract the archive
  3. Rename the symbol names as outlined in the bug report
  4. Build Qt from source for iOS by executing configure and make, fix build issues along the way
  5. Install Qt and include the custom build within Qt Creator by adding a new compiler kit
  6. Optionally distribute your build to teammates to use the same Qt version across the team

Depending on your machine, the build takes some hours to finish up. So better plan in a lunch break or compile it overnight. From now on, you need to use your custom Qt build and compiler kit to create your iOS app updates. Note that you need to redo those steps every time you want to update the Qt version in use.

2. Use Felgo SDK for your iOS Builds

In case you do not want to rebuild from the Qt source code and set up everything from scratch, you should use the Felgo SDK to compile your Qt iOS apps.

The Felgo installer comes with precompiled iOS libraries with a ready-to-use compiler kit in Qt Creator. You can download Felgo from felgo.com/download or update your existing Felgo installation by opening the Maintenance Tool in your Felgo SDK directory to get the latest version of the iOS kit:

Felgo SDK-iOS kit

The provided iOS Kit resolves the mentioned __ZN3WTF8pageSizeEv issue. Additionally, with included Felgo plugins, you can use leading third-party services for analytics, monetization, push notifications, cloud database, and more.

You can add Felgo Plugins right within your existing QML or C++ code without the hassle of dealing with platform-specific libraries, e.g., to integrate analytics to your app, just add the Amplitude Item or Google Analytics Item to your code:


import Felgo 3.0

Amplitude {
  // From Amplitude Settings
  apiKey: ""

  onPluginLoaded: {
    logEvent("Started App")
  }
}

GoogleAnalytics {
  // Property tracking ID from Google Analytics Dashboard
  propertyId: ""

  onPluginLoaded: {
    logEvent("App Action", "Started App")
  }
}

3. Custom iOS Build for Your Project

If you struggle to build your own Qt libraries or the provided solutions do not match your requirements, we can help to create your custom iOS Qt build!

Being one of the first on the market offering Qt development for iOS & Android, Felgo is a world-leading provider for Qt on mobile platforms. Please contact us via our Qt Service Partner page here for a quick chat about your project:

post image-2

62 of the Best Mobile Development Blogs (2021 Update)

Development blogs are one of the best ways to keep up with everything in the world of mobile development. Whether it’s staying informed about major announcements or trying to gain an edge on competitors, there’s a development blog for every need.

This list has gathered all the best mobile development blogs into one place. You can find your new favorite blog by browsing the list and hearing from some of the blog authors themselves.

Skip to the category you’re most interested in using the links below!

If you know of a great development blog that should be on the list, let us know in the comments. And make sure to share this list with as many developers as possible!

Are you looking for an agency to outsource your mobile app or game development? Click here and see how Felgo can provide a solution.on.

Mobile Game Development Blogs

If you’re focused on developing mobile games, these sites are essential reading.

Game Analytics Blog

development-blogs-game-analytics

The Game Analytics Blog is perfect for mobile developers. Here’s what the team have to say about why you should check them out.

“Everyone can find value in our blog posts as we offer more than just industrial reports, we are a way of making newcomers understand how can analytics insights be used during the lifetime of their games and also we will always prefer to publish news and science rather than clickbait articles.”

Download Felgo now and Develop Cross-Platform Games and Apps.

Free Download

Pixel Prospector

development-blogs-pixel-prospector

Pixel Prospector is a site that many game developers will be aware of as a source of game assets. They publish lots of cool game artwork and also give general advice to game developers. Make sure to check out the main website as well as the tumblr blog for some good insight into game marketing as well.

Chartboost Blog

development-blogs-chartboost

The guys at Chartboost publish 3 or 4 blog posts a week that cover some great topics related to mobile game development. This is definitely the blog to check out if you’re planning to launch a game in an exotic part of the world. The Chartboost team has covered mobile game launches all over the world and has regular Q+A’s mobile gaming experts.

The RenegadeCitizen Blog

RenegadeCitizen is one of the most thought-provoking mobile game development blogs online. They regularly investigate the issues facing game devs and more often than not they provide concrete solutions that any developer can use.

Ray Wenderlich

Ray Wenderlich is a favorite of everyone on the Felgo team. This is one of the best places on the internet for mobile game tutorials so give it a look as soon as you can. Ray has put together a very experienced team with expertise in a number of different areas, making this blog one of the biggest game development authorities online.

Making Games

If you want to learn to make great games, then take a look at Making Games. They post regular blog posts on the topic of game development and design. They also have a great newsletter, that you can sign up for free of charge.

Black Shell Media

Black Shell Media is a blog made up of expert writers, marketing professionals and game industry veterans. Make sure to check out their blog to get marketing tips, promotional strategies, development advice and more.

Cashplay

The Cashplay blog is a good read if you’re looking for a light-hearted look into the big stories in the world of mobile game development.

Mobile App Development Blogs

VisionMobile

VisionMobile is a place where you can get expert insight into the app economy. Make sure to subscribe to their newsletter in order to get their expert analysis as soon as it’s published.

Mobile Dev Memo

development-blogs-mobiledevmemo

Mobile Dev Memo is a hub for great blog posts but they also publish their own posts which cover a range of engagement topics. It’s a great way to find the most popular posts of the day, just check out their front page to get the latest news.

Savvy Apps

development-blogs-savvyapps

Savvy Apps have an extremely stylish blog that tries to answer as many questions as possible for mobile developers. They boast over 20,000 subscribers, probably because they publish great posts every week.

Furbo

Craig Hockenberry writes for Furbo when he’s not making apps or running websites. This is one of the longest running blogs on the list with posts dating back to 2007. It’s a great blog for mobile developers still looking for success.

Vungle Blog

development-blogs-vungle

The Vungle blog is a great read if you want to learn more about mobile monetization. Check out their site or subscribe to their newsletter for all the latest news about mobile advertising.

Developer Economics

While it may not be the most regularly updated blog, the team at Developer Economics publish some very high quality posts. It does its best to promote best practices and give its readers a balanced view of the development world.

Android Development Blogs

When it comes to Android, these blogs will help you to stay ahead of the curve. Make sure to check them out if you’re targeting a release on Google Play!

The CommonsBlog

The CommonsBlog covers everything to do with Android and updates every couple of days. It can show you how to achieve a number of visual effects for Android and has also published a number of books on the topic of Android development. Make sure to check it out!

Square Island

Square Island is written by Chiu-Ki Chan, a software engineer with over 6 years of experience working with Google. She gives plenty of development tips with code examples and images. The newsletter is a great way to stay up-to-date so make sure to subscribe.

Riggaroo

Riggaroo is run by Rebecca Franks, an Android dev by day and a baker at night. Rebecca likes to share her skills via her blog with her most recent post at the time of writing being “How to create a group of File Templates in Android Studio – Part 3”.

You can also catch Rebecca on Twitter!

Android Developers Blog

development-blogs-android-developers-blog

The Android Developers Blog is the official blog of the Android Platform and it’s the first place to check for Android announcements. One of the highlights of the Android Developers Blog are the Android Developers Stories, where Google shines a light on some of the more unusual projects being created with their platform.

Android Authority

While Android Authority can be more device-orientated, their “How to” section has some great quick guides for configuring Android devices for development purposes. It’s the place to go if you need device help!

Android Hipster

Android Hipster is a regularly updated blog that’s full of tutorials and interesting opinion pieces. They also produce a podcast and are active on Twitter so make sure to hit them up with any Android questions you might have!

Grafix Artist

Grafix Artist focuses on visual aspects of Android development and is a great resource if you need help making your app or game look great on the Android platform. It has a special section full of tips too, which is a great starting point.

Honourable Mentions

James from Hermosa Programación was in touch to tell us this about his site: “Hermosa Programación is a blog about android development for self-taught programmers. In it you will find examples downloadable Android Studio and more than 50 Android programming tutorials”.

iOS Development Blogs

Although Felgo is a fully cross-platform solution, you might be interested to stay on top of all the latest iOS news and development lists. The following blogs are recommended for staying on top of all things Apple-related.

iOS Dev Weekly

iOS Dev Weekly is a blog and newsletter that releases a round-up of all the best iOS articles every Friday. The round-up includes the best opinion pieces, resources and tutorials for mobile developers. Make sure to subscribe to get the most from iOS Dev Weekly.

iOS Goodies

development-blogs-ios-goodies

iOS Goodies is not so much a blog as a great newsletter that sends out a round-up of the best articles and resources related to iOS every single week. If you’re interested in targeting the iOS platform, this blog will send you everything you need. They have a special focus on business and UI/UX.

NSHipster

development-blogs-NSHipster


NSHipster, besides being a great iOS blog, also publish hard books on mobile development. They post a weekly blog post on matters related to iOS and have a large number of accomplished contributors. Check out their archive and quizzes to get the most from NSHipster.

Swift Blog

The Swift Blog is the official blog for iOS developers so it’s often the first place to make announcements regarding the platform. It’s not the most regularly updated blog so it might be best to subscribe to the RSS feed so you still get the most from this blog.

Mobile Engagement Blogs

If you want to improve your user acquisition strategy or find out the latest way to optimize your app store pages, check out some of these blogs.

Sensor Tower Blog

development-blogs-sensor-tower

The people at Sensor Tower know their stuff when it comes to mobile engagement and they’re happy to share it:

“The Sensor Tower Blog is for any mobile developer (big or small) looking to grow their user base in app stores & understand the larger mobile ecosystem. The ST blog posts mini-reports, best practices for optimizing your app store listing, as well as weekly dispatches on the apps we’re watching.”

App Annie Blog

development-blogs-app-annie

App Annie is one of the industry’s leading authorities when it comes to interpreting mobile data and they do their best to share this insight on their blog. If you want to know what the end user is like around the world, check out the App Annie blog.

SOOMLA Blog

development-blogs-soomla

“SOOMLA blog is an online resource for anyone in the mobile ecosystem. It includes data reports, tips and guidance, expert opinions, unbiased tool comparisons, industry news and much more. The monetization category is the most popular section – teaching app publishers how to turn their apps into a profitable business.”

The SOOMLA blog is a favorite here at Felgo. Make sure to check it out!

Apptentive

development-blogs-apptentive

The Apptentive team is keeping a close eye on the mobile world and passing on their astute observations through their blog. If you want to know how the very best apps are succeeding, check out this blog.

Apptamin

development-blogs-apptamin

The Apptamin blog wants to show you how to make successful apps by giving advice on mobile advertising. You can optimize your apps and games with the insight provided on this blog to get the best return of investment on your ads.

MobileAction

development-blogs-mobile-action

Mobile Action is the blog to check out for the best tips on app store optimization. Check it out now to find out what today’s most successful games are doing to bring in players.

Localytics – Mobile Engagement Blog

“We live and breathe apps here at Localytics. From staying on top of industry trends to tapping into our robust data, we strive to provide actionable insights to enhance our reader’s mobile engagement strategy. Plus, since our content team actively uses apps, our blog is filled with real-life examples of app marketing done right that you can learn from. Last but not least? We try to have a bit of fun with our blog, so hopefully during your quest to mastering app marketing, you’ll be entertained along the way.”

The Localytics blog is a mine of useful info. Check it out now to get the latest on mobile engagement.

Chupamobile

development-blogs-chupamobile

Chupamobile publish a blog post nearly every week and answer all the questions a mobile developer could have. Check it out now to make even more successful apps and games.

The Fiksu Blog

development-blogs-fiksu

The Fiksu Blog write some of the most in-depth blog posts about user acquisition and life time value. They also provide great commentary on some of the most popular apps available today and how they’ve proved to be successful.

Admob Blog

Admob is one of the biggest names in mobile advertising and they regularly update their blog with announcements and tips for developers. You can subscribe to keep up-to-date with all the latest news from Admob.

You’ll learn a lot about ad placement and how users feel about ads by reading this blog.

Trademob

development-blogs-trademob

The Trademob blog is a great read for anyone that wants to improve their mobile advertising campaigns. They provide a number of services to help you with your advertising needs, but they also blog about how you can get your mobile advertising campaigns right. Make sure to check it out!

ArcTouch

development-blogs-arctouch

The ArcTouch team were in touch and had this to say about their blog!

“The ArcTouch blog covers the key trends in mobile and the Internet of Things. Gartner projects there will be 20 billion connected “things” by 2020 — new devices above and beyond phones, tablets and PCs — that will change the way we live, work and play. We write about how this translates into opportunities for businesses and brands to connect more deeply with their customers by offering unique and engaging experiences.”

MobileGroove

MobileGroove is the place to go if you want to read about making successful apps or hear what the experts have to say. Besides their website, they have a great podcast and video series for you to learn from.

Indie Development Blogs

The Felgo team started off as indie devs themselves so we like to keep an eye what’s happening in the indie world. Check out some of these blogs to see what it’s like to be indie dev these days!

Bitsplitting.org

Bitsplitting.org is the brainchild of Daniel Jalkut, a professional coder, podcaster and blogger. Daniel considers the site to be his personal technology soap box so if you’re looking for some opinions; this is the place to go.

Public Object

Public Object is the blog of Jesse Wilson and it covers a wide array of topics. This blog isn’t so much mobile orientated, as it is coding orientated. Jesse is at his best when he talks about the actual act of writing code. Make sure to check Public Object out!

Jeremie Martinez

We got in touch with Jeremie who told us about his blog.

“My blog is dedicated exclusively around Android developments. Although a true focus is given to the latest platform, I also talk a lot about DevOps, testing, best practices and methodologies always in the context of developing an Android application. To sum up, the idea is quiet simple: share my findings and my opinion.”

Ole Begemann

Ole Begemann is an iOS and Mac developer from Berlin. He mainly writes about software development on Apple platforms. So his blog often includes great tips for the iOS platform.

Erica Sadun

Erica Sadun shares her thoughts on development and technology as a whole. She is one of the most regular posters on this list so make sure to subscribe to her newsletter to stay in-the-know.

Ryan Harter

Ryan Harter is a freelance Android developer as well as having his own development company. Check out his blog if you want some great insight on Android development.

Dan Lew Codes

Dan Lew introduces his blog simply by saying, “Thoughts on life, the universe and the mystery of it all; but actually mostly just code.”

Benedict Evans

Benedict Evans works at Andreessen Horowitz, a venture capital firm in Silicon Valley that invests in technology companies. He tries to work out what’s going on with mobile and what will happen next.

Hannes Dorfmann

Hannes Dorfmann covers mobile development with a focus on Android development and UI design. He also gives insight into life as an indie developer and how he tries to improve his workflow.

Coding Horror

development-blogs-coding-horror

Coding Horror is a long-running development blog with advice on all aspects of development. It covers everything from practical coding advice to how to work within a development team.

Studio Blogs

Many development studios keep blogs to show off their latest projects, workflow or just to let customers know what they are doing. Here are some of our favorites!

The Nerd Blog – Big Nerd Ranch

development-blogs-the-nerd-blog

Big Nerd Ranch run The Nerd Blog.

“We offer high-quality content that is relevant to developers. They can learn from our Nerds, who are experts in the field and authors of our best-selling programming guides.

We’ll also soon be rolling out different kinds of content in addition to the deeply technical posts in order to meet readers’ needs. We will still offer posts that demonstrate how to solve problems in your code, but we will also talk more about why you might choose one tool over another or reviews.”

Dynamic Leap

Dynamic Leap makes Android and iOS apps and have a great blog where you can learn from their professional development team. They regularly update the blog and give their take on how to make great apps.

Kogi Mobile Blog

The Kogi blog seeks to help Appreneurs to make informed decisions about app development. They write about everything from user acquisition to cost estimation. You can even subscribe to stay completely up-to-date.

Team Hunt Blog

The Team Hunt blog covers a wide range of topics that should interest any level of developer. Whether it’s the problems that indie devs face or global trends in the mobile development, this blog has it covered.

NimbleDroid Blog

We were in touch with the guys at NimbleDroid and this is what they had to say about their blog:

“Nobody likes sluggish mobile apps.  NimbleDroid blog covers the best practices and latest tech on how to build fast Android apps!”

Raizlabs

“Our development blog has the latest tips, tricks, and libraries from a wide range of mobile developers. We include libraries, best practices, and techniques for building better mobile products.”

Make sure to check out the Raizlabs blog!

Novoda Blog

The Novoda teams describe their blog as:

A constant conversation about development, design and technology thinking is the only way to be the best you can be. Our Labs Blog is a resource for just that: a public hack-and-tell conversation.

Tipsy & Tumbler

Tipsy & Tumbler are a UK based team building amazing digital solutions. They specialise in cross platform mobile apps, Appcelerator Titanium, responsive web development, identity, branding, UX and complete digital solutions. Check out their blog if any of those topics take your fancy.

Fan Studio Blog

development-blogs-fanstudio

The Fan Studio Blog is a great blog that really tries to help out all types of mobile developers. They were in touch to say:

“Well, first of all I truly believe that people who are interested in investing in this business or people that want to learn game programming should go and have a look over our blog because most of the articles are written based on our 8+ years of experience – from downloads and ROI we received from our games to how an app is correctly managed and how much it will cost.”

Yeeply

Yeeply have a great blog and want to help you whether you’re working on a mobile project or some other kind of SaaS.

“By and large, your experts should read Yeeply Blog because we have the necessary information for their work. We are specialised in mobile apps, but also in general development, app promotion, mobile games and so on. They can find the answers to their daily questions about app development. We try to provide useful information to developers and clients.

Also, we provide guidance about the mobile market itself, with real data and the most recent statistics.

The idea is to connect in a more human way to our readers than the standard, in order to stay connected to them by creating compelling content that keeps our readers informed.”

Mood Up Labs Blog

The Mood Up Labs blog features a slick design and a lot of great posts that can help you to become a better rounded, mobile developer. While it’s not updated as regularly as some of the other blogs on this list, it’s so easy to navigate that you’ll really enjoy going back to read their older content.

Build Blog by Think Apps

development-blogs-build-blog

This blog possibly covers the widest range of topics out of any on this list. While it’s not all strictly related to mobile development, it’s always great reading. This blog is at the forefront of all kinds of development, making it the place to go for even the most experienced developers.

Mobile Design Blogs

These blogs will give you great tips on how to design apps and games that give users the best UX possible. Find out how to improve your UI and the overall look of your project with these blogs.

UXmatters

UXmatters will teach you everything you need to know about perfecting or improving the user experience of your app or game. This site was recently revamped and it’s looking great. This blog mixes opinion with tips and resources to give developers the chance to create great apps and games.

Yalantis

development-blogs-yalantis

“I’d say readers should read our blog because it provides insights on mobile app development, product strategy, and marketing. Our readers (mobile entrepreneurs mostly) can make better business decisions and build an app that stands out armed with our strong app design, development and marketing knowledge.
Our blog positioning is – Get insights. Make better decisions.”

How-Kotlin-Features-Improves-Your-App-Development-Process-byappsinvo

How Kotlin Features Improves Your App Development Process

In 2017, Google has introduced the new supportive programming language for the Android platform that is Kotlin. The growth level of Kotlin has already entered into a new dimension. The number of android developers is shifting & learning to kotlin accelerating. According to Google, more than half of the android app developers use kotlin to develop their android apps. It is one of the most used and popular programming languages globally. 

Moreover, it is presumed that kotlin might even transform how Java is utilized on the server. Android app developers have the knowledge to learn and brace the kotlin for app development and deliver a great user experience. There are many beneficial kotlin features in app development, we will discuss the same thing in this blog to enhance your android app development process. 

Kotlin features for the app development process

Before knowing about the features of kotlin, keep in mind that these are especially using for android app development. Therefore you should be familiar with the android studio from JetBrains. 

It is an Open-source

The first thing you must know about kotlin is an open-source programming language. Besides being open-source, kotlin also delivers a single-click tool using which app developers can convert current java code. And if you are a new android app developer new to kotlin and keen to learn it from the basics, we suggest starting with a beginner course available. 

It supports Full Java interoperability

The best and one of the significant features of android kotlin is its intense interoperability with java. This is what appealed to many developers to learn kotlin. It runs on JVM and also supports java libraries and tools, offering full java interoperability. App developers can easily assemble one android project in both languages with this function. This will allow app developers to switch the programming language rather than changing the code.

It follows the lazy loading feature

The lethargic loading feature boosts the startup time, which is super helpful while utilizing it for android development. To put it simply, it is the best solution for all app developers who want to prevent their app startup time from displaying their app’s content quicker. Using this feature, android app developers can load the only resources into primary memory which is necessary.

Collection filtering

While working with API, app developers need to handle collections quite often. However, using the kotlin collection filtering feature, it’s simpler to tell what your resulting list should include.

Extension functions

The extensions of the Kotlin language are useful as they permit app developers to add ways to classes without modifying the source code. In kotlin, you can include ways on a per-user basis to classes. Kotlin extensions avoid the need to have utility ways or categories that can improve your code’s readability dramatically. 

Prevents Crashes at runtime

This is the most advanced feature where it is simple to recognize while assembling your android app development project. This will guarantee that every variable works as a non-null and assist to prevent the number of crashes at runtime.

The final note

These are the top beneficial feature we have used to enhance the android app development process. These features will indeed give you a head start in your kotlin android development process. Yet if you have any queries, you can connect with the appsinvo team and ask them, they will help you out.