Mobile – Intellectsoft Blog https://www.intellectsoft.net/blog Wed, 20 Nov 2019 16:25:56 +0000 en-US hourly 1 https://wordpress.org/?v=5.2.4 https://www.intellectsoft.net/blog/wp-content/uploads/cropped-favicon-1-32x32.png Mobile – Intellectsoft Blog https://www.intellectsoft.net/blog 32 32 The Rise of Mobile Media: The 5 Best News Apps https://www.intellectsoft.net/blog/best-news-apps-the-rise-of-mobile-media/ https://www.intellectsoft.net/blog/best-news-apps-the-rise-of-mobile-media/#respond Wed, 02 Oct 2019 18:41:47 +0000 https://www.intellectsoft.net/blog/?p=17237 Here are 5 prime examples on how to do a great news app.

The post The Rise of Mobile Media: The 5 Best News Apps appeared first on Intellectsoft Blog.

]]>
The growing popularity of smartphones over recent years has changed how people read news and articles forever. In a change-or-die situation, media companies needed to adapt fast, creating comprehensive digital strategies. As smartphones became the cornerstone of our everyday lives, mobile apps needed to be at the center of those strategies. 

Today, many news apps showcase that a life without print editions and newstands (or only a small number of them), which might come sooner than later, may not be something readers and media companies should be concerned about. If they are properly made, news apps not only carry over the look and feel of newspapers and magazines to mobile, they also give the media new ways and angles to provide coverage, in one place and to a global reader base.

Here are five hand-picked news apps that deliver on that promise today. Use our list to get inspired for your own news app, find yourself a new news sources, or simply explore examples of all-around great mobile products. 

The New York Times (iOS)

Even if you prefer paper editions of newspapers over news apps, it is hard to deny that the New York Times did a great job of carrying over their long-established aesthetic and reporting to mobile. It is just that: the same New York Times, only more visually appealing and handy and available anywhere you want to read it. 

The user experience and design are outstanding: sections are well-organized (with quick access to Saved for Later and Recently Viewed), navigation is quick and simple, and the app’s clean visuals are really easy on the eye. Whether you want to quickly read the morning briefing or enjoy evening articles from the newspaper’s many sections, you will have a pleasant experience. 

Everything’s good under the hood as well: there are no crashes and bugs, and the pages load quite quickly even with poor internet connection. The app has ads, but they are non-intrusive and fit into the design organically. 

New York Times news appNew York Times news app

When it comes to sections, the New York Times app has it all: from the standard Opinion, World, Business and sport — to sections on health and wellness, entertainment and arts, as well as video and podcasts, among many others. You can also access the day’s paper in the corresponding section. 

With a well-produced “Immersive” section that is dedicated to AR and VR news content, the NYT doubles down on the notion that mobile and digital technology hold the potential to give new life to the media by giving readers new exciting perspectives and angles. 

Readers can access a limited number of articles for free every month or subscribe to one of the plans.

Al Jazeera English

Apart from its appealing and intuitive design, what makes the Al Jazeera app stand out is the emphasis on live news. They are quickly accessible in a video or audio stream and equally comfortable to watch on a smartphone or tablet. 

Al Jazeera understands the needs of modern users better than other media companies: the app has two more video sections alongside the Live broadcast — on-demand programming and documentaries. Other sections feature top stories, latest news, and  opinion pieces. 

Al Jazeera news app

You can personalize your feed in the “My Feed” section, which provide quick access to bookmarked topics, saved pages, and programmes. That being said, navigating Al Jazeera English is a breeze. Even on smaller screens, there is a lot of breathing space, and the sections are well-organized in general. 

Sections include: Arts & Culture, Business & Economy, Environment, Poverty & Development, Human Rights and more, as well as a separate section that covers different regions of the world. Readers can also access archived content. 

Al Jazeera English is free-of-charge. 

New Yorker Today

Like the New York Times, The New Yorker magazine has managed to go mobile with great success. Capturing the look and feel of the magazine really well, New Yorker Today serves three goals: delivers the latest news, opinion pieces, articles, and writing; provide quick access to the decade-spanning library ot its widely celebrated cartoons; give fast access to the magazine library with the latest and archive issues.

New Yorker Today News AppNew Yorker Today news app

Although its website and magazine app can stand on their own and can be used separately, New Yorker Today seems to be aimed at readers who want to access the most popular parts of the The New Yorker’s digital experience in one place. 

Sections:

  • Latest news and writing
  • Cartoon randomizer
  • Digital edition of the magazine (differs from the magazine app)
  • Bookmarks and history

There is a limited number of free-to-read articles and a range of subscription options available for readers.

Pocket

As far as news apps go, Pocket is not a typical media product. At its heart is a simple promise of letting users save articles and web pages for later reading and viewing, but it delivers on it to the fullest. If you read news alongside articles from different publications, but do not want to assault your eyes with the endless stream of headlines of news aggregator apps (or simply find the look and feel of Instapper uninspiring), Pocket will your top choice.

Pocket news app

Pocket is integrated with all popular browsers on desktop and mobile and with over fifteen thousand apps, making it quick and simple to save articles anywhere you find them. There are many instruments for managing them too. You can always locate the right article quickly with tags and a number of sections — all put together nicely in an extremely comfortable-to-use design. Other features include choosing the background color and highlighting text, listening to any article, and following friends to find out what they are reading.  

All of this comes for free, but you can get extra features like advanced search and fonts with the paid premium version. There is also a section of curated articles from numerous different publications updated everyday as well as a tool to look for them yourself across different categories. 

Pocket is continuously updated, bug-free, and the user experience is equally satisfying in the web app and native apps (although you cannot listen to articles in the web app). Interestingly, It is in-built into the Firefox browser and is owned by its creators, the Mozilla Corporation. 

TechCrunch 

The shiny look and handy navigation of TechCrunch’s website can be enjoyed in any browser, but you might just opt for the publication’s app instead. It bares the visual style of the website, but provides a more focused, personalised, and ad-free experience. 

TechCrunch tech news appTechCrunch tech news app

Following the latest tech news with the TechCrunch app is easy, fast, and comfortable. You can browse the headlines of the latest news and bookmark them right in the feed. One more section gathers topics of your choice in one place, and you can manage or stay notified about them right in this section. Finally, there is “Saved for Later,” where you can read the bookmarked articles. You can also access the latest TechCrunch videos at the beginning of the main feed. 

In sum, the TechCrunch app streamlines reading tech news to the maximum, delivering a snappy experience without ads, bugs, and free-of-charge. 

The post The Rise of Mobile Media: The 5 Best News Apps appeared first on Intellectsoft Blog.

]]>
https://www.intellectsoft.net/blog/best-news-apps-the-rise-of-mobile-media/feed/ 0
The 5 Best Mental Health Apps (& What Makes Them Succeed) https://www.intellectsoft.net/blog/best-mental-health-apps/ https://www.intellectsoft.net/blog/best-mental-health-apps/#respond Mon, 18 Nov 2019 15:53:46 +0000 https://www.intellectsoft.net/blog/?p=17541 We take a close look at the best products on the burgeoning market.

The post The 5 Best Mental Health Apps (& What Makes Them Succeed) appeared first on Intellectsoft Blog.

]]>
As apps for mental health are becoming more popular and the market is far from being saturated, building a mental health app may well become your next successful venture. To give you an understanding of what the market looks like and its many nuances, we hand-picked the best mental health apps available right now and pinpointed what made them succeed. 

We did not include Headspace and Calm, as these are highly popular and well-advertised applications, instead opting to focus on unique mental health apps recognized across different categories. 

Lets’ start.

BlueIce 

Category: Evidence based mental health apps for youth and kids

BlueIce is aimed at helping teenagers manage their emotions and prevent self-harm with a wide variety of different features. Available for both Apple and Android devices, the application was developed by Paul Stallard from Oxford Health NHS Foundation Trust (Foundation Trusts are NHS’s organizations with a strong local reach). To make it as effective as possible, teenager with lived experience of self-harm took part in the process of creating BlueIce.

Here are the key features:

  • Mood checker with notifications
  • Simple mood diary
  • Mood lifter with a set of proposed activities
  • Emergency contact numbers
  • Additional protection and privacy layer with PIN
  • Personalized sections
  • Smart safety checks for self-harm prevention

Now, let’s take a quick look at BlueIce’s biggest features — Mood Checker and Mood Lifter. 

The first relies on a “mood wheel”: a user chooses how they feel from a wide range of options on the wheel, take short notes, and then can identify mood patterns and triggers in the Mood Calendar across long periods of time. 

evidence based mental health apps

Meanwhile, the Mood Lifter section offers a comprehensive activity suite aimed at lowering stress. 

Here are its key components:

  • Music and photo libraries
  • Physical activities
  • Mood-changing activities
  • Mindfulness and relaxation exercises
  • Contact a friend
  • Negative thoughts spotting

evidence based mental health apps

BlueIce’s trial showed that the app can help teenagers manage their stress levels and self-harm urges alongside traditional face-to-face communication with a mental health professional. This and its comprehensive approach make BlueIce one of the top mental health apps available. The application is free, but prescription-only.

Cove

Category: Music Apps For Mental Health

Not everyone will enjoy writing down their thoughts into a mood journal, looking for other ways to improve well-being. Highly praised by top publications like Wired, The Next Web, and Guardian, the Cove app address that by offering simple music-making tools and eye-pleasing visuals designed for reducing anxiety and stress through self-expression. The process is easy: a user selects one of the six moods and then taps to choose chords, melody, and instruments (more than thirty are available) to create their own songs.

music mental health apps

Cove was developed with the help of clinicians and other medical experts as well as tested, evaluated, and trialed in the NHS and other health organizations. Although Cove won’t replace professional treatment, it can be used alongside talking therapy and counselling, or simply to relax for a few minutes and enjoy the process of creating music anywhere you find comfortable.

Users have met Cove with high praise, mentioning its therapeutic effect, that it helps to cope with negative thinking, and has easy-on-the-eye visuals. As for the media, Guardian called it one of the best medical apps, and Wired UK wrote that Cove will upend user expectations when it comes to what a journaling app can be (Cove can be referred to as a music journaling app). 

The app is available for free for iOS devices only. 

Xmed Health

Category: Social Media-like Apps for Mental Health 

Although social media platforms have grown to be stress-inducing for many users, people’s love for socializing online can channeled to alleviate modern stressors and solve other mental health issues. The Xmed app may be the best example of that, offering users a health and lifestyle mobile ecosystem, a social network, and artificial intelligence (AI) algorithms in one package.

Here is how it works: AI asks a series of questions to identify a user’s health issue, juxtaposes that data with available medical data and information provided by other app users, and arrives at a conclusion. The user can then start talking with certified mental health professionals to tackle the problem, as well as discuss it with people who have the same issue in the app’s in-built social media network. 

social network based mental health apps

Apart from its uniqueness and technological capabilities, the Xmed Health also has a well thought out flow, whose primary focus is to help a user solve their issue, beautiful design and animations, and gamification with levelling up and achievements. 

On top of all this, you can use the app to identify other health issues. making Xmed Health not only one of the best mental health apps, but also a solid health app in general.

Xmed Health is available in the Appstore. 

My Possible Self

Categories: Mental health therapy apps, Mental health tracking apps

My Possible Self promises to help its users lower stress and anxiety levels in eight weeks with a range of features backed up by clinically approved content. To deliver on the promise, the app offers over a wide range of learning modules aimed at various stress-inducing situations in life. 

