2

my android project min sdk level is 16. I want to turn it into instant app but I need to maintain min sdk level but instant app supports min 23. I tried to set different api levels for the installable and instant app in the same project and tried to override them but I wasn't able to do. So is there any way to work in same project with installable app and instant app with different min sdk levels?

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
DiRiNoiD
  • 1,281
  • 2
  • 18
  • 24
  • Do you really need different minSdk? Instant apps do not require 23. See https://stackoverflow.com/q/44774512/407058. – philo Feb 14 '18 at 12:59
  • 1
    I asked lower sdk in order to work for the installable app and the instant app under single project with the same featured structure. – DiRiNoiD Feb 14 '18 at 13:17
  • Sure. But when you say "instant app supports min 23", it sounds like you believe that instant apps feature plugin requires min 23. That is not the case. I think 16 is possible. If not, then @JohnOreilly is on the right track. But check out https://github.com/googlesamples/android-instant-apps/tree/master/configuration-apks, which improves on that answer a bit by using missingDimensionStrategy to avoid creating unnecessary variants. – philo Feb 14 '18 at 13:31

3 Answers3

1

Another way to do this so that the instant app APKs have the desired minSdkVersion is with this:

App (com.android.instant.application) manifest:

<uses-sdk tools:overrideLibrary="com.example.feature"/>

App (com.android.instant.application) gradle:

minSdkVersion rootProject.minSdk

Feature (com.android.instant.feature) gradle:

minSdkVersion rootProject.minSdkInstant

This allowed me to build

  • Installed app with minSdk
  • Instant app APKs with minSdkInstant

The only recommended way is to use flavors.

Besides the tools:overrideLibrary method, there are no other ways to do this.

The APKs are generated from the feature plugin and not from the instant App plugin.

Can you check android-instant-apps/configuration-apks/features/build.gradle and this SO Question

Prags
  • 2,457
  • 2
  • 21
  • 38
0

The only way I've been able to do this is by using different product flavors. For example:

    instant {
        dimension "delivery"
        minSdkVersion 23
    }
    installed {
        dimension "delivery"
    }

Note you can have multiple dimensions defined (for example I have flavorDimensions "app_type", "delivery")

John O'Reilly
  • 10,000
  • 4
  • 41
  • 63
  • can you check url https://developer.android.com/studio/build/build-variants.html for more info. – Prags Feb 14 '18 at 10:31
0

You can also refer this AIA minSdkVersion bug for details on your query, with recommended way to use flavors.
Quoting the details shared on the link:

Another way to do this so that the instant app APKs have the desired minSdkVersion is with this:

App (com.android.application) manifest:

App (com.android.application) gradle: minSdkVersion rootProject.minSdk

Feature (com.android.feature) gradle: minSdkVersion rootProject.minSdkInstant

This allowed me to build - installed app with minSdk - instant app APKs with minSdkInstant

Also refer this link for information on flavor dimensions.

ManmeetP
  • 801
  • 7
  • 17