ANDROID

Amarula Solutions development team has been living in Android world for many years knowing its details and history, providing solutions within both Android systems and Android applications.

One of Android’s success factor is its openness. The majority of the Android software is licensed with Apache 2.0. Android has taken Linux as its kernel because of Linux’s well known models in security, process and memory management, drivers and protocol stacks. Between the kernel and the application layer, Android designed a complete mobile software stack taking advantages from well known projects out of the open source ecosystem. This approach enabled a fast growth of Android covering the whole set of functionalities exposed by a modern mobile device.

Our portfolio of successful customizations project of the Android platform enables us to adopt the better strategy tailored on your specific needs, lowering development costs and offering you robust and effective solutions.

In short, we are able to guide you both in hardware and/or software designing to guarantee that the final target can take complete advantage of this powerful OS.

Examples of possibilities

Developing of customer specific functionalities of applications

Developing of native libraries due to Android framework lacks

Guidance in hardware development to ensure hardware (components) will work with Android

Android bring up on a newly designed target

Migration from an unwanted OS to Android

Optimization of Android subsystems

Components integration within Android

We have rich experience in custom components integration into Android devices.

Our previous work involves various components from vendors around the world including card readers, custom LEDs or various secure elements used for payments, cryptographic operations or tamper management.

We can provide full stack from low level parts in native C/C++, mapping via JNI up to java interfaces ready to be used by external Android applications. We can wrap any custom HW component protocol into android way of communication.

We choose from multiple ways of android inter-process communication in order to fulfill all important requirements on efficiency, maintenance and usage.

Integration can be done either by providing completely new interface or in specific cases can be wrapped into already existing android API. We have experience in fitting very specific NFC HW product into standard Android NFC stack along with NXP and NCI implementation packages.

Compatibility

We follow android compatibility definition whenever possible to retain the system compatible and maintainable. Custom API is provided via additional shared libraries to clearly separate from AOSP API. Compatibility test suite (CTS) has been in the scope of our QA team for many years.

Development testing

Developers’ code is going hand in hand with unit tests and integration tests using Android test frameworks. All changes in OS can be tested quickly by writing tests of particular code which helps to develop very efficiently.

Android applications

We are producing android apps on daily basis from most simple test applications for customers’ specific device features to complex applications which we maintain in long term and continuously extend its functionalities. We have years of experience in using many of standard Android features as well as specific ones related only to specific HW:

Barcode scanning

Testing integrity of specific Android device

Providing diagnostic features

Integration of robotic arm in several Android applications for automated testing of Albert payment terminal

Android in depth

We are team of developers having insight in Android application as well as in Android operating system. That gives us magnificent advantage in solving particular tasks to fulfill the requirements.

Cross platform

We are experts in Android but we already have experience with cross platform applications thanks to react native framework which is widely used by companies like Facebook to easily support both Android and IPhone devices.

Development flow

Our development process includes variety of tools integrated together in order to make the final product high quality:

Code review

Every code change needs to be approved by the experienced developers. We use powerful Gerrit tool which makes the review process very efficient. Proposed changes are immediately visible to our experts from several countries.

Verification builds

Every code change has to be confirmed by Jenkins server first. We do not risk any compile errors after merging new code. Our scripts are adopted to manage verification of small applications as well as huge multi-projects like Android OS.

Release builds

Releasing new builds is done via Jenkins build server. We are experienced in making release process straightforward and easy to perform. Our build scripts are adopted to make releases with few clicks in web interface.

Knowledge base

We are extending our knowledge base day by day via Confluence tool. All our specific experience is easily accessible in one central place by all developers. It is well organized to find the relevant information quickly.

Tasks

All our work is tracked in Jira tool which together with our Bitbucket repository provides very efficient way of tasks organization. It can be accessed by our customers to easily track the progress on particular projects. Large projects are managed in smaller sprints. Sprint backlog for each sprint is defined always during a sprint planning session.

Communication

Communication between the team members is done via public and private channel in Mattermost tool which provides efficient real-time way to share temporary information.