Skip to content

Commit d27f7ec

Browse files
committed
Merge branch 'master' into release/v2
* master: Prepare for release 2.3.0. Force use Java 8 for sdkmanager and avdmanager. Update checkout action to v2.
2 parents 3f52989 + 1162b6c commit d27f7ec

File tree

7 files changed

+125
-9
lines changed

7 files changed

+125
-9
lines changed

.github/workflows/workflow.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ jobs:
1616
api-level: [21, 23, 29]
1717
steps:
1818
- name: checkout
19-
uses: actions/checkout@v1
20-
with:
21-
fetch-depth: 1
19+
uses: actions/checkout@v2
2220

2321
- name: build, test and lint
2422
run: |
@@ -30,6 +28,11 @@ jobs:
3028
- name: Prepare test fixture
3129
run: cp -a ./test-fixture/* ./
3230

31+
- name: Java 13
32+
uses: actions/setup-java@v1
33+
with:
34+
java-version: 13
35+
3336
- name: run action
3437
uses: ./
3538
with:

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Change Log
22

3+
## v2.3.0
4+
5+
* Added support for running the action with Java 9+ by forcing SDK manager and AVD manager to use Java 8.
6+
37
## v2.2.0
48

59
* Fixed an issue where emulator is killed prematurely.

README.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ jobs:
3232
runs-on: macOS-latest
3333
steps:
3434
- name: checkout
35-
uses: actions/checkout@v1
36-
with:
37-
fetch-depth: 1
35+
uses: actions/checkout@v2
3836
3937
- name: run tests
4038
uses: reactivecircus/android-emulator-runner@v2
@@ -55,9 +53,7 @@ jobs:
5553
target: [default, google_apis]
5654
steps:
5755
- name: checkout
58-
uses: actions/checkout@v1
59-
with:
60-
fetch-depth: 1
56+
uses: actions/checkout@v2
6157
6258
- name: run tests
6359
uses: reactivecircus/android-emulator-runner@v2

lib/java-version-manager.js

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
"use strict";
2+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3+
return new (P || (P = Promise))(function (resolve, reject) {
4+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6+
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7+
step((generator = generator.apply(thisArg, _arguments || [])).next());
8+
});
9+
};
10+
var __importStar = (this && this.__importStar) || function (mod) {
11+
if (mod && mod.__esModule) return mod;
12+
var result = {};
13+
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
14+
result["default"] = mod;
15+
return result;
16+
};
17+
Object.defineProperty(exports, "__esModule", { value: true });
18+
const core = __importStar(require("@actions/core"));
19+
const exec = __importStar(require("@actions/exec"));
20+
/**
21+
* Returns the current $JAVA_HOME path.
22+
*/
23+
function getCurrentJavaHome() {
24+
return __awaiter(this, void 0, void 0, function* () {
25+
let defaultJavaHome = '';
26+
yield exec.exec(`sh -c \\"echo $JAVA_HOME"`, [], {
27+
listeners: {
28+
stdout: (data) => {
29+
defaultJavaHome += data.toString();
30+
}
31+
}
32+
});
33+
return defaultJavaHome.trim();
34+
});
35+
}
36+
exports.getCurrentJavaHome = getCurrentJavaHome;
37+
/**
38+
* Returns the Java 8 $JAVA_HOME path.
39+
*/
40+
function getJavaHomeV8() {
41+
return __awaiter(this, void 0, void 0, function* () {
42+
let javaHomeV8 = '';
43+
yield exec.exec(`/usr/libexec/java_home -v 1.8`, [], {
44+
listeners: {
45+
stdout: (data) => {
46+
javaHomeV8 += data.toString();
47+
}
48+
}
49+
});
50+
return javaHomeV8.trim();
51+
});
52+
}
53+
exports.getJavaHomeV8 = getJavaHomeV8;
54+
/**
55+
* Sets $JAVA_HOME to the specified path.
56+
*/
57+
function setJavaHome(path) {
58+
core.exportVariable('JAVA_HOME', path);
59+
}
60+
exports.setJavaHome = setJavaHome;

