The fourth edition of the App Builders conference was once again aimed at iOS and
Android developers from all over the world. For the second time, the venue was the
resort town of Lugano, located at the southern tip of Switzerland. Spread over two
days, presentations were offered on a wide variety of topics.
Safety first!
Guilherme Rambo, who has made a name for himself primarily through numerous leaks in the iOS area, spoke about the
importance of user privacy. Especially in the last few months, the topic of data
security and user privacy has become more and more in focus.
According to Rambo, only the data that is actually needed in an app should be collected.
In this context, he also pointed out to be careful when dealing with SDKs that one has
not developed oneself. Especially if they are closed source and therefore do not allow
insight into the code. SDKs integrated into an app have the same rights as the app
itself. This can be access to the camera, but also to the contacts or the location. If
the user is asked for these rights, it is also important not to ask for all rights
through numerous pop-ups when the app is started for the first time.
Rambo emphasizes that the rights should only be claimed when this is really necessary,
i.e. only in the specific situation, e.g. when a photo is taken. We are also working
intensively on similar issues relating to data privacy and sovereignty in mobile
applications as part of the
Data Sovereignty Manager research project.
Care should also be taken when logging what data is logged. Apple's own os_log offers an
advantage. If dynamic strings are used, as in the following example, they are only
marked as <private> in release builds.
In her presentation, Janina Kutyn shed light on the development of user interfaces for
various iOS devices. As more and more new device sizes have been added to the iOS family
in recent years, it is becoming increasingly difficult to develop a UI that is both
suitable and appealing on all devices. Apple itself offers the possibility to use size
classes in the iOS SDK. The various devices are classified into Regular (large) and
Compact (small) in terms of both height and width. However, this classification is
actually no longer sufficient in the meantime, since both the iPhone SE and the iPad Pro
with a 12.9-inch screen are classified as Regular in height.
Kutyn describes how she has already defined her own alternative to Size Classes in some
projects, depending on the frame height and width of a screen. This can then be used,
for example, in the calculation of cell sizes in a UICollectionView. It makes sense, for
example, to display fewer columns of cells on smaller devices than on large iPads.
In the presentation, an example app was used to show how user interfaces can be adapted
to different device sizes. This presentation also made it clear when it makes sense to
develop UI in code and what advantages and disadvantages the Interface Builder
offers.
Cross-platform development and code sharing
Not one but two speakers addressed how code can be shared for business logic in iOS and
Android. Cecilia Humlelu looked at the topic from the perspective of streaming provider
Spotify, while Nicolas Märki and Joseph El Mallah described the advantages for smaller
companies.
The great benefit in, for example, using C++ code is that it can be used natively in both
iOS and Android. However, while a fairly simple intermediate layer in the code is
sufficient to communicate between C++ and Objective-C in iOS, this is somewhat more
difficult in Android due to the not particularly intuitive Java Native Interface
(JNI).
To avoid having to write these intermediate layers yourself, there are approaches such as
Djinni from Dropbox, which can be used to generate the interfaces to the C++ code.
However, a disadvantage of using Djinni is the fact that additional interface
definitions are required. In addition, Dropbox has only recently discontinued support
for Djinni.
Other ways business logic can be shared include J2ObjC and Kotlin Native. In her
presentation, Humlel also looked at how code can be integrated with C and C++ classes in
Swift. In Swift, there are also ways to optimize memory when working at the pointer
level. The Spotify developer also looked at how C, C++ and Objective-C frameworks can be
integrated into Swift apps.
We have also been practicing cross-platform development with C++ for many years. We call
the approach we have developed a shared component and see great advantages in this
approach, especially for complex and extensive apps.
On YouTube
you can see all presentations again. In addition to the aforementioned talks, GitHub
co-founder Scott Chacon's experiences as an entrepreneur and Brandon Williams'
explanations of where Swift protocols are still limited are also highly recommended. In
addition to the numerous presentations, there were also two interviews in which the
Director of Engineering of SoundCloud and the Head of Engineering of Travis CI talked
about their experiences.