Skip to content

Commit

Permalink
feat(android): add gradle 7+ support (#5614)
Browse files Browse the repository at this point in the history
* feat(android): add gradle 7+ support

* chore: cleanup and fallback support

* fix: actually read gradle versions from current runtime before fallback

Co-authored-by: Igor Randjelovic <rigor789@gmail.com>
  • Loading branch information
triniwiz and rigor789 committed Dec 23, 2021
1 parent b966f3d commit be6706a
Show file tree
Hide file tree
Showing 9 changed files with 65 additions and 39 deletions.
3 changes: 2 additions & 1 deletion lib/base-package-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,8 @@ export abstract class BasePackageManager implements INodePackageManager {
flag === "dist-tags" ||
flag === "versions" ||
flag === "name" ||
flag === "gradle"
flag === "gradle" ||
flag === "version_info"
) {
array.push(` ${flag}`);
continue;
Expand Down
4 changes: 2 additions & 2 deletions lib/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -328,8 +328,8 @@ export class Hooks {
}

export class AndroidBuildDefaults {
public static GradleVersion = "4.4";
public static GradleAndroidPluginVersion = "4.5.6";
public static GradleVersion = "7.0.2";
public static GradleAndroidPluginVersion = "7.0.4";
}

export const PACKAGE_PLACEHOLDER_NAME = "__PACKAGE__";
Expand Down
7 changes: 6 additions & 1 deletion lib/node-package-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,12 @@ export class NodePackageManager extends BasePackageManager {
} catch (e) {
this.$errors.fail(e.message);
}
return JSON.parse(viewResult);

try {
return JSON.parse(viewResult);
} catch (err) {
return null;
}
}

public async searchNpms(keyword: string): Promise<INpmsResult> {
Expand Down
8 changes: 6 additions & 2 deletions lib/pnpm-package-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,12 @@ export class PnpmPackageManager extends BasePackageManager {
} catch (e) {
this.$errors.fail(e.message);
}
const result = JSON.parse(viewResult);
return result;

try {
return JSON.parse(viewResult);
} catch (err) {
return null;
}
}

@exported("pnpm")
Expand Down
46 changes: 37 additions & 9 deletions lib/services/android-plugin-build-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,9 @@ export class AndroidPluginBuildService implements IAndroidPluginBuildService {
const projectRuntimeVersion = platformData.platformProjectService.getFrameworkVersion(
projectData
);
runtimeGradleVersions = await this.getGradleVersions(
projectRuntimeVersion
);
this.$logger.trace(
`Got gradle versions ${JSON.stringify(
runtimeGradleVersions
Expand Down Expand Up @@ -481,15 +484,39 @@ export class AndroidPluginBuildService implements IAndroidPluginBuildService {
runtimeVersion: string
): Promise<IRuntimeGradleVersions> {
let runtimeGradleVersions: {
gradle: { version: string; android: string };
versions: { gradle: string; gradleAndroid: string };
} = null;

try {
const output = await this.$packageManager.view(
let output = await this.$packageManager.view(
`${SCOPED_ANDROID_RUNTIME_NAME}@${runtimeVersion}`,
{ gradle: true }
{ version_info: true }
);
runtimeGradleVersions = { gradle: output };

if (!output) {
/**
* fallback to the old 'gradle' key in package.json
*
* format:
*
* gradle: { version: '6.4', android: '3.6.4' }
*
*/
output = await this.$packageManager.view(
`${SCOPED_ANDROID_RUNTIME_NAME}@${runtimeVersion}`,
{ gradle: true }
);

const { version, android } = output;

// covert output to the new format...
output = {
gradle: version,
gradleAndroid: android,
};
}

runtimeGradleVersions = { versions: output };
} catch (err) {
this.$logger.trace(
`Error while getting gradle data for android runtime from view command: ${err}`
Expand All @@ -505,17 +532,18 @@ export class AndroidPluginBuildService implements IAndroidPluginBuildService {
}

private getGradleVersionsCore(packageData: {
gradle: { version: string; android: string };
versions: { gradle: string; gradleAndroid: string };
}): IRuntimeGradleVersions {
const packageJsonGradle = packageData && packageData.gradle;
const packageJsonGradle = packageData && packageData.versions;
let runtimeVersions: IRuntimeGradleVersions = null;
if (
packageJsonGradle &&
(packageJsonGradle.version || packageJsonGradle.android)
(packageJsonGradle.gradle || packageJsonGradle.gradleAndroid)
) {
runtimeVersions = {};
runtimeVersions.gradleVersion = packageJsonGradle.version;
runtimeVersions.gradleAndroidPluginVersion = packageJsonGradle.android;
runtimeVersions.gradleVersion = packageJsonGradle.gradle;
runtimeVersions.gradleAndroidPluginVersion =
packageJsonGradle.gradleAndroid;
}

return runtimeVersions;
Expand Down
8 changes: 6 additions & 2 deletions lib/yarn-package-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,12 @@ export class YarnPackageManager extends BasePackageManager {
this.$errors.fail(e.message);
}

const result = JSON.parse(viewResult);
return result.data;
try {
const result = JSON.parse(viewResult);
return result.data;
} catch (err) {
return null;
}
}

@exported("yarn")
Expand Down
2 changes: 1 addition & 1 deletion vendor/aab-tool/README.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Downloaded from https://github.com/google/bundletool/releases/tag/0.10.3
Downloaded from https://github.com/google/bundletool/releases/tag/1.8.2
Binary file modified vendor/aab-tool/bundletool.jar
100755 → 100644
Binary file not shown.
26 changes: 5 additions & 21 deletions vendor/gradle-plugin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ import static org.gradle.internal.logging.text.StyledTextOutput.Style

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-parcelize'


buildscript {
def computeKotlinVersion = { -> project.hasProperty("kotlinVersion") ? kotlinVersion : "1.4.21" }
def computeKotlinVersion = { -> project.hasProperty("kotlinVersion") ? kotlinVersion : "1.6.0" }
def kotlinVersion = computeKotlinVersion()
repositories {
google()
Expand Down Expand Up @@ -88,9 +88,9 @@ allprojects {
}


def computeCompileSdkVersion = { -> project.hasProperty("compileSdk") ? compileSdk : 28 }
def computeCompileSdkVersion = { -> project.hasProperty("compileSdk") ? compileSdk : 31 }
def computeBuildToolsVersion = { ->
project.hasProperty("buildToolsVersion") ? buildToolsVersion : "28.0.3"
project.hasProperty("buildToolsVersion") ? buildToolsVersion : "31.0.0"
}

android {
Expand All @@ -100,28 +100,12 @@ android {
buildToolsVersion computeBuildToolsVersion()

defaultConfig {
targetSdkVersion 26
targetSdkVersion 31
versionCode 1
versionName "1.0"
}
}

dependencies {
def supportVer = "28.0.0"
if (project.hasProperty("supportVersion")) {
supportVer = supportVersion
}
compileOnly "com.android.support:support-v4:$supportVer"
compileOnly "com.android.support:appcompat-v7:$supportVer"

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
if (details.requested.group == "com.android.support" && !details.requested.name.startsWith("multidex")) {
details.useVersion supportVer
}
}
}
}

def applyBeforePluginGradleConfiguration() {
def appResourcesPath = getAppResourcesPath()
Expand Down

0 comments on commit be6706a

Please sign in to comment.