Skip to content

Commit be6706a

Browse files
triniwizrigor789
andauthored
feat(android): add gradle 7+ support (#5614)
* 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 <[email protected]>
1 parent b966f3d commit be6706a

9 files changed

+65
-39
lines changed

lib/base-package-manager.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,8 @@ export abstract class BasePackageManager implements INodePackageManager {
138138
flag === "dist-tags" ||
139139
flag === "versions" ||
140140
flag === "name" ||
141-
flag === "gradle"
141+
flag === "gradle" ||
142+
flag === "version_info"
142143
) {
143144
array.push(` ${flag}`);
144145
continue;

lib/constants.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -328,8 +328,8 @@ export class Hooks {
328328
}
329329

330330
export class AndroidBuildDefaults {
331-
public static GradleVersion = "4.4";
332-
public static GradleAndroidPluginVersion = "4.5.6";
331+
public static GradleVersion = "7.0.2";
332+
public static GradleAndroidPluginVersion = "7.0.4";
333333
}
334334

335335
export const PACKAGE_PLACEHOLDER_NAME = "__PACKAGE__";

lib/node-package-manager.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,12 @@ export class NodePackageManager extends BasePackageManager {
131131
} catch (e) {
132132
this.$errors.fail(e.message);
133133
}
134-
return JSON.parse(viewResult);
134+
135+
try {
136+
return JSON.parse(viewResult);
137+
} catch (err) {
138+
return null;
139+
}
135140
}
136141

137142
public async searchNpms(keyword: string): Promise<INpmsResult> {

lib/pnpm-package-manager.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,12 @@ export class PnpmPackageManager extends BasePackageManager {
9999
} catch (e) {
100100
this.$errors.fail(e.message);
101101
}
102-
const result = JSON.parse(viewResult);
103-
return result;
102+
103+
try {
104+
return JSON.parse(viewResult);
105+
} catch (err) {
106+
return null;
107+
}
104108
}
105109

106110
@exported("pnpm")

lib/services/android-plugin-build-service.ts

+37-9
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,9 @@ export class AndroidPluginBuildService implements IAndroidPluginBuildService {
431431
const projectRuntimeVersion = platformData.platformProjectService.getFrameworkVersion(
432432
projectData
433433
);
434+
runtimeGradleVersions = await this.getGradleVersions(
435+
projectRuntimeVersion
436+
);
434437
this.$logger.trace(
435438
`Got gradle versions ${JSON.stringify(
436439
runtimeGradleVersions
@@ -481,15 +484,39 @@ export class AndroidPluginBuildService implements IAndroidPluginBuildService {
481484
runtimeVersion: string
482485
): Promise<IRuntimeGradleVersions> {
483486
let runtimeGradleVersions: {
484-
gradle: { version: string; android: string };
487+
versions: { gradle: string; gradleAndroid: string };
485488
} = null;
486489

487490
try {
488-
const output = await this.$packageManager.view(
491+
let output = await this.$packageManager.view(
489492
`${SCOPED_ANDROID_RUNTIME_NAME}@${runtimeVersion}`,
490-
{ gradle: true }
493+
{ version_info: true }
491494
);
492-
runtimeGradleVersions = { gradle: output };
495+
496+
if (!output) {
497+
/**
498+
* fallback to the old 'gradle' key in package.json
499+
*
500+
* format:
501+
*
502+
* gradle: { version: '6.4', android: '3.6.4' }
503+
*
504+
*/
505+
output = await this.$packageManager.view(
506+
`${SCOPED_ANDROID_RUNTIME_NAME}@${runtimeVersion}`,
507+
{ gradle: true }
508+
);
509+
510+
const { version, android } = output;
511+
512+
// covert output to the new format...
513+
output = {
514+
gradle: version,
515+
gradleAndroid: android,
516+
};
517+
}
518+
519+
runtimeGradleVersions = { versions: output };
493520
} catch (err) {
494521
this.$logger.trace(
495522
`Error while getting gradle data for android runtime from view command: ${err}`
@@ -505,17 +532,18 @@ export class AndroidPluginBuildService implements IAndroidPluginBuildService {
505532
}
506533

507534
private getGradleVersionsCore(packageData: {
508-
gradle: { version: string; android: string };
535+
versions: { gradle: string; gradleAndroid: string };
509536
}): IRuntimeGradleVersions {
510-
const packageJsonGradle = packageData && packageData.gradle;
537+
const packageJsonGradle = packageData && packageData.versions;
511538
let runtimeVersions: IRuntimeGradleVersions = null;
512539
if (
513540
packageJsonGradle &&
514-
(packageJsonGradle.version || packageJsonGradle.android)
541+
(packageJsonGradle.gradle || packageJsonGradle.gradleAndroid)
515542
) {
516543
runtimeVersions = {};
517-
runtimeVersions.gradleVersion = packageJsonGradle.version;
518-
runtimeVersions.gradleAndroidPluginVersion = packageJsonGradle.android;
544+
runtimeVersions.gradleVersion = packageJsonGradle.gradle;
545+
runtimeVersions.gradleAndroidPluginVersion =
546+
packageJsonGradle.gradleAndroid;
519547
}
520548

521549
return runtimeVersions;

lib/yarn-package-manager.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,12 @@ export class YarnPackageManager extends BasePackageManager {
9595
this.$errors.fail(e.message);
9696
}
9797

98-
const result = JSON.parse(viewResult);
99-
return result.data;
98+
try {
99+
const result = JSON.parse(viewResult);
100+
return result.data;
101+
} catch (err) {
102+
return null;
103+
}
100104
}
101105

102106
@exported("yarn")

vendor/aab-tool/README.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Downloaded from https://github.com/google/bundletool/releases/tag/0.10.3
1+
Downloaded from https://github.com/google/bundletool/releases/tag/1.8.2

vendor/aab-tool/bundletool.jar

100755100644
5.72 MB
Binary file not shown.

vendor/gradle-plugin/build.gradle

+5-21
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ import static org.gradle.internal.logging.text.StyledTextOutput.Style
44

55
apply plugin: 'com.android.library'
66
apply plugin: 'kotlin-android'
7-
apply plugin: 'kotlin-android-extensions'
7+
apply plugin: 'kotlin-parcelize'
88

99

1010
buildscript {
11-
def computeKotlinVersion = { -> project.hasProperty("kotlinVersion") ? kotlinVersion : "1.4.21" }
11+
def computeKotlinVersion = { -> project.hasProperty("kotlinVersion") ? kotlinVersion : "1.6.0" }
1212
def kotlinVersion = computeKotlinVersion()
1313
repositories {
1414
google()
@@ -88,9 +88,9 @@ allprojects {
8888
}
8989

9090

91-
def computeCompileSdkVersion = { -> project.hasProperty("compileSdk") ? compileSdk : 28 }
91+
def computeCompileSdkVersion = { -> project.hasProperty("compileSdk") ? compileSdk : 31 }
9292
def computeBuildToolsVersion = { ->
93-
project.hasProperty("buildToolsVersion") ? buildToolsVersion : "28.0.3"
93+
project.hasProperty("buildToolsVersion") ? buildToolsVersion : "31.0.0"
9494
}
9595

9696
android {
@@ -100,28 +100,12 @@ android {
100100
buildToolsVersion computeBuildToolsVersion()
101101

102102
defaultConfig {
103-
targetSdkVersion 26
103+
targetSdkVersion 31
104104
versionCode 1
105105
versionName "1.0"
106106
}
107107
}
108108

109-
dependencies {
110-
def supportVer = "28.0.0"
111-
if (project.hasProperty("supportVersion")) {
112-
supportVer = supportVersion
113-
}
114-
compileOnly "com.android.support:support-v4:$supportVer"
115-
compileOnly "com.android.support:appcompat-v7:$supportVer"
116-
117-
configurations.all {
118-
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
119-
if (details.requested.group == "com.android.support" && !details.requested.name.startsWith("multidex")) {
120-
details.useVersion supportVer
121-
}
122-
}
123-
}
124-
}
125109

126110
def applyBeforePluginGradleConfiguration() {
127111
def appResourcesPath = getAppResourcesPath()

0 commit comments

Comments
 (0)