The modules include:

  • Stress and overload management
  • Fear and anxiety management
  • Overcoming loss and big life changes
  • Problem solving
  • Happiness and well-being management
  • Tackling negative thinking
  • Returning to pleasant activities
  • Improving daily communication

The list does not end there, as the app’s creators continuously update it with different new modules. The first learning module is free, but to access the rest users needs to have a subscription. 

mental health therapy apps

Still, the app has a number of other aspects that make it one of the best mental health apps. There is a comprehensive mood tracking tool/dairy, created with the help of the company’s in-house psychologists. A user can track their mood daily, selecting how they feel and pinpointing activities, people, and places that influence their mood and well-being. 

Working alongside the tracking tool is the Mood History and Insights features that help users detect mood patterns and act accordingly to improve how they feel. The latter displays mood shifts in a comprehensive chart, showing the patterns and proposing potentially suitable lifestyle changes with the help of custom algorithms. What is more, users can add written notes and images to every mood entry — a small but nice touch that enriches the experience.

The content used in My Possible Self is clinically and statistically proven to lower stress and improve well-being in an eight weeks’ time. To ensure that, the creators partnered with a leading non-profit mental health research facility called The Black Dog Institute. 

My Possible Self was warmly received by users and praised by media outlets like London Evening Standard and Buzzfeed. Is is available both in the Appstore and Google Play.

Happify

Categories: Event based mental health apps, Gamified mental health apps

Happify has a lot to offer. The app uses a set of comprehensive features that rely on science-based games and activities to help users fight stress consistently across all life areas. 

At the app’s centre are Tracks, a section with stretches of different simple activities that help users improve their well-being on a daily basis. These include, for example, singling out small moments in your day that made you feel good and choosing a person to be thankful to. Every user has a progression scale for each track as well as six skills they upgrade by completing it: Savor, Thank, Aspire, Give, Empathize, and Revive. There over sixty available tracks for different aspects of life, part of them only through subscription.

gamified mental health apps

For those who want small bits instead of a long progression, there is an Instant Play section. Here, users can complete activities separately for each of the aforementioned skills. 

Other features include: 

  • Happify Daily — articles, videos, infographics, and other types of content related to improving emotional well-being
  • Community — a minimalist social network users can choose to be part of and share the activities completed for the skills with others
  • Negative Knockout — a game where you bring down your negative emotions in style of Angry Birds.

The feature list is bigger still. For example, the app offers a twenty-page character strength report for each user, compiled in partnership with The VIA Institute. Meanwhile, Happify’s approaches were developed by leading scientists and experts in positive psychology, cognitive behavioural therapy, and mindfulness. 

Happify was widely praised by users and media, including reviews in ABC World News and The New York Times. The company also claims that eight-six percent of their regular users report improved well-being in two month since they started using the app. 

Happify is available for iOS and Android. Part of the features are free, while the rest can be accessed by subscribing. 

What Makes Top Mental Health Succeed

There is a pattern to why the aforementioned mental health apps enjoy success — they all tick the same important boxes. Here are the success factors:

  • Mental health professionals should be involved in as many stages as possible
  • The app should have a diverse set of features for a user to choose from 
  • The features should be backed up by scientific research
  • The app should have its unique feature, or approach a common feature from a different angle
  • Mood journal is an important feature
  • Gamification helps to keep the users engaged
  • The app should have an appealing design

Now that you have taken a closer look at the top apps for mental health and what makes them so, you can start planning your own unique mobile product for those who want to tackle their mental health issues in a handy, clear, and pleasant way.

Good luck!

If you want to learn more about digital healthcare technologies, see some of our recent articles on the topic:

  1. Trends in Connected Health & Wellness Devices
  2. The Current State of IoT in Healthcare

If you need a consultation about your mental health app or other healthcare project, get in touch with our experts.

The post The 5 Best Mental Health Apps (& What Makes Them Succeed) appeared first on Intellectsoft Blog.

]]>
https://www.intellectsoft.net/blog/best-mental-health-apps/feed/ 0
Top 5 Unique Marketing Tools You May Not Know About  https://www.intellectsoft.net/blog/top-5-unique-marketing-tools-you-may-not-know-about/ https://www.intellectsoft.net/blog/top-5-unique-marketing-tools-you-may-not-know-about/#respond Mon, 23 Sep 2019 16:06:34 +0000 https://www.intellectsoft.net/blog/?p=17178 With a voice ad platform, legendary app builder, and more.

The post Top 5 Unique Marketing Tools You May Not Know About  appeared first on Intellectsoft Blog.

]]>
Whether you are seeking new ways to engage your customers, need to reach millennials in the right place at the right time, or want to get inspired to create your own unique marketing product, we have hand-picked five unique examples of stand-out marketing tools for different channels and purposes.  

A marketing director of an established brand with a young audience, an aspiring entrepreneur, a digital marketing manager, a senior-level manager at a big organization — everyone will find something interesting in our list.

Let’s start.  

Social Media — WeAre8 

WeAre8 is a unique mobile platform for influencers and micro-influencers that helps them connect with their favorite brands to get paid for sponsorships. Influencers download the WeAre8 mobile app, sync their social media accounts, and can receive sponsorships in a personalized feed. 

There are over thirty vertical feeds available, including fashion and style, technology, visual arts, music, and wellness and sports. 

There are three  ways to get sponsored:

  • Share branded content across social media channels
  • Watch and respond to videos from brands
  • Create unique content

After a user gets paid, they can cash out to a PayPal account, or donate to a charity of their choice.

Best marketing tools

WeAre8 positions itself as a people’s platform for those who want to have a solid side hustle. The platform partners with over thirty-six charities and donates five percent of brand spend as part of its business model.

Meanwhile, any brand working with WeAre8 has direct access to millions of influencers worldwide, with a combined social following that exceeds 1.2 billion users. 

Mobile — App Platform Mobile Roadie

Launched in 2009, Mobile Roadie is the first Do-it-Yourself (DIY), no-code app builder in the history of software development. Its creators recognized that mobile will become a powerful marketing tool, creating a universal, rich-featured, and intuitive app builder for businesses across industries. Mobile Roadie is still highly popular today, powering ups apps of Madonna, Dallas Mavericks, Wynn Las Vegas, San Diego Zoo, and more. 

digital marketing tools

The platform uses a drag-and-drop editor and ready-made feature modules to allow businesses to quickly build and customise native iOS and Android apps with unique design. It also includes a comprehensive content management system (CMS), and a data dashboard with insightful app analytics that let business learn more about their customers. 

Mobile Roadie’s pre-made features include:

  • Media: music, audio, video, podcasts, photos
  • Interactive map
  • Events and schedule 
  • Chat wall
  • In-app ads and purchases
  • Push notifications
  • Pop-up promos
  • Geofenced messages
  • Polls
  • Rewards,
  • Augmented reality
  • Beacons, and other features

In sum, a business gets a mobile presence, a set of engagement tools, and means to learn more about their users — faster and at a fraction of the cost as compared to custom software development. If a company wants to go above and beyond with their app, they can hire the Mobile Roadie team to do custom development as part of three different packages aimed at the look, functionality, and business needs.  

Content Marketing — Unsplash

Whether it is an enterprise or a new neighbourhood restaurant in New York City, Unsplash is a real find for marketing efforts in any company. If the inherent mediocrity of the likes of Shutterstock tires you, or producing quality visuals and photos for your content takes more time than your team has, Unsplash provides just the right solution. 

online marketing tools

Free of charge to this day, Unsplash started out as a place where professional, amateur and mobile photographers as well as visual artists uploaded their photos, both sharing and promoting their work (the user is always reminded to copyright the author when they download a picture, but it is not obligatory). 

At the start, Unsplash reminded a more slick and elevated version of Instagram without comments and influencers, where you could browse beautiful photos, finding something for a social media page of a small business like a coffee shop. 

While it successfully saved that allure, today’s Unsplash can cover the needs of the vast majority of industries, from embedded software development to building construction to island festivals. 

If you need a crisp, attention-grabbing image, Unsplash is a go-to platform: you can always find something to make your blog or social media post stand out from the crowd. 

Unsplash is also a forward-thinking platform: the like count was removed and the newly introduced monetization is organic, as businesses put advertising in Unsplash-styled photos in an intrusive way. 

Finally, Unsplash is just a pleasure to use wherever you click. 

Voice Advertising — Spotify Ad Studio

In a world that overwhelms your customers with visual information from all sides and screens, voice advertising is having a big moment alongside the enduring popularity of podcasts and music streaming. A properly put together voice ad is not only effective, but less intrusive as compared to different types of visual ads filling the numerous screens of your users. 

Part of Spotify for Brands ad suite, Spotify Ad Studio is a self-service audio ad platform that lets brands create great ads in three easy steps:

  1. Creating an ad. You can pass the script to the Spotify team, and they will record a voiceover, mix the music, and produce it at no extra cost. 
  2. Audience targeting. You target users based on their age, gender, location, activity, music or podcast taste, as well as choose on what platforms to air it. 
  3. Campaign customization. The last thing you need to do to launch the campaign is set a budget and dates. 

Key platforms include mobile tablet, desktop, web. Platforms like gaming console, connected TV, and connected car are available in some markets.  

There are also two advertising options aimed at Spotify Free users. With interest targeting, brands can engage users based on activities and topics they like (determined by their podcast, playlists, and platform preferences). The feature works in three categories — comedy, technology, and cooking. The second one is real-time context targeting, allowing brands to reach users at specific moments during the day, like a morning run or dinner. 

With a twenty-nine million ad-supported users and a set of measurement tools, Spotify Ad Studio may be a fitting choice for your next voice ad campaign. 

Cross Platform Ad Management — Adobe Primetime

business marketing tools

Today users watch TV on their mobile devices anywhere they want, as the classic TV experience has become a thing of the past. With advanced data tools and technology available, new advertising opportunities for broadcast and cable networks and other TV providers amount. 

Adobe’s advertising platform Primetime helps TV providers and their partners in a number of ways:

  1. Uses data and machine learning to help TV providers know their viewers better, improving ad targeting across platforms. 
  2. Creates smooth and personalized ad experiences without buffering and playback errors.
  3. Enables the providers to enforce intelligent authentication rules, reducing account sharing and driving revenue.
  4. Allows TV providers to operate at scale, ensuring reliable ad insertion at massive live events like the Superbowl.
  5. Allows for delivering video across all platforms in a single workflow and ensures consistent ad delivery across all screens.

Adobe Primetime is used by the vast majority of TV companies in North America. 

The post Top 5 Unique Marketing Tools You May Not Know About  appeared first on Intellectsoft Blog.

]]>
https://www.intellectsoft.net/blog/top-5-unique-marketing-tools-you-may-not-know-about/feed/ 0
Choosing the Best Framework for Mobile App Development – 2019 https://www.intellectsoft.net/blog/best-mobile-app-development-framework-2019/ https://www.intellectsoft.net/blog/best-mobile-app-development-framework-2019/#respond Fri, 30 Nov 2018 10:58:41 +0000 https://www.intellectsoft.net/blog/?p=17025 Choose the right framework for your project with our list.

The post Choosing the Best Framework for Mobile App Development – 2019 appeared first on Intellectsoft Blog.

]]>
In the era of smartphones, mobile app development is peaking across categories. Whether it is a game, a lifestyle app, or a retail application from a big name company, end users have a lot of digital products to choose from to fulfill their different needs. As a result, the market has become highly competitive, and developers often find it hard to choose the right framework for their upcoming mobile product.

