[QBS] Android and Qbs profiles

Christian Kandeler christian.kandeler at qt.io
Thu Sep 29 13:57:19 CEST 2016

On 09/22/2016 04:29 AM, Ch'Gans wrote:
> As highlighted recently on the list, there seems to be a problem with
> android profiles when trying to build applications.
> The Qbs Application item infers the "profiles" property. I'm
> copy/pasting the documentation here for convenience:
> ----
> The profiles for which the product should be built. For each profile
> listed here, one instance of the product will be built according to
> the properties set in the respective profile. This property is only
> relevant for projects that require products being built for different
> architectures. Otherwise it can be left at its default value.
> ----
> There are a couple of problems with this:
> - Only ARMv5 and ARMv7 are supported by defaults (no x86-32/64, no ARM-64)

I don't know what that is supposed to mean. Who supports what by default?

> - This works only if you tell qbs to build using the "android" base
> profile, and you have used qbs-setup-android to create your android
> profiles (which will be automatically named "android-$arch")

Yes, the android NDK support is based in this convention for lack of a
better solution at the moment.

> Now what is the rational behind all of these? I'm not an Android
> expert, but after looking on the net, I have the feeling that it is
> related to multi-arch per APK vs multi-APK for an application relying
> on native code. And Qbs seems to take the multi-arch per APK approach,
> that's why it needs to infer the per-arch profiles based on a list of
> supported architectures.
> Shouldn't qbs, at least, allow the user to create an APK for a single
> architecture of his/her choice?

You do that by setting the profiles property.

> Finally, is it really worth all the hassle, for a final result of
> supporting only two arm architectures, one of each being outdated?

Again, I don't know where you get this from. Check which profiles
qbs-setup-android creates to see the number of supported architectures.

> As a solution, what about letting the user specify the muli-arch
> profiles in a master profile?
> For example, one has to "qbs config profiles.MyProfile.baseProfile
> MyBaseProfile", what about then: "qbs config
> profiles.MyProfile.apkProfiles
> MyQtProfileArmv7,MyQtProfileArmv8,MyQtProfileX86" with
> MyProfile.apkProfiles defaulting to [MyProfile.baseProfile]

Some sort of nested profiles or cross-profile references was also my
general idea for improving this. It's just that Android support hasn't
been much of a priority. If you are interested in driving this forward,
I suggest you create a JIRA issue. There are already several loosely
related ones, but nothing concrete for Android, I think.


More information about the Qbs mailing list