Hi @srbrahma
I’ve found out about an even easier way. Not sure how long this has existed:
There’s something called AndroidConfig.Version.withBuildScriptExtMinimumVersion
in @expo/config-plugins
. I think the easiest way to use it is from app.config.js
.
I have a normal app.json
and then in addition to that I have an app.config.js
which overrides some things in app.json
for dev/preview builds and also so that i don’t have to store an access key in Git. The plugins section is the relevant part to this discussion:
import "dotenv/config";
// For setting Android min/compile/target SdkVersions
import { AndroidConfig } from "@expo/config-plugins";
function app_variant(base, dev, preview) {
switch (process.env.APP_VARIANT) {
case "development":
return `${base}${dev}`;
case "preview":
return `${base}${preview}`;
default:
return base;
}
}
export default function ({ config }) {
return {
...config,
name: app_variant(config.name, " (Dev)", " (Preview)"),
android: {
...config.android,
package: app_variant(config.android.package, ".dev", ".preview"),
},
ios: {
...config.ios,
bundleIdentifier: app_variant(config.ios.bundleIdentifier, ".dev", ".preview"),
},
extra: {
accessKey: process.env.accessKey,
},
// Set Android min/compile/target SdkVersions
plugins: [
[
AndroidConfig.Version.withBuildScriptExtMinimumVersion,
{
name: "minSdkVersion",
minVersion: 24,
},
],
[
AndroidConfig.Version.withBuildScriptExtMinimumVersion,
{
name: "compileSdkVersion",
minVersion: 31,
},
],
[
AndroidConfig.Version.withBuildScriptExtMinimumVersion,
{
name: "targetSdkVersion",
minVersion: 31,
},
],
],
};
}