To make things easier, we gathered a list of top mobile app development frameworks in 2019 that will help you choose a fitting framework for your mobile project. 

Best Mobile App Development Frameworks – 2019

Our list of the best frameworks for mobile app development includes the ones that will come in handy in 2019 and beyond. The tools you’ll get to learn in this post will fall under the following categories:

  • Most popular frameworks
  • Best frameworks for hybrid app development
  • Top framework for games development

Mobile App Development Frameworks Comparison

When one chooses a frameworks, a lot of questions arise. Which of the many available frameworks will ensure the best end result possible? What are the pros and cons of that framework? Does the framework have a community that supports it? The list of questions doesn’t end there. Our article will provide you with answers to these and other questions about the best mobile app development frameworks, so you can make a solid choice.

Most Popular Mobile App Development Frameworks

 

React Native

 

top mobile app development frameworks

Created by Facebook, React Native is one of the most popular mobile app development frameworks. It is an open-source platform which allows developers to build high-performance apps using native components while also cutting development cycles deployment time. Since its inception, it has often been regarded as the most popular cross-platform mobile app development framework.

Pros:

  • Modular architecture
  • Optimal performance
  • Third-party plugin support
  • Reusability
  • Code can be shared to different platforms
  • Developers can use their JavaScript knowledge to create native apps

Cons:

  • Memory management issues due to  its JavaScript background
  • Steep learning curve
  • Performance issues in apps with advanced functionality

 

Xamarin 

 

mobile app development framework

A Microsoft-owned tool, Xamarin is one of the best frameworks for cross-platform mobile app development and uses C# code and native libraries wrapped in the .Net layer. Xamarin allows developers to build apps swiftly and saves them time by reusing the tools and code on multiple platforms. Today, more than 1.5 million developers use this platform around the world to build highly-interactive applications. Also having a single code base for creating apps for every OS, it is one of the most preferred frameworks for hybrid mobile app development.

Pros:

  • User-friendly UI
  • Enables a frictionless mobile app development process
  • Comprehensive development environment
  • Code can be shared to different platforms
  • Cost-effective
  • Simplified maintenance

Cons:

  • Short learning curve
  • Does not suit apps with cutting-edge graphics
  • Compatibility issues with third-party tools

 

Flutter

 

Launched by Google, Flutter is a stand out amongst the best cross-platform mobile app development frameworks for a number of reasons. It is a software development kit designed for building high-quality native-looking apps for both Android and iOS with Google’s very own programming language, Dart. With the help of Skia (the engine that renders 2D) Flutter aids in developing the visual components for applications.

frameworks for mobile app development

Pros:

  • Lightning-fast speed
  • Lightweight components
  • Supports cross-platform mobile app development
  • Needs less testing effort

Cons:

  • Requires continuous support
  • Limited libraries

 

Appcelerator Titanium

 

mobile app development framework comparison

Appcelerator Titanium is an open-source mobile app development framework that enables developers to create native applications using web technologies like JavaScript, HTML, and CSS. The framework uses JavaScript, which allows for reusability of large amounts of code and building high-performance applications.

Pros:

  • Powerful cross-platform mobile app development tool
  • Robust and efficient
  • Rapid prototyping
  • Continuous support from the community

Cons:

  • Costs rises if every new complex feature
  • Not too flexible
  • SDK complications

 

jQuery Mobile

 

mobile app development frameworks

jQuery Mobile is a touch-optimized UI framework built upon the jQuery core. It allows for developing responsive applications accessible on mobile and desktop devices. jQuery Mobile integrates HTML5, CSS3, JavaScript, and AJAX into a single platform to help developers build mobile web apps with fewer lines of code.

Pros:

  • Short learning curve
  • Simplifies app store approvals
  • Good cross-browser and cross-platform compatibility
  • Great documentation and tutorials

Cons:

  • App do not feel or look like native applications
  • Limited capabilities as compared to native applications

 

Mobile Angular UI

 

best framework for mobile app development

Mobile Angular UI is a structural mobile app development framework that combines the best of Angular and Bootstrap 3 frameworks to allow for building HTML5 applications as well as simplifies the development process. To enable a great mobile experience, the framework relies on rich libraries like fastclick.js and overthrow.js.

Pros:

  • Offers mobile components not available in Bootstrap
  • Solid server-side support
  • Lightweight
  • Stable
  • Allows for desktop-to-mobile app conversion

Cons:

  • Poor documentation
  • Difficult to customize

Best Frameworks for Hybrid Mobile App Development

 

PhoneGap

 

popular mobile app development frameworks

If you plan to develop a hybrid application, Adobe PhoneGap should rank high on your list of best frameworks for mobile app development. PhoneGap enables developers to create robust and feature-rich applications in JavaScript, HTML5, and CSS3. Developers can also integrate various libraries and add more features to their applications.

Multple PhoneGap Build users may want to work simultaneously on the same application. This feature can be found in your app settings, under the Collaboration tab.

Pros:

  • Plugin-based architecture
  • No hardware-specific limitations
  • Multiple build users can work on the same app at once
  • Rapid testing and deployment

Cons:

  • Limited pre-built UI components
  • Not suitable for architectures with complex elements
  • Insufficient documentation
  • Limited memory management capabilities

 

NativeScript

 

best frameworks for mobile app development

NativeScript is an open-source framework regarded as one of the top hybrid mobile app development frameworks. It enables app developers to build and deploy native mobile apps for Android and iOS with a single code base.

Pros:

  • Angular 2.0 and TypeScript support
  • Native UI components and performance
  • JavaScript/XML can be used to build UI
  • Growing community
  • Faster access to Native libraries
  • Excellent performance

Cons:

  • Lacks some UI components
  • Cross-platform UI abstractions
  • The third-party community did not fully develop

 

Ionic

 

most popular mobile app development frameworks

One of the top mobile app development frameworks, Ionic is an open-source SDK which offers tools and services to build hybrid mobile applications utilizing web technologies like HTML5, CSS3, and SaaS. It is based on Angular JS and Apache Cordova, enabling developers to build top-quality hybrid applications and access different features of an OS, including camera, location, battery, etc.

Pros:

  • Great design and UI
  • Scalability
  • Cordova plugins 
  • Vast UI components base
  • Single code base
  • A large community of developers

Cons:

  • Steep learning curve
  • Lacking documentation
  • Does not suit apps with cutting-edge graphics

Top Mobile App Development Framework in 2019 — Game Development

 

Corona SDK

 

mobile app development frameworks

Corona SDK is the best framework for mobile app development when it comes to mobile gaming. It allows developers to build 2D applications and games ten times faster than other tools. It is supported by Lua, a light-weight programming language that offers speed, flexibility, and a seamless environment to develop fast-performance apps.

Pros:

  • Free of charge
  • Single code base
  • Over 500 APIs
  • Native UI support
  • Excellent documentation

Cons:

  • Not easy device testing
  • Developers need to learn Lua

Final Thoughts – What Is the Best Framework For Mobile App Development?

Of all the mobile app development frameworks available, these ten tools seems to rule the mobile app development industry in 2019. To choose the right framework for your app project, you should carefully consider its requirements and account for existing and possible challenges. The best-case scenario is a framework that helps you address all the project requirements, has a strong support community, and uses a language you and your developers are familiar with.  

The post Choosing the Best Framework for Mobile App Development – 2019 appeared first on Intellectsoft Blog.

]]>
https://www.intellectsoft.net/blog/best-mobile-app-development-framework-2019/feed/ 0
How Exactly Can a Chatbot Increase Company Revenue https://www.intellectsoft.net/blog/chatbot-can-increase-company-revenue/ https://www.intellectsoft.net/blog/chatbot-can-increase-company-revenue/#respond Tue, 14 Feb 2017 16:02:17 +0000 https://stanfy.com/?p=13965 If you want to build a business online, you’ll want to locate it where your customers are.

The post How Exactly Can a Chatbot Increase Company Revenue appeared first on Intellectsoft Blog.

]]>
If you want to build a business online, you’ll want to locate it where your customers are. You’ve heard about traditional mediums like blogs, forums, catalogs, social media platforms and maybe you even have an app for your company’s services. The important factors to consider are how much attention your customers pay to the sources and how much time they spend on each platform.

User retention for chat bots

In early 2015 we saw a new instrument caught the market’s attention – chatbots. And while business messenger Slack dominated the chatbot revolution, everybody was waiting for Zuckerberg’s Facebook to show up with their chatbot platform. So we’ve been waiting patiently and the miracle finally happened at F8 conference triggering the chatbot boom, which is still continuing today.

Now you may wonder when this craze is going to die down. It’s hard to say, but what we know so far is that they’re here to stay and they’re going to keep on revolutionizing.

But wait, Bogdan, what’s the big deal about chatbots and why is everybody talking about them?! It’s all about capturing user attention, which nowadays is focused heavily on messenger apps. Furthermore, bots are using Natural Language Processing algorithms and AI layer to communicate with you, messaging apps are the best place for them to live. Let’s try to figure out why.

Imagine you’re a media company like The Wall Street Journal, Business Insider or CNN. You’re making revenue by selling advertising and publishing sponsored content, while your main expenses are creating and distributing content. So let’s think a bit about distribution.

The open rate for mobile messages is a near perfect 98 percent, which is exponentially higher than the 22 percent rate emails employ.

Source: Scripted

Soon we’ll start seeing chatbots everywhere. You can start interacting with a chatbot by sending a message. Try it with CNN chatbot.

Cnn chat bot
CNN’s chat bot on Facebook Messenger platform

Let’s look at a different scenario – you’re one of Facebook’s chatbot partners 1-800-Flowers.com and you basically need to sell flowers online. You have a number of phone and chat support staff, helping you to take care of most of the routine work part of which can be automated with chatbots (powered by self-learning AI component).

Have a question about building a conversational bot for your business? We’ve already made successful bots for media companies and e-commerce businesses. Let’s move forward with your project. Lets talk.

There are over 10,000 in Taobao and over 100,000 small merchants in TMall, two of the largest e-Commerce websites in China. Most of them have less than 10 people working for a company, but they’re obligated to hire an extra person just for answering online enquiries from customers. That’s the exact pain point chatbots are aiming to solve.

Alex Cheung, Founder & CEO @ Kami.AI

We see a huge potential in customer service where you answer frequently asked questions in an automated way that I think is a cost gain so companies will need fewer agents, fewer customer service agents who are typing the very same answers to everybody.

Ákos Deliága, CEO & Co-founder @ Talk-A-Bot

In the first two months after introducing its Facebook chatbot, 1-800-Flowers.com reported that more than 70 percent of its Messenger orders were from new customers. These new customers were also generally younger than the company’s typical shopper, as they were already familiar with the Facebook Messenger app.

1-800-Flowers chat bot
Ordering from 1-800 chatbot interface in Facebook Messenger

Chatbots Aren’t Just Built For Millennials

Data from Business Insider shows us that chatbots are pretty popular amongst users from 18 to 55 years.

US Chat bot usage among Millennials and Get Xers

How Exactly Are Chatbots Going To Make Money

With payments integrated directly into the chatbot, you can use it in retail, consulting, hotel reservations and many more. Here’s a list of business models that would benefit from the application of chatbots.

Pure retail sales bots

Retail is one of the most straightforward experiences you will find amongst chatbots. You can imagine stores like Wal-Mart, Harry’s, Target and Amazon creating bots where people can ask them if they sell something like “Shampoo” or “Hammer” and the bot responds with prices and a “Buy now” button. Take Amazon’s Alexa for example: right now you can ask Alexa to re-order the goods you bought last week on Amazon! The user will make the purchase directly through a chat with the bot and it will act in a similar way to a transaction from a typical website, but it will be done in the palm of their hand.

