📜 ⬆️ ⬇️

AndroidAudit. Your Android application as a crime scene



From the translator: evaluation of the process and the result of the development is a rather subjective thing if no measure of weights is used. One can argue for a long time: tabs or spaces, git or mercurial, maven or gradle, but such disputes still slip into taste and some special cases. Another thing - the observance of the homogeneity of the project, this is quite a measurable value.
Bad methodology is better than no one.
In addition to common things, there are specific, inherent only in mobile development, only for Android. Pedro Vicente Gómez Sánchez from Karumi, in his work, sorted out the main technical areas and asked well-posed questions for a correct, objective assessment of the development for the Android platform. If a task appears: to evaluate someone else's project, then I recommend using his methodology. I used this methodology as a check list. At the exit, the document turned out to be quite understandable to a non-professional, where in front of each category is a specific amount of correctness matching from 0 to 1.


Technical audit of iOS and Android applications has become an integral part of our daily work in Karumi. Although it looks simple, there are quite a few details of the implementation of such a check that are worth considering. In this document, we will look at what we consider to be the most important in conducting the audit and divide it by technical area.
')
Version Control System

Whether a version control system is used, which system and how workflows are organized will tell a lot about the development process.


Build Tools

The determining factor is the ability to run the build process on the developer's machine and on any other external system, for example, on a continuous integration system.


Using Android resources

There is a wide range of devices in the Android world, each with its own screen size, capabilities, etc. You need to be very careful and carefully use some of the Android tools so that users have the best impression of your application, regardless of their device.


Using Android Layout

As we said earlier, there is a wide range of Android devices in the world, each of them with its own size and density of the screen. The determining factor is the proper use of Android Layouts.


Access rights

Requesting possible actions of the application (permissions) increases the trust of users to it, as well as expands its capabilities through "transparent" integration with other services.


Safety problems

As developers, we must be conscious of the security of our applications. We don’t want our users ’data to be leaked or stolen.


Push Notifications (Push Notifications)

Push is an excellent mechanism for informing our users at any time, but this is a more complicated problem than it seems at first glance.


Performance

Performance is important. No one wants to use a slow application on their expensive devices. Productivity is money.


Java Packages Structure

A good package structure will make our code more scalable.


Code Style

The code base coordinated in terms of style helps our engineers to read the code more easily. The engineer reads MUCH more code than he writes, so this is an important concept.


Offline implementation

Ensuring good offline operation is the hallmark of our applications.


Architecture

The application architecture, in terms of code, is one part of the audit, which gives us a deeper understanding of the application. During the review of the application architecture, we will focus on concepts related to SOLID and Clean Code principles.

Presentation Layer Implementation


Domain Implementation (Domain Implementation)


API implementation


Implementing Storage


Testability


Based on this list associated with various technical areas, we can assess the quality of the application. There are other points that we also consider, but this list contains the most important ones. Can you give correct answers to all these questions about your application?

Author: Pedro Vicente Gómez Sánchez.
Thanks in helping prepare the translation
I can not fail to mention those without whom this translation would be a terrible promt, which is a shame to share with the public.
Thank you for the help in translation and thoughtful reading of Kochkina Yana, Zaostrovsky Roman (@firsto), Polezhaev Maxim (@ itsme_42).
Special thanks for both KDPV, which was not in the original article, Kochkina Yana.

Alternative KDPV
In memory of the once very popular library from JakeWharton .


By the way, if ActionBarSherlock lives in your project and now, I recommend thinking about refreshing the project.

Source: https://habr.com/ru/post/304208/


All Articles