lib/main.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const input_validator_1 = require("./input-validator");
2121
const emulator_manager_1 = require("./emulator-manager");
2222
const exec = __importStar(require("@actions/exec"));
2323
const script_parser_1 = require("./script-parser");
24+
const java_version_manager_1 = require("./java-version-manager");
2425
function run() {
2526
return __awaiter(this, void 0, void 0, function* () {
2627
try {
@@ -66,6 +67,9 @@ function run() {
6667
scripts.forEach((script) => __awaiter(this, void 0, void 0, function* () {
6768
console.log(`${script}`);
6869
}));
70+
// use Java 8 for sdkmanager and avdmanager
71+
const defaultJavaHome = yield java_version_manager_1.getCurrentJavaHome();
72+
java_version_manager_1.setJavaHome(yield java_version_manager_1.getJavaHomeV8());
6973
// install SDK
7074
yield sdk_installer_1.installAndroidSdk(apiLevel, target, arch, emulatorBuild);
7175
try {
@@ -75,6 +79,8 @@ function run() {
7579
catch (error) {
7680
core.setFailed(error.message);
7781
}
82+
// use default JAVA_HOME for running custom script
83+
java_version_manager_1.setJavaHome(defaultJavaHome);
7884
// execute the custom script
7985
try {
8086
for (const script of scripts) {

src/java-version-manager.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import * as core from '@actions/core';
2+
import * as exec from '@actions/exec';
3+
4+
/**
5+
* Returns the current $JAVA_HOME path.
6+
*/
7+
export async function getCurrentJavaHome(): Promise<string> {
8+
let defaultJavaHome = '';
9+
await exec.exec(`sh -c \\"echo $JAVA_HOME"`, [], {
10+
listeners: {
11+
stdout: (data: Buffer) => {
12+
defaultJavaHome += data.toString();
13+
}
14+
}
15+
});
16+
return defaultJavaHome.trim();
17+
}
18+
19+
/**
20+
* Returns the Java 8 $JAVA_HOME path.
21+
*/
22+
export async function getJavaHomeV8(): Promise<string> {
23+
let javaHomeV8 = '';
24+
await exec.exec(`/usr/libexec/java_home -v 1.8`, [], {
25+
listeners: {
26+
stdout: (data: Buffer) => {
27+
javaHomeV8 += data.toString();
28+
}
29+
}
30+
});
31+
return javaHomeV8.trim();
32+
}
33+
34+
/**
35+
* Sets $JAVA_HOME to the specified path.
36+
*/
37+
export function setJavaHome(path: string) {
38+
core.exportVariable('JAVA_HOME', path);
39+
}

src/main.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { checkApiLevel, checkTarget, checkArch, checkDisableAnimations, checkEmu
44
import { launchEmulator, killEmulator } from './emulator-manager';
55
import * as exec from '@actions/exec';
66
import { parseScript } from './script-parser';
7+
import { getCurrentJavaHome, getJavaHomeV8, setJavaHome } from './java-version-manager';
78

89
async function run() {
910
try {
@@ -58,6 +59,10 @@ async function run() {
5859
console.log(`${script}`);
5960
});
6061

62+
// use Java 8 for sdkmanager and avdmanager
63+
const defaultJavaHome = await getCurrentJavaHome();
64+
setJavaHome(await getJavaHomeV8());
65+
6166
// install SDK
6267
await installAndroidSdk(apiLevel, target, arch, emulatorBuild);
6368

@@ -68,6 +73,9 @@ async function run() {
6873
core.setFailed(error.message);
6974
}
7075

76+
// use default JAVA_HOME for running custom script
77+
setJavaHome(defaultJavaHome);
78+
7179
// execute the custom script
7280
try {
7381
for (const script of scripts) {

0 commit comments

Comments
 (0)