We are able to learn quickly from the orders history, so we can turn the bot into a productivity bot. Based on the individual user shopping habits the bot is able to predict what the user would buy, so the cart will already be prefilled with products the bot will pick.

Cloderic Mars, CTO @ craft.ai

Bots + sponsored & native content

Native content and advertising is a trend that has been soaring over the past few years thanks to the likes of BuzzFeed, VICE, Huffington Post, Business Insider and more. Native or Sponsored content is a model in which brands pay to have their content distributed by media companies directly into their channels in a way that is often viewed as content created by the media outlet rather than a brand.

Now imagine you’re using a Cooking Bot. While the bot will tell you that swapping Cumin for Coriander is okay in a certain recipe through its native function , it will also send you an article that talks about “5 Exotic Meat Recipes That Will Please Your Guests.”

Bots for research

Wondering what millennials are thinking about the Presidential Election?

There are bots that you can pay to do the research for you. Bots like DisOrDatBot are already asking people simple this or that questions, as you can see in the example above.

DisorDatBot research poll chat bot
DisorDatBot chat bot interface

Now, imagine you’re an event planner and are trying to determine which music act you should try to book for your city. Rather than using an expensive research firm or inaccurate focus group, you can run a research campaign with DisOrDatBot and ask users in your city whether they prefer Radiohead or Nickelback.

Bots for lead generation

Lead generation businesses are like the Wild West of the online world.

  • Create a landing page.
  • Acquire targeted leads.
  • Sell leads to producers.
  • Profit.

In the near future we will see chatbots that act as lead generation businesses with an initial focus on content. The chatbots will deliver insights and information to users who are looking for advice about home ownership, insurance, weddings or finances and then pass along user information to various businesses who sell services and products that line up with the content they’re delivering.

For example, imagine you’re talking to the “Shopping Bot” and start engaging in a conversation about home buying. As the discussion continues, the bot gathers information like the amount of cash you have for a down payment, where you want to live, whether you’re employed and whether it’s your first home. After building this relationship, the bot asks you:

Could I pass this along to someone to get in touch?

You agree and the bot then passes your information along to a Real Estate company in your area. The Real Estate company follows up with you the next day and the bot company gets paid for the lead.

One of the greatest added values of chatbots is using them for generating prospects. You can reach your potential clients directly where their attention is (messengers) and present them your newest products, services or goods. When a customer would like to purchase a product/service, he/she can make the purchase within the chatbot, including the payment process. Bots, like 1-800flowers.com, eBay, Fynd have already proved that.

Julien Blancher, Co-Founder @ Recast.AI

Here’s the updated lead generation process, but using a bot:

  • Company Creates Lead Generation Bot.
  • Bot Validates The Lead.
  • Lead Passed To Company.
  • Commision Paid By Company To Bot.

Cost per conversation/task

People want advice and are always willing to pay for it.

As bots become more sophisticated, I expect people will be willing to pay to have conversations with the bots that can help them with miscellaneous challenges in life. For example, you could talk to the “Oprah Bot” if you needed life advice, the “Mechanic Bot” for information on your car or the “Marriage Bot” if you wanted anonymous marriage counseling.

Marriage counselors can charge anywhere from $75 to $200 or more per hour depending on where you live, the experience of the therapist, and the type of setting.

Ready to build a conversational bot for your business? We’ve already made successful bots for media companies and e-commerce businesses. Let’s move forward with your project. Contact Us.

Summary

This is just the beginning. What we’ve looked at is just a snapshot of a technology which is capable of changing not only small businesses, but also major industries into slick, effective mechanisms. Artificial intelligence will become smarter, the response of natural language processing will become faster and many processes will become much easier, like arguing with Comcast for example. Just kidding.

Please share your thoughts in the comments section.

Illustration by Alina Kropacheva

The post How Exactly Can a Chatbot Increase Company Revenue appeared first on Intellectsoft Blog.

]]>
https://www.intellectsoft.net/blog/chatbot-can-increase-company-revenue/feed/ 0
How We Improved Node.js Server Response Time by 100 Times https://www.intellectsoft.net/blog/we-improved-node-js-server-response-time-by-100-times/ https://www.intellectsoft.net/blog/we-improved-node-js-server-response-time-by-100-times/#comments Thu, 02 Feb 2017 16:38:53 +0000 https://stanfy.com/?p=13937 Imagine that you’re building an outstanding mobile application that needs server side support for certain features, like syncing user data or showing posts from other users.

The post How We Improved Node.js Server Response Time by 100 Times appeared first on Intellectsoft Blog.

]]>
Imagine that you’re building an outstanding mobile application that needs server side support for certain features, like syncing user data or showing posts from other users. Your app is useful and full of animations. However, sometimes it looks laggy while it’s performing server requests; maybe the server is slow, or it often responds with errors. Of course, most users don’t understand the real reason behind lagging – next time when they see a “network error” message, they remove your app, give you a ★☆☆☆☆ rating and write negative review.

Special thanks to @tanzor for his hard work on investigating server performance.

You can solve this kind of problem in two ways: either using optimistic models in your app and avoid showing a “network error” message, or improving your Node.js server performance. The following advice is based on our experience of improving backend servers for some of our mobile apps.

If you are an experienced backend developer, the following tips may be too obvious for you, but you may still find some inspiration!

Given Infrastructure

Imagine an Ubuntu server, full of Docker containers: one container is Node.js web-server, another one is NoSQL database, the last one is nginx “to rule them all”. A typical MEAN-ish stack.

This server is used for serving app requests, doing some business logic, reading and writing data to a database, sending push notifications, etc. Not HighLoad, not BigData. Jus a modest REST-API server.

Simplified server environment
Simplified server environment

We can always try to improve server performance no matter how simple the server structure and business logic are.

What to improve

Of course, you can’t blindly change something, hoping that this will lead to improvement. Measure the change!

We use different monitoring tools to collect server metrics. The most important metric for us is response time, which describes how fast the server responds to app requests. Basically, everything affects the response time, from outdated hardware to inefficient code.

Optimizing database

We believe that databases are the core of REST-API servers and their performance affects the whole server performance.

The one and only basic database theory sounds like this:

We always tend to write data irresponsibly, carelessly, thinking we can just let it hide in the background, but when it comes to reading data, you don’t just need the data itself, but also performance and operations on data.

Performance and ease of operations on data is directly proportional to the amount of thinking time spent while recording the data. Understanding this fundamental principle allows you to predict and affect future database performance.

Upgrading to MongoRocks

One huge step forward for us was upgrading the storage engine for MongoDB from WiredTiger to RocksDB. We used MongoRocks to connect MongoDB to RocksDB engine. Parse folks recommend using MongoRocks for Parse Server backends, but it may suit your backend too, please follow their guide for more details.

RocksDB has been used with fast storage to support IO-bound, in-memory and write-once workloads. In addition RocksDB is fully open sourced and flexible to allow for innovation. We used Percona Server as our storage provider.

RocksDB is maintained by Facebook

The migration was simple:

  1. Install and run Docker container of Percona Server for RocksDB, link the database to the custom port that differs from current MongoDB’s port.
  2. Create a backup of current database.
  3. Deploy a backup to RocksDB, verify data.
  4. Change RockDB’s port from custom to the original one.
  5. Enjoy!

Updating database indexes

Any indexing strategy is based on two things: how the data will be read and the advantages/disadvantages of each type of indexing. Of course, the need to keep indexes up-to-date is a known rule.

When we are adding new user features to the mobile app, we need to update the database model accordingly. It means that we may need to update indexes too. However, users don’t update their apps quickly: along with the new features you also need to support old ones, and thus you get old requests and old indexes.

Even when most users have updated their apps to the new versions, we tend to forget to remove old indexes, which leads to slower performance. Eventually, we created a configuration file for storing indexes and a script for updating them efficiently.

Mongo indexes configuration and script

Removing debug logs

Although storing debug logs in the primary database doesn’t sound like a good idea at all, some developers tend to put everything in one bucket. Server performance depends on database performance, but when the database is full of debug data, transactions take a longer time to run.

Mixing up debug logs and user-generated content may slow down database performance

It’s important to distinguish user-generated data from service data (OLTP vs OLAP), and to handle them with the appropriate instruments. If you need to store and analyze a lot of logs, take a look on the ELK stack, or create a separate database for tracking user activities.

Furthermore, cleaning old and unneeded logs helps to keep your database healthy.

Removing old files, cleaning up a database

No need to explain: some data has an expiration time, so it can be removed after that. If you don’t remove old data, sooner or later your collections will look like a dump. No one wants to search for valuable data inside a dump.

We don’t remove data manually, instead we’ve created cron jobs to remove it once a week.

(The tricky question is: how to understand what data can be removed without consequences. It totally depends on your product and the logic behind it.)
[custom_form form=”form-inline-subscribe” topic=”Development”]

Optimizing requests

Grouping requests and minimizing transferred data

Users prefer simple interfaces, especially when they need to fill in a lot of data. Splitting large forms into several simple steps improves UX and makes users happy, but sending server requests on each screen is overloading the server.

Instead of sending multiple requests, the app should remember the user’s choice and store it until the user completes the form. After that the app sends all input data in a single request. Of course, this strategy doesn’t suit every situation, but consider it next time.

A similar idea is request cancellation. Let’s imagine that the user presses the ‘like’ button multiple times; instead of sending a ‘like’ request for every tap, an application should cancel insignificant requests and send the resulting value only. This approach requires more time and wise thinking, but it’s easy to implement: you can read more about it in the Optimistic Models Part 2 post.

Compartmentalization is the idea of accessing only the required data

From the other side, the server should send only the required data. Compartmentalization is the idea of limiting access to information only to those who need it now. For example, if the application needs to display the user’s photo and name, the server should send the minimum required information, instead of sending the whole user record stored in the server database.

Results

Using the techniques described above we decreased response time by 100 and improved the Apdex Index from “unacceptable” to “excellent” (according to the NewRelic monitoring).

Screenshot from NewRelic dashboard

Of course, those techniques may not suit for your backend, however they are based on the simple ideas:

  • manage data carefully;
  • do not store unneeded data;
  • minimize traffic.

Let us know what techniques do you use to keep your servers in shape!

The post How We Improved Node.js Server Response Time by 100 Times appeared first on Intellectsoft Blog.

]]>
https://www.intellectsoft.net/blog/we-improved-node-js-server-response-time-by-100-times/feed/ 3
What are the advantages of using Android on your device? https://www.intellectsoft.net/blog/advantages-of-using-android-on-your-device/ https://www.intellectsoft.net/blog/advantages-of-using-android-on-your-device/#comments Wed, 12 Oct 2016 10:39:42 +0000 https://stanfy.com/?p=13783 Every other year, the computer industry doubles the amount of transistors per silicon chip, thus creating more powerful devices that have a smaller footprint on a board.

The post What are the advantages of using Android on your device? appeared first on Intellectsoft Blog.

]]>
Every other year, the computer industry doubles the amount of transistors per silicon chip, thus creating more powerful devices that have a smaller footprint on a board. Current SoC components are powerful enough to have the power of a Cray-2 supercomputer or even an IBM Deep Blue in your pocket. Just look at the performance of Qualcomm’s latest chip, Snapdragon 820, that is powering the new generation of smartphones.

