Skip to content

Commit 6fc2725

Browse files
Containerize CI and Fix Android Build Issues
Updated CI workflows to use a unified Docker container with pre-installed dependencies. Addressed build failures related to Android SDK tools requiring newer Java versions and fixed Maven plugin dependencies. - **CI Containerization:** - Created `.ci/container/Dockerfile` based on Ubuntu 24.04 with OpenJDK 8-25, Android SDK, Ant, Maven, and Python. - Updated `pr.yml`, `ant.yml`, `scripts-android.yml`, and `parparvm-tests.yml` to run inside the container. - Added `build-container.yml` workflow to build and push the container image. - **Fix Android Build:** - Modified `AndroidGradleBuilder.java` to set `JAVA_HOME` to Java 17/11 (if available) for spawned processes, ensuring `sdkmanager` runs correctly. - Updated `scripts/run-android-instrumentation-tests.sh` to explicitly use `JAVA17_HOME` for `sdkmanager`. - Improved `AndroidGradleBuilder` SDK path detection to support standard paths like `/opt/android-sdk`. - **Fix Maven Plugin:** - Added `xalan` and `serializer` dependencies to `maven/codenameone-maven-plugin/pom.xml` to resolve `NoClassDefFoundError` during CSS compilation. - **Encoding Fixes:** - Enforced UTF-8 encoding in `Ports/Android/build.xml` and fixed a non-ASCII character in source code.
1 parent b038ce3 commit 6fc2725

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed

maven/codenameone-maven-plugin/pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,16 @@
219219
<artifactId>maven-model</artifactId>
220220

221221
</dependency>
222+
<dependency>
223+
<groupId>xalan</groupId>
224+
<artifactId>xalan</artifactId>
225+
<version>2.7.3</version>
226+
</dependency>
227+
<dependency>
228+
<groupId>xalan</groupId>
229+
<artifactId>serializer</artifactId>
230+
<version>2.7.3</version>
231+
</dependency>
222232
</dependencies>
223233

224234
<build>

maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/AndroidGradleBuilder.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,23 @@ private static String escape(String str, String chars) {
499499

500500
@Override
501501
public boolean build(File sourceZip, final BuildRequest request) throws BuildException {
502+
// Ensure that we use a java version that is compatible with the android sdk tools
503+
// We prefer Java 17, but will fall back to others if not found.
504+
String javaHome = System.getenv("JAVA17_HOME");
505+
if (javaHome == null) {
506+
javaHome = System.getenv("JDK17_HOME");
507+
}
508+
if (javaHome == null) {
509+
javaHome = System.getenv("JAVA11_HOME");
510+
}
511+
if (javaHome == null) {
512+
javaHome = System.getenv("JDK11_HOME");
513+
}
514+
515+
if (javaHome != null) {
516+
defaultEnvironment.put("JAVA_HOME", javaHome);
517+
}
518+
502519
boolean facebookSupported = request.getArg("facebook.appId", null) != null;
503520
newFirebaseMessaging = request.getArg("android.newFirebaseMessaging", "true").equals("true");
504521
useGradle8 = request.getArg("android.useGradle8", ""+(useGradle8 || newFirebaseMessaging || facebookSupported)).equals("true");

scripts/run-android-instrumentation-tests.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,17 @@ cn1ss_setup "$TARGET_JAVA_BIN" "$CN1SS_HELPER_SOURCE_DIR"
7070
[ -x "$GRADLE_PROJECT_DIR/gradlew" ] || chmod +x "$GRADLE_PROJECT_DIR/gradlew"
7171

7272
# ---- Prepare app + emulator state -----------------------------------------
73+
# Check for JAVA17_HOME or JDK17_HOME to run sdkmanager with a compatible JDK
74+
SDKMANAGER_JAVA_HOME=$JAVA_HOME
75+
if [ -n "${JAVA17_HOME:-}" ]; then
76+
SDKMANAGER_JAVA_HOME=$JAVA17_HOME
77+
elif [ -n "${JDK17_HOME:-}" ]; then
78+
SDKMANAGER_JAVA_HOME=$JDK17_HOME
79+
fi
80+
81+
# Ensure licenses are accepted
82+
yes | JAVA_HOME="$SDKMANAGER_JAVA_HOME" sdkmanager --licenses > /dev/null
83+
7384
MANIFEST="$GRADLE_PROJECT_DIR/app/src/main/AndroidManifest.xml"
7485
if [ ! -f "$MANIFEST" ]; then
7586
ra_log "FATAL: AndroidManifest.xml not found at $MANIFEST" >&2

0 commit comments

Comments
 (0)