With more power on a device we can use more complex software stacks like Android, instead of sticking with Linux. Such an option is good to consider because of commoditized mobile hardware components, the developer ecosystem, the availability of modern development tools, and the ease of use of network and telephony stacks.

Below we’ll look at these arguments in greater detail.

1) Commoditized mobile hardware components

The smartphone industry has grown exponentially since the introduction of iPhone and Android in 2007 and 2008. We all saw fierce competition between hardware manufacturers for better specs, during the past decade. Hence the accompanying growth of ARM architecture usage.

ARM even has enough performance now to run data centers from its chips instead of using x86 Intel architecture.

Google Trends chart, Intel vs ARM

Mobile hardware components, CPUs, GPUs, Memory, and Sensors are all packed into one SoC component which you can use as a ground base with which to build the whole computer from just one silicon chip.

The majority of modern high-end smartphone devices are comprised from Qualcomm, Samsung Exynos, Huawei HiSilicon Kirin, and other chips which use an ARM RISC instruction set.

Price and the mass availability of these components plays an enabling role for industries producing drones, ARM server-based solutions, connected medical devices, in-car systems etc. to rise and form a second wave of technological miniaturization.

If you are thinking about your own build of Embedded Android that was built from AOSP or any other open-source version just drop us a note.

2) Proliferation of Android developers

A couple of factors have played a role in the training of a gigantic fleet of Android developers who are working in the industries:

  • An ecosystem which has grown around Google Play Market with millions of apps that have been created during the last 8 years.
  • The availability of online courses for Android, like Udacity Android Nanodegree.
  • The increased availability of Java developers who can easily start programming for Android.

Recently, Google announced free training courses in India for two million people, which means that there will be more developers available for hire.

So there is a vast supply of Android developers and they already familiar with Android SDK, Android building blocks and their user interface principles.

3) Availability of Modern Android Development Tools

The Android ecosystem has a full set of tools that developers need on a daily basis. Android Developers SDK, Android Studio IDE, compilers, debuggers, emulators and all the other toolchains that you might need for a low-level development, testing and debugging.

The more readily available the tools, the easier it is for developers to start playing with Android, and the more developers will join the app development ecosystem.

4) Ease of connectivity and process management

Android was built with an always-on connectivity in mind, thus tuned for the wireless networking and telephony stack – GSM, CDMA, LTE – with VoIP calling already integrated.

Using Android is like having the network with all the necessary security layers right out of the box, without any need to set up and configure it.

5) Millions of available apps

Another point in favor of Android is the availability of millions of Android apps that you can install on the device from the Google Play store and other alternative stores.

Your new device could easily become a platform for third party app developers and it will form your own ecosystem with apps, which could dramatically enhance user experience and value for your customers.

Does it make sense to use Android on your custom device?

In short, the answer is “Yes”. If it’s not your first time looking for a software library or tool, you will probably recognize the next list.

  1. Estimate popularity of the tool in question, e.g. how many developers and companies are really using it in production and the size and output of the companies in questions.
  2. Look at the size of the community around the tool.
  3. Make a decision

In the case of Android we have both of these – the community is growing exponentially and big companies are using the platform for their devices (see the example in our first part of the guide).

Some other questions you may wish to ask, include how stable is the platform and where is it heading in terms of development direction and Google leadership?

With Android, critical security issues are always fixed rapidly and they are constantly merging into the main AOSP source tree.

Over the past few years there has been ongoing work towards upstreaming Android Linux Kernel, so that AOSP can always use the latest long-term support Linux Kernel. The process is not yet finished, but it is doing well under the Linaro team. Linaro also launched its 96Boards effort, so the latest AOSP source tree already includes support of HiKey Lemaker board right from the box, and others are coming soon.

This all goes to show how the Google Android and Linux Kernel communities are decreasing the gap and moving to a better and more secure version of Android, as well as opening it up to easier adoption for custom-made devices which don’t rely on proprietary drivers from hardware vendors.

Next Steps

This article is a part of our Embedded Android from AOSP: A Complete Guide that describes the Android potential for device makers.

If you’d like more information about embedded Android, you can read our article about available open-source Android ROMs or learn how to build Android from AOSP.

Illustration by Alina Kropacheva

The post What are the advantages of using Android on your device? appeared first on Intellectsoft Blog.

]]>
https://www.intellectsoft.net/blog/advantages-of-using-android-on-your-device/feed/ 1
Custom Android Builds: Tools and Techniques for Manual and Automated Tests https://www.intellectsoft.net/blog/testing-of-android-custom-firmware/ https://www.intellectsoft.net/blog/testing-of-android-custom-firmware/#comments Thu, 15 Sep 2016 13:30:29 +0000 https://stanfy.com/?p=13678 All code changes provoke some kind of effects and we need to know how these changes impact on general  functionality.

The post Custom Android Builds: Tools and Techniques for Manual and Automated Tests appeared first on Intellectsoft Blog.

]]>
All code changes provoke some kind of effects and we need to know how these changes impact on general  functionality. Android apps are working with a limited memory, CPU power and flashing new ROM associated with some changes inside AOSP, so in this case it is very important to debug, test and optimize your new ROM. Having a reasonable test coverage for your new AOSP helps you to enhance and maintain the whole system and to deliver a high-quality product.

Installing a new ROM is a huge gamble for your fleet of Android devices, because you don’t want to brick them or cause broken system features, so it’s highly recommended to run hardware and performance tests. These test runs will allow you to determine whether or not your tablet is stable enough for daily use.

This article is a part of a bigger guide about Embedded Android that intends to cover a broad set of topics about using Android as a platform for embedded devices.

Before we begin, we need to decide what elements we want to test. In our case, there are three things we’re going to be focusing on:

  • Software
  • Hardware
  • Android Compatibility

Our goal is to ship a high-quality product which is working smoothly, has a great battery life, no crashes, works with all Android apps, delivers  great performance, etc. So let’s define what we want to test.

Software

Firstly, we need to make sure that a new ROM contains our changes and works as we expected.

Secondly, we need to check device performance (e.g. graphics rendering, UI smoothness, loading time, etc.)  because this is one of the biggest problems on mobile devices. More CPU power means less battery life and vice versa, so we want to know if a new ROM has optimal settings.

If you are looking for the help with customization of your own build of Embedded Android that was built from AOSP or any other open-source version just let us know.

Hardware

Because of the huge amount of different devices we need to have a clear list of features that require testing. In our Bus Stop example we need to check:

Multimedia:

  • Audio – For playing sounds/music or voice response for disabled people
  • Video – For displaying ads or useful information

Networking:

  • 3G/LTE connection – For updates and downloading new content
  • Wi-Fi – For updates and downloading new content

Sensors:

  • Accelerometer – To display UI in proper orientation
  • Gyroscope – To make ads more interactive
  • Light – To adjust the screen light during the  day

System:

  • Camera (photo, video) – Can be used for interactive ads
  • OpenGL ES – To display HD graphics
  • Touch screen – To have control over the device
  • Storage (read, write) – To store content and apps
  • CPU, GPU – To make sure ROM works smoothly
  • RAM usage – To prevent overload and memory leaks

Compatibility

Any changes in AOSP can cause problems with running native apps. In this case we need to make sure that nothing is broken. To solve this problem you can run Google Compatibility tests. This test set can be performed manually and on CI.

Google provides predefined plans:

  • CTS — all tests required for compatibility
  • Signature — the signature verification of all public APIs
  • Android — tests for the Android APIs
  • Java — tests for the Java core library
  • VM — tests for ART or Dalvik
  • Performance — performance tests for your implementation

These tests produce reports with boolean True/False conditions for each test case. You’ll get a short explanation if something went wrong.

Manual Tests vs CI Automation

So now we know what we want to test, it’s time to decide how we’re going to run these tests.

There are two ways to run such tests: manually or using CI automation.

Manual Tests

The manual method is a fairly simple and very fast way to verify your ROM. Everything  you need is already implemented, so just download the app and you’re ready to go with your hardware testing. On  the other hand manual testing requires more effort, attention and planning. Also manual testing involves running apps for testing by your own hands. You need to download, install, run, click all menu items and analyze test results to make sure they match the expected results. This is not a problem  if you only have  a couple devices with a new ROM, otherwise you’re in trouble.

If your device farm has a lot of different devices and new ROM versions are released regularly,  you are going to need automation. There are a couple ways to implement a test suite and none of them are easy or fast.

Google provides free compatibility tests for different OS versions which can provide you all information about basic hardware/software checks.

Continuous Integration Tests

Another way of freeing yourself from manual testing is to  implement automation cases for your custom apps. For example you can write test scripts which will follow the same steps  you are taking manually, e.g. installing test app, running it, clicking menu items from your test plan and displaying report. The most efficient feature you could implement is “one click testing”, where you press the “Start” button on CI and simply wait for the results.

In an ideal world you would have a full-stack automation process, such as:

  • Build a new version of ROM
  • Flash device with this ROM
  • Run Hardware/Software/Compatibility tests against new ROM version
  • Check results

Building a suite like this makes sense if you have a huge project and want not only to save time, but also to ensure efficiency of work, distributed team, regression and long testing cycle.

How to get and install test apps

Let’s discuss some options for manual checks. There are two ways to install the required apps  for testing your new ROM: using Play Market or ADB (or any other tool). Obviously, to install an apk file you first of all need to get hold of it.

One of the easiest ways to download an apk file is using an online downloader. For example you can use the Apkpure site. Simply copy a link to an app from Play Market and paste it to the Apkpure site.

Copy url to download the apk file

You need to copy a link to the app from the browser here.

Pasting url to apkpure website

Paste link recently copied from address line to the search field on Apkpure.com website.

You’ll have an *.apk file a few moments later. Please make sure your device is connected via USB and turn On USB Debugging mode. Run command below once it is ready to install the selected app.

$ adb install path/to/app.apk

So, let’s review a couple Apps in the Google Play market which can help you to run system-wide Android ROM tests against your build that run on your device.

How to run tests

In this section we want to understand how to run tests manually using the apps and tools we have chosen.

Here we want to focus on tools available “out of the box” which do not require any additional configurations or support. The following apps have basic functionality and high productivity.

AnTuTu Tester

AnTuTu Tester is a hardware tester for android. This tool is good for performing basic checks (e.g. making sure that all device sensors are alive or that multi-touch is working fine) and it allows you to test:

  • Battery –  App asks you to keep your device on and performs stress testing to calculate a score.
  • Multi-touch – App displays a number of touches on the screen, so you can make sure this functionality works as expected.
  • System information: Includes info about CPU, GPU, Memory, SD Card, Screen, WiFi, GPS.

The app also includes a built-in benchmark test, so you can see how your changes have affected performance.

AnTuTu Tester

Z-DeviceTest

Z-DeviceTest lets you check your Android device sensors’ “health” in an intuitive and comprehensive way, offering in-depth analysis of all the characteristics of your device.

The app works in a fairly similar way to the  AnTuTu Tester, but it requires Google Play services to be installed on the device to run.

Z-DeviceTest

This app allows you to:

  • Check manufacturer’s technical information.
  • Test functioning of all your sensors, like accelerometers, gyroscopes, magnetometers, barometers, etc.
  • Measure the accuracy of each sensor.
  • Test NFC near field communication.
  • Test Barometer.
  • Test detection of Navstar satellites.

The app includes data about more than 600 different devices, so you can compare your score with other devices and ROMs.

Sensor Box

This app is made by IMOBLIFE INC and essentially performs the same functions as the previous two, but it has richer graphics. Every device sensor has a specific 3D illustration of its work (e.g. ball on a table for gyro sensor, or flower which grows if light sensor works), so it very clearly demonstrates the  working principle of each sensor. This is a cool tool if you need to show your users or clients how beautifully your new ROM works.

Sensors included:

  • Gyroscope
  • Light
  • Orientation
  • Proximity
  • Temperature
  • Accelerometer
  • Sound
  • Magnetic Field
  • Pressure

The app will show you all available sensors immediately after launch. If you assume there are going to be some hardware issues during development or alpha testing and want to have an easy way to check, this app will help you.

As you can see from the screenshot, we have some unavailable sensors and the app detected them immediately.

Sensor Box

One more important thing to consider is performance and battery life. All manufacturers have to figure out a way to balance great performance with long battery life. This challenge will affect you as well and you need to be ready to test it.

Geekbench 3

This is a well known cross-platform benchmark. Basically, the app displays a score based on CPU/GPU performance. It might be useful to check this score with the native ROM and with your custom ROM and compare results. It could help you to find out whether  your ROM has suffered a loss of performance. The app also allows you to store benchmark results online and compare them with the same devices across the world.

Geekbench 3 simulates real-world scenarios and quickly and accurately measures mobile processor performance.

Geekbench 3

Battery Indicator

This one is a tool to monitor battery drain. The app displays:

  • Estimated time left to discharge.
  • Temperature.
  • Voltage.
  • Charging or discharging velocity in percent per hour.
  • System’s information about what drains your battery.

testing_app_battery_indicator_1-2

It allows you to monitor how your new ROM works with the battery and fix some leaks at the very beginning of development.

Google Compatibility Tests

Google Compatibility Tests (CTS) is an official tool recommended by google, so you can be sure your Android will work as expected and it will also help you to receive google certification and eligibility for GMS. This is a cool tool for automations, which you can also use during manual testing.

You can run CTS from Terminal in scope of manual suite and then check result manually, as it provides results that can be read by humans. This is a JAVA based tool, so you need to make sure JAVA 6 is installed. Also, you need to download CTS for a specific platform version. Here is an example of how to run it from Terminal:

$ path/to/android-cts/tools/cts-tradefed

$ run cts --plan PlanName

You’ll see results in Terminal after a couple minutes. It’s maybe not that convenient to have to read all logs manually, but the information might sometimes be useful.

There is no major difference between all these apps in Play Market and any of them could check your device, but you need a strong Test Plan to follow. You can’t avoid mistakes altogether when performing manual tests, but your challenge is to reduce them as much as possible.

Summary

As result of our testing, we will know the general condition of a new ROM and have the confidence that our shipped product is stable, matches our acceptance criteria and is ready to be used by end users. Don’t try to bite off more than you can chew. Just play around with tools, methods, some best practices and compose your test suite for your own needs. It’s not possible to test everything, but you always need to keep in mind the things we have just discussed, such as:

  • Hardware.
  • Software.
  • Compatibility.
  • Test plan.

Focus on having a straightforward process that defines the workflow of development and which has been covered as much as possible with tests. The main aim is to end up with a happy customer and users who like your product.

The post Custom Android Builds: Tools and Techniques for Manual and Automated Tests appeared first on Intellectsoft Blog.

]]>
https://www.intellectsoft.net/blog/testing-of-android-custom-firmware/feed/ 2
Open Source Android ROMs You Can Use For Your Device https://www.intellectsoft.net/blog/open-source-android-roms-you-can-use-for-your-device/ https://www.intellectsoft.net/blog/open-source-android-roms-you-can-use-for-your-device/#respond Tue, 06 Sep 2016 12:13:43 +0000 https://stanfy.com/?p=13631 One of the most important tasks faced by hardware developers is choosing the right operating system "flavour" to run.

The post Open Source Android ROMs You Can Use For Your Device appeared first on Intellectsoft Blog.

]]>
One of the most important tasks faced by hardware developers is choosing the right operating system “flavour” to run. While for many vendors selecting Android is a no-brainer due to its open nature and popularity, inside its ecosystem there are a number of different firmware builds to choose from.

The device’s firmware, also known as ROM (read-only memory), defines how the user will interact with your device, as well as what features will be available both to the developer and the consumer.

In addition to the “official” open-source Android ROM known as AOSP (Android open-source project), there are quite a few ROMs, built mostly by enthusiasts, that differ from the original in a variety of ways. Custom firmware could be optimised to run on older and less powerful chips, to be focussed on the security and privacy of the users, or to allow for deeper customisation, and so on.

We’ve taken a closer look at a few open Android firmware projects that everyone can modify and use to power their own hardware.

This article is a part of a bigger guide about Embedded Android that intends to cover a broad set of topics about using Android as a platform for embedded devices.

CyanogenMod

Image credit: Android Police

Arguably the most well-known Android-based custom firmware, CyanogenMod has travelled the path from yet another open-source ROM developed by a few enthusiasts to a piece of software with a company behind it, which profits from contracts with hardware vendors.

Developed by Steve Kondik, aka Cyanogen, in 2009, the ROM was initially an enhanced version of another piece of custom firmware, and only worked with HTC Dream (known as T-Mobile G1 in the US). It gained significant popularity among the enthusiast community, with more developers joining the team in the following months. Since then, the user base of the firmware has been growing steadily.

The latest stable version of the AOSP-based CyanogenMod is built upon Android 6.0.1 Marshmallow, though it’s not available for all 571 supported devices. The versions based on Android 4.4 KitKat and 5.0 and 5.1 Lollipop are also still supported.

The ROM’s main advantages compared to the “stock” Android and AOSP supplied by device vendors or Google include screen calibration possibilities, advanced gesture support, app-level permission control, sound and interface customisation, button actions assigning, and much more.

Over the years, CyanogenMod has seen a number of controversies, connected first of all to its commercialisation, as well as to the actions of Cyanogen himself. In 2011, Kondik joined Samsung as a software engineer, but kept working on his Android ROM in his spare time. In March 2013, he left the Korean tech giant.

Nearly half a year later, Kondik announced that he had raised $7 million in venture funding for his new company, Cyanogen Inc. The announcement was followed by a lively discussion within the CyanogenMod developers’ community, some members of which thought that their volunteer work had been used by Kondik to make profits. They were also concerned that the source code of CyanogenMod could be closed, which never happened in the end.

What did happen, was that a number of contracts with phone manufacturers were won by CyanogenMod. Among the smartphone models shipped with the CyanogenMod OS were Oppo N1, OnePlus One, Wileyfox Swift and Storm, Alcatel Onetouch Hero 2+, Yu Yureka, and many more.

Cyanogen Inc. has recently gone through a significant staff cut, in which “roughly 30 out of the 136 people” it employed were laid off. There are rumours on the market that the commercialisation of the OS has proven to be less lucrative than expected, and chances are that soon CyanogenMod will be developed exclusively by community volunteers again.

The firmware is distributed under the double licence—Apache License 2 and GNU GPL v2—which allows use and distribution of the software without closing the source. Like many other ROMs, CyanogenMod used to be distributed with pre-installed Google-made apps like Gmail, Search, YouTube, etc. This is no longer  the case, however, as in 2009 the corporation reminded the developers that these apps aren’t licensed for free distribution. Users are still able to install these apps separately, of course.

In addition to that, CyanogenMod uses a number of proprietary device drivers in order to support certain smartphone and tablet models, which could potentially be a source of legal issues. No hardware vendor has officially protested against this over the past seven years, however. One of the other custom ROM distributions—Replicant—has removed all proprietary drivers from the code base, and currently supports only a few devices.

If you are looking for the help with customization of your own build of Embedded Android that was built from AOSP or any other open-source version just let us know.

AOKP

Image Credit: AOKP

The name Android Open Kang Project (AOKP), a wordplay on AOSP, began as a joke when the project started in 2011, but seems to have  stuck. The word “kang” is often used by developers and means stolen code, which, of course, has nothing to do with this custom firmware.

AOKP is a lightweight ROM that allows more customisation than the “vanilla” option, including custom toggles, advanced LED control, gesture-controlled shortcuts, vibration patterns, application-level permission control, and CPU overclocking.

AOKP’s original creator Roman Birg joined Cyanogen in early 2014, which led to a significant slowdown in firmware development. “Team Kang” wasn’t active at all in 2015, which is why there’s no AOKP ROM based on Android 5.x.

Things changed in 2016, however. A few new faces appeared in the development community, while Birg himself was also reportedly involved in it again. The current version of AOKP, which is based on CyanogenMod 13, is built upon Android 6.0 Marshmallow. The ROM lists about 90 supported devices, some of which are rather different versions of one smartphone or tablet. More than 3.5 million devices were running AOKP as of 2013.

AOKP is distributed under the same licences that cover Android UI (Apache Licence 2) and Linux kernel (GNU GPL v2), which do not limit the use of the firmware in commercial devices, provided the original source code is available for end users to see.

The AOKP custom ROM’s code base is hosted on GitHub, where everyone is allowed to check it out, make changes and submit a pull request. There’s also a voting system in place that helps the community to highlight the most important changes and patches.

AOKP is positioned as an aftermarket ROM for end users of smartphones and tablets, and hasn’t formed any significant partnerships with device manufacturers. There’s also no way to predict how actively developed the ROM will be in the future, though if you’re interested in its current code base, it’s freely available to take and tinker with.

CopperheadOS

Image Credit: CopperheadOS

Based on the Android Open Source Project, CopperheadOS is a security-focused mobile operating system that currently only supports the smartphones and tablets from the Nexus line. It has been created by Copperhead, a two-man “team of information security researchers, forensic analysts, and software developers” that helps “companies keep their sensitive information locked down.” The company was founded in 2015 and is based in Toronto, Canada.

“Google’s Android security team have accepted many of Copperhead’s patches into their upstream Android Open Source Project (AOSP) code base,” J.M. Porup wrote in his article about the OS for Ars Technica. “But the  majority of Copperhead’s security enhancements are not likely ever to reach beyond its small but growing user base, because of performance trade-offs or compatibility issues.”

Initially the project was based on CyanogenMod, though later on the developers changed their minds.

“The initial choice of CyanogenMod as the base for the OS was misguided and burned a lot of development time,” Copperhead co-founder James Donaldson wrote in the company’s blog in March. “The project had to be migrated to the Android Open Source Project as the base, with the ambition of supporting many devices scaled back to the Nexus line. We parted ways with one of our 3 co-founders, leaving us with a bigger burden.”

CopperheadOS brings additional hardening to Android, which includes zero-day exploits protection, enhanced Linux kernel security, stronger sandboxing and isolation of apps, firewall and network security features, etc. Similarly to Replicant, it comes 100 percent free of proprietary software, including hardware drivers and Google apps and services. It also uses an alternative app store, F-Droid, by default.

The source of CopperheadOS can be found in the company’s GitHub repo. The current version is built upon Android 6.0 Marshmallow. The team also offers an extensive technical overview of the changes it has made to the original AOSP code in order to ensure better protection.

Replicant

Replicant OS

As we already mentioned, Replicant can be described as CyanogenMod stripped of all proprietary code, which includes hardware drivers. The project was started in 2010 by a team of developers who wanted to create a fully free and pure Android distribution that wouldn’t use proprietary software.

The ROM supports only nine devices, most of which aren’t exactly new. Nevertheless, the ROM seems to be in active development these days, although the current stable version is built upon Android 4.2 Jelly Bean. In a recent blog post, Denis ‘GNUtoo’ Carikli wrote that “Replicant is being updated from Android 4.2 to Android 6.0 by Wolfgang Wiedmeyer.”

Just like  most of the other custom Android ROMs, Replicant is distributed under Apache License 2.0 and GNU GPLv2. Its source code is hosted by the Free Software Foundation, which also supports the project financially.

Although not without limitations, Replicant could be a good choice for those looking for a totally free software to run on their hardware with the  possibility of adding device drivers where necessary.

OmniROM

Image credit: thoth19 / Oppo.com

Started by a team of Android enthusiasts in 2013, OmniROM is believed to be a community-driven response to the commercialisation of CyanogenMod. As a matter of fact, most of its core developers used to be involved with CyanogenMod before Kondik raised funding for Cyanogen Inc.

The ROM is based on AOSP and offers a multitude of advanced UI customisation features, much like the other firmwares in this overview. It also allows for a number of performance tweaks and CPU fine-tuning. However, arguably the biggest thing that team Omni has achieved is a working multi-window mode, which was first shown in 2014.

Currently OmniROM supports 35 devices, some of which have already received “nightly” builds of the firmware using Android 6.0. Interestingly, the team at OmniROM has an unconventional approach to nightlies, which it expressed on the ROM’s website:

“…the argument that ‘nightlies are not for end users’ is over-used, and no longer valid. We’ve found that the vast majority of users want to get nightly updates to their ROM. For that reason, nightlies aren’t a playground – nightlies are for new features that are finished. You should be able to expect the same stability and reliability from a nightly as you would from a “release” ROM, [as well as being able to] report any bugs that prevent this from happening.”

Therefore, it appears that anyone willing to check out the ROM shouldn’t be looking for a “stable” release, but should rather download the latest build available.

Since OmniROM is a pronounced non-commercial project, it still remains a volunteer initiative that lives on donations. No hardware manufacturers have pre-installed the firmware on their devices so far, although the Marshmallow-based version of it was quite popular with the users of OnePlus One.

ParanoidAndroid

Image Credit: ParanoidAndroid OS

It sounds quite counter-intuitive, but ParanoidAndroid isn’t focused on security and privacy features at all, but rather enjoys a good rhyme. Nevertheless, in 2015 it was called the second-largest custom Android ROM in the world after CyanogenMod and had more than 200,000 users.

Like many ROMs around, ParanoidAndroid pays attention to advanced customisation, enhanced UI, and performance tweaks. The firmware, however, also has a few features that make it stand out from the crowd. These include the floating mode, a tweak similar to OmniROM’s multi-window mode which allows you to have an app window floating on top of any other app you’re working with.

It also has the so-called “pie controls,” a feature that allows the user to slide from any side of the screen to see a semicircular block of shortcuts to apps and services. This feature is especially useful in the ROM’s “immersive mode” which removes the navigation buttons from the bottom of the screen.

The project was launched in 2011 by Paul Henschel, whose volunteering team worked on the ROM actively until early 2015, when a few key people were poached from there by the phone manufacturer OnePlus. At that time, Oppo-owned OnePlus had had a row with Cyanogen Inc. over licensing in India, and decided to develop its own mobile OS, OxygenOS.

The exodus of a few core developers significantly slowed the pace of Paranoid’s new releases. In October 2015, a news website Android Authority learned that the project was all but put on hold.

“Although [Matt Flaming, one of ParanoidAndroid’s project leads] didn’t have any official statement to share from the team, Flaming relayed to us that the remaining members at PA have become too busy with their lives to continue working on the project,” the story went. “You see, the dev team has always been extremely small, so when everyone seems to have more important things to work on it can be difficult to get work done. Some of the members are focusing on finishing up college and have other important things going on.”

ParanoidAndroid users and admirers were quite pleased, however, when the team announced the ROM’s comeback a couple of months ago. The current version of the firmware is built upon Android 6.0.1 Marshmallow, and some 30 devices are supported.

The source code of the ParanoidAndroid ROM is hosted on Github, available for everyone to tinker with. It’s distributed under the same licences as the Linux kernel and AOSP, which are Apache License 2.0 and GNU GPL v2.

MIUI

MIUI OS

This ROM is an aftermarket version of Xiaomi’s Android build that the company pre-installs on its own devices. As of February 2016, the firmware was supported on more than 340 devices, which includes Xiaomi’s own hardware.

Initially, MIUI was based on AOSP and CyanogenMod code base. Its kernel was kept proprietary until October 2013, when it was released on Github in accordance with the requirements of the GPL licence. Two years later, Xiaomi also opened kernel sources for a few of its devices, including the Mi3, Mi4, MiNote and Redmi 1S.

The current version of the ROM—MIUI 7—is based on Android Marshmallow and includes useful features like a special child mode, significantly improved large fonts support, video greetings to use for phone calls, and so on. In addition to this, Xiaomi has just announced that MIUI 8 will roll out to its devices this week, which means that it might soon be backported to other phones and tablets.

Since Xiaomi is a company that works mostly on the Chinese market, where Google’s apps and services are largely banned, it has created a suite of cloud apps of its own, which are included into the firmware. The ROM is now distributed under the double licence common for custom Android firmware—GNU GPL v3 and Apache 2.0.

If you are looking for the help with customization of your own build of Embedded Android that was built from AOSP or any other open-source version just let us know.

Summary

The choice of custom Android firmware builds is getting wider by the day, but it appears that there are still a few core projects which the community is building upon. Going for one of the most popular and actively developed ROMs would be the least risky option, while those interested in more niche features can try out  lesser-known options. At the end of the day, there’s always the  possibility of talking  to the developers to try and work out a solution which is tailor-made for your situation.

Have you already tried to get a custom Android ROM working on your hardware? Share your experience in the comments section!

Illustration by Alina Kropacheva

The post Open Source Android ROMs You Can Use For Your Device appeared first on Intellectsoft Blog.

]]>
https://www.intellectsoft.net/blog/open-source-android-roms-you-can-use-for-your-device/feed/ 0
Build and Run Android from AOSP Source Code to a Nexus 7 https://www.intellectsoft.net/blog/build-and-run-android-from-aosp-source-code-to-a-nexus-7/ https://www.intellectsoft.net/blog/build-and-run-android-from-aosp-source-code-to-a-nexus-7/#comments Mon, 29 Aug 2016 15:00:52 +0000 https://stanfy.com/?p=13549 Before we go deep into the technical details of building Android from AOSP and installing it on actual hardware, let’s look at a true not very true scenario.

The post Build and Run Android from AOSP Source Code to a Nexus 7 appeared first on Intellectsoft Blog.

]]>
Before we go deep into the technical details of building Android from AOSP and installing it on actual hardware, let’s look at a true not very true scenario.

Building a Connected Android-based Bus Stop Display

Here’s a situation we’ve all been in: imagine you’re running late for an important meeting and you’re waiting nervously at the bus stop. Twenty minutes have gone by and there’s still no trace of it. You’re starting to get edgy.

Hmm, wouldn’t it be useful if you had information about the bus’ location? ? Looks like an idea for a new startup 🙂 At first glance it looks complex, but “I’m an engineer. I can do this! ))”.

So, let’s start with a simple prototype which can just be an Android app which shows bus locations on the map. You ran it on Nexus 7 and it all looks awesome.

The next question is – what do we need to be able to deliver such an app as a product? We can enumerate some requirements:

  • Run in one app mode (or Kiosk mode)
  • Able to remove all unnecessary services, apps etc.
  • Easy to update the main app
  • Device Monitoring and logging
  • Over-the-air updates

We have an unattended Nexus 7 tablet in the office and I think it could be a good start to make a prototype of a bus stop using this device. So, is a Nexus 7 with the stock Android up to the job?

Definitely no, because it has a huge number of redundant apps and the user can operate with it like with the usual tablets (open browser, read news, turn off our app and other people can’t get information about bus’ location), but you want to restrict such usage.

There are a couple of ways for us to  achieve our goals:

  • make device rooted;
  • configure a device as kiosk mode using Android for Work feature;
  • create your custom firmware based on AOSP.

If you are looking for the help with customization of your own build of Embedded Android that was built from AOSP or any other open-source version just let us know.

The first way looks simple, but it’s not ideal for a huge number of bus stops, because you should hack every new Nexus 7. So in general you will spend a lot of time setting up  new devices and all your changes will be on existing firmware. Moreover, this way has a significant number of limitations. For example, it will be hard to organize on-air updates.

The second way allows you to automate your installation, but it has a limited number of allowed extensions above base Android. Before you choose this way, you should definitely be aware that you will not be hampered by these limitations. Learn more on page.

The last way looks more complex than the previous possibilities,  but the good thing is that you can do what you want without any restrictions.

Build your own Android

This article is a part of a bigger guide about Embedded Android that intends to cover a broad set of topics about using Android as a platform for embedded devices.

In general, building your own AOSP looks too complicated and it always seems like you will need to spend several weeks setting up the environment and compiling AOSP. Take courage, just follow the guide below and you’ll see how simple it can be.

1. Choose Android version

First of all, we need to decide what version of Android firmware we want to build. Today we have Android versions 4.0, 5.0, 6.0 and the new Android N (7.0 Nougat). It looks like a hard decision, but it’s really not too difficult.

There is one simple rule: you should choose the most recent released version which is available for your device.

That means if we want to build a firmware for Nexus 7 we should get the latest stable release for Nexus 7.

We can even use Android N because it already has preview 4, but there are some considerations about using Android N while it’s still in preview:

  • this is still a preview, which might contain bugs, so you cannot be sure about stability;
  • release of the Android N can have significant changes after review;
  • hardware manufacturers only release device drivers for stable versions (more about device drivers in section Download device drivers)

So, we need to create a custom firmware for Nexus 7 and the last stable version is 6.0.1Let’s build it!

2. Hardware and OS requirements

Android is not just a simple app, this is a Linux-based operating system which controls your device. In order to build Android OS from source code there are strict requirements for hardware where we can run a build process.

Below is recommended set of configurations for the build machine:

  • 50 GB free hard disk space (required);
  • min 8GB RAM, recommended 16GB;
  • 2.0 GHz CPU with several cores. This parameter influences build speed – a more productive CPU means less build time. Moreover, if you have several cores you can parallel build the process (as demonstrated in build section).

As for the OS you can use Linux (Ubuntu, Debian, etc) or Mac OS to build firmware, but there is currently no Windows support. If you have Windows you can install a virtual machine with Ubuntu like VirtualBox.

The best solution is to use Mac OS 10.10 or 10.11 or Ubuntu 14-15 because they are the most widely used OSs for building Android OS and you will easily find help and suggestions from the Android community.

In this tutorial I will use MacBook Pro with 2.3 GHz Intel Core i7, 16GB RAM works on OS X El Capitan 10.11.5.

3. Prepare console

Open terminal and always use the same console tab for all commands in this tutorial.

NOTE: It is important to always use the same console tab, each tab has its own environment variables and if you do not follow this recommendation you will have errors.

# Build scripts based on bash language and to avoid any errors it 
# would be better to use bash shell. Today there are many shells 
# which can be set up on your computer like zsh, csh. To be sure
# that we are in bash shell just run it.
$ bash

# Create directory in user's folder with name 'aosp'
$ mkdir ~/aosp

# Move to created directory
$ cd  ~/aosp

# Build process uses a big number of file descriptors, especially if
# you run your build with several threads. To handle this you should
# increase allowed number of simultaneous file descriptors. Set this 
# limit to 1024.

# This will be enough for our build.
# In general it would be better to add the following line to
# ~/.bash_profile file:
$ ulimit -S -n 1024

4. Configure build environment

Before we start any work we need to prepare our environment that depends on our computer OS. For the purpose of this guide we will focus on the environment setup process for Mac OS.

If you have a Linux-based OS (Ubuntu, Debian, etc.) you can setup environment using this link.

AOSP uses filenames that only differ by case, for example MyFile.java to myfile.java. This is why you should have a case-insensitive filesystem, otherwise after checkout you will have only one file, which will definitely cause an error during the compile process.

To prevent such errors, developers used case-sensitive filesystems and such requirements were added into the pre-build environment test process, which failed before the build process even started. So you could fix everything earlier without waiting a couple of hours just to see the first errors related to the case-insensitivity issue.

By default MacOS runs on a case-insensitive filesystem and to resolve this we will create a disk image with case-sensitive filesystem.

NOTE: If you use Linux based OS you do not need to do anything because it has a case-sensitive filesystem by default.

To build AOSP you need about 40Gb of disk space. In our example we will create the image with 50Gb of space to be sure that we will have enough space for future experiments.

# Create image with name aosp and size 50Gb. As a result
# you will have the image file in current folder with name
# aosp.dmg.sparceimage.
$ hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 50g ./aosp.dmg

# Mount aosp.dmg to /Volumes/aosp point. This means that
# your image (virtual drive) is connected to the MacOS file
# system.
$ hdiutil attach ./aosp.dmg.sparseimage -mountpoint /Volumes/aosp

# Create working folder. We will use this directory
# to download Android sources.
$ mkdir /Volumes/aosp/android_6.0.1

# Move to the case-sensitive folder
$ cd /Volumes/aosp/android_6.0.1

Check Section:

NOTE: In order to check that all operations are executed as we expect, we are going to run periodic checks on previous commands so to be sure that we are safe to continue.

# Type next command in console
$ pwd

# The right result is shown below. If you have an error or wrong
# result you need to check create image steps.
/Volumes/aosp/android_6.0.1

When we are building Android in Mac OS, the build process uses tools and libraries from MacOS SDK. To get MacOS SDK you will need to install XCode from the Apple site. You need to have an Apple ID to download it.

NOTE: If you use Linux based OS you do not need to install XCode; you should install other tools and libraries. Check them on this site.

After that, you need to link your folder, because Android 6 was created with an old version of XCode where it extracts MacOS SDK into folder /Developer/SDKs.

NOTE: Another option is to install an older version of XCode and use xcode-select tool to switch its toolkit. Find out more about this tool on page.

The new version of XCode has another location of MacOS SDK, and to prevent potential search errors, we will create a virtual folder which will be linked to the MacOS SDK location.

NOTE: You do not need to run commands below if you are building Android N. It already has right path to the MacOS SDK.

# Create folder. We should have created root folder and only after
# that we will create folder with symbolic link.
$ sudo mkdir /Developer/SDKs

# Create symbol link to the MacOS sdk folder from xCode
$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/ /Developer/SDKs/MacOSX10.6.sdk

Check Section:

# Type next command in console
$ ls -a -/Developer/SDKs/MacOSX10.6.sdk

# The right result is shown below. If you have an error or wrong
# result you need to check 'create link' steps.
SDKSettings.plist
System
usr

Android uses Java as a high-level language, and to compile java classes we need to have installed Java SDK. Android 6.0.1 requires JDK version 1.7, which you can download and install from the Oracle site.

NOTE: If you want to build Android N you should install JDK version 1.8 from the Oracle site.

Check Section:

After you’ve installed Java, let’s check your environment:

# Type next command in console
$ java -version

# The right result looks like "1.7.x_yy". The important part is "1.7".
# If you have an error or wrong version number, you need to check your
# installation flow.
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)

The next step is to install tools (gmake, libsdl, git, gnupg) which are used by the Android build process. To simplify this step we will use the package manager MacPorts. You can install tools manually or use brew, but it’s easier to do this with the MacPorts tool.

Install MacPorts from macports.org and run command below.

# Install make, git, and GPG packages using MacPorts
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg

Check Section:

# Type next commands in console
$ gmake --version
GNU Make 4.1
Built for x86_64-apple-darwin14.0.0

$ git --version
git version 2.5.0

5. Install ‘repo’ tool

AOSP contains a number of git repositories, each of which deliver some functionality for firmware.

Example of AOSP Manifest

It is hard to checkout/pull/push each repository separately and we need a tool to control all of these repositories as one. That is why ‘repo’ tool was created.

Repo is a repository management tool built on top of Git. It automates parts of the Android development workflow. It doesn’t replace Git, it only makes it easier to work with multiple git repositories. The repo command is an executable Python script and you can put it anywhere in your path.

If you already have installed repo you can skip this step.

# Create bin directory in home location.
# We will download repo in this directory.
$ mkdir ~/bin

# Add bin to the class path. In general it
# would be better to add the following line to ~/.bash_profile
$ PATH=~/bin:$PATH

# Download repo.
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

# Allow execute rights for repo
$ chmod a+x ~/bin/repo

Check Section:

# Type next commands in console
$ repo --version

# The right result is shown below. There are no strict requirements
# for the repo version. You don’t need to worry about the sample
# version. If you have an error, you need to check repo installation
# steps.
repo version v1.12.33

NOTICE: The Android build process is rather time-consuming,  but if you plan to do it more than a few times, it would be better to follow the optimization tips to decrease build time. You can find some helpful tips by following this link.

6. Download Android sources.

As we decided above, we want to build Android version 6.0.1, so our next task is to find appropriate sources. The entry point to all available sources is the Android Source Repository https://android.googlesource.com.

View of Android source repository

It contains a huge number of projects and it is hard to understand what each of them does, but our goal is to find AOSP. All available versions of the AOSP are located in directory platform/manifest.

View of Android platform repository

This page contains branches with name android-xxx_ryy, where xxx – version of the Android and yy – revision version. Let’s click on the ‘More’ link and find android-6.0.1*

As you can see, there are many revision numbers for Android 6.0.1, but the best option will be to use the most recent. For us this is revision number 55 and the branch name is android-6.0.1_r55.

The next step is simple, but requires a good Internet connection and plenty of patience. Android contains about 20Gb of source files and we need to download all of them.

# Initialize repository with branch ‘android-6.0.1_r55’
$ repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r55

# Sync your repo with remote repo (Read as download all sources
# to my computer). -c argument defines to sync only current branch.
$ repo sync -c

After the last command you can get your tea or coffee and take a break for about an hour 🙂

When the time comes and sync has ended, you should see a success message. See the screenshot below.

Android AOSP repo sync - successful console output (click to enlarge)

7. Download and install device drivers.

AOSP contains sources which can be run on different devices and to do this on a concrete device, you need additional hardware-related proprietary libraries. They are not open-source and you can use them only in accordance with the licensing policy.

Each manufacturer decides whether they want to share such binaries for other developers to use or not. It’s usually not. These libraries also heavily depend on Android version. It means that you should find libraries for the concrete version of Android which you want to build.

For example, now we are building Android version 6.0.1 and you should find libraries for your device with version 6.0.1. As we build AOSP for Nexus 7 we will use Google’s Nexus driver page.

# Download and extract Asus components - Audio, Sensors
$ curl https://dl.google.com/dl/android/aosp/asus-flo-mob30p-cd589457.tgz | tar -xvzf - ; bash ./extract-asus-flo.sh

# Download and extract Broadcom NFC component
$ curl https://dl.google.com/dl/android/aosp/broadcom-flo-mob30p-bbb4a19a.tgz | tar -xvzf - ; bash ./extract-broadcom-flo.sh

# Download and extract Qualcomm components - Graphics,
# Camera, GPS, Wi-Fi, Bluetooth, Sensors, Media, DRM, DSP, USB
$ curl https://dl.google.com/dl/android/aosp/qcom-flo-mob30p-5a8d363a.tgz | tar -xvzf - ; bash ./extract-qcom-flo.sh

Check Section:

# Type next commands in console
$ ls -a vendor

# The right result is shown below. If you do not see
# list folders then you need to reinstall drivers.
asus
broadcom
qcom

8. Build AOSP.

Android 6.0.1 was developed in a time before El Capitan, so we should configure a build to allow it to run on El Capitan. To do this we should add MacOS sdk versions in a config file.

NOTE: If you use Linux based OS you can skip this and move to the next section.

# Open mac_version config file in text editor
$ open -e build/core/combo/mac_version.mk

Find variable mac_sdk_versions_supported and add to the end 10.9 10.10 10.11. This means that we allow build process execution with MacOS SDK version 10.(9-11)

NOTE: In general, editing files under version control is not a good idea. In production it would be better to override variable instead of changing config file.

Before we start our build, let’s check what we have done to make sure we haven’t  forgotten anything:

  • switch to bash;
  • set up number of simultaneous file descriptors to 1024;
  • create disk image with case-insensitive filesystem;
  • install XCode with MacOS sdk;
  • install Java version 1.7;
  • install gmake, libsdl, git, gnupg;
  • install repo tool;
  • download Android 6.0.1 sources;
  • download and install device drivers for Nexus 7;
  • add MacOS sdk versions in a config file.

The following is the most important part of our quest. A build process will take about 3-5 hours.

# Initialize the environment with the envsetup.sh script.
# It will add additional commands in your path
$ source build/envsetup.sh

# Chose target. flo - this means target for Nexus 7,
# userdebug - config with root access and debuggability
$ lunch aosp_flo-userdebug

# Build command. -jN argument define parallel tasks which
# make can handle, and it's common to use a number of tasks N
# that are equal to the number of hardware threads on the computer
# being used for the build.
$ make -j8

A successful result should show in the console text: make completed successfully.

Android AOSP Build - successful console output (click to enlarge)

Congratulations!!!

The result of this  long build will be in the folder /Volumes/aosp/android_6.0.1/out/target/product/flo/ and it should looks something like this:

View of files list in build directory

So you can go there and explore the result files. The important files for us are those with an *.img extension. These are images of Android firmware which are used when we are flashing a device.

Check Section:

# Run command to check created images
$ ls -a out/target/product/flo/ | grep .img

# The right result is shown below. If you do not see a
# list of *.img files, then something has gone wrong.
# Please check all steps and rebuild AOSP.
boot.img
cache.img
ramdisk-recovery.img
ramdisk.img
recovery.img
system.img
userdata.img

9. Run own AOSP

Now we have images of our firmware and to check it we need to flash device. Connect device to the computer through a USB cable and run next commands.

# Reboot device in boot mode. Wait until boot mode has appeared.
$ adb reboot bootloader

# Unlock device. This command allows you to flash it. Use volume
# buttons to select option and power button to apply option.
$ fastboot oem unlock

# Flash device with new images. -w option wipes the /data 
# partition on the device.
$ fastboot flashall -w

After the last command your device will reboot and after 1-2 minutes, when new firmware is initialized, you will see your own firmware.

What’s next?

We have done a great job! After several hours we now know how to prepare build environment, choose AOSP version, build own firmware and install it on the device. As a result, we have installed firmware which is made by hand and we are ready for the next set of challenges.

In the next part we will look how we can test our firmware to be sure that our software (AOSP) works correctly with hardware and passes the Android Compatibility Tests.

The post Build and Run Android from AOSP Source Code to a Nexus 7 appeared first on Intellectsoft Blog.

]]>
https://www.intellectsoft.net/blog/build-and-run-android-from-aosp-source-code-to-a-nexus-7/feed/ 3