diff --git a/.github/workflows/android-continuous.yml b/.github/workflows/android-continuous.yml index d13d80e3e3..326ceb6546 100644 --- a/.github/workflows/android-continuous.yml +++ b/.github/workflows/android-continuous.yml @@ -14,6 +14,10 @@ jobs: steps: - uses: actions/checkout@v3.3.0 + - uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' - name: Run build script run: | cd build/android && printf "y" | ./build.sh continuous diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 93a59f0e62..849383a416 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -44,6 +44,10 @@ jobs: steps: - uses: actions/checkout@v3.3.0 + - uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' - name: Run build script run: | cd build/android && printf "y" | ./build.sh presubmit diff --git a/BUILDING.md b/BUILDING.md index a6054b074d..1577e02768 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -13,9 +13,10 @@ section below. To build Filament for Android you must also install the following: -- Android Studio Arctic Fox or more recent +- Android Studio Flamingo or more recent - Android SDK - Android NDK 25.1 or higher +- Java 17 ### Environment variables diff --git a/android/build.gradle b/android/build.gradle index 6d319972c5..e322ac68ae 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -82,11 +82,11 @@ buildscript { 'minSdk': 19, 'targetSdk': 33, 'compileSdk': 33, - 'kotlin': '1.8.0', + 'kotlin': '1.8.20', 'kotlin_coroutines': '1.6.4', - 'buildTools': '33.0.1', + 'buildTools': '33.0.2', 'ndk': '25.1.8937393', - 'androidx_core': '1.9.0', + 'androidx_core': '1.10.0', 'androidx_annotations': '1.3.0' ] @@ -103,7 +103,7 @@ buildscript { ] dependencies { - classpath 'com.android.tools.build:gradle:7.4.0' + classpath 'com.android.tools.build:gradle:8.0.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${versions.kotlin}" } @@ -194,6 +194,7 @@ subprojects { } ndk { + //noinspection ChromeOsAbiSupport abiFilters(*rootProject.ext.abis) } @@ -214,8 +215,8 @@ subprojects { } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility 17 + targetCompatibility 17 } } } diff --git a/android/filamat-android/build.gradle b/android/filamat-android/build.gradle index 5e9c4f5c58..46a6ea1980 100644 --- a/android/filamat-android/build.gradle +++ b/android/filamat-android/build.gradle @@ -17,6 +17,17 @@ android { } } } + + publishing { + singleVariant("fullRelease") { + withSourcesJar() + withJavadocJar() + } + singleVariant("liteRelease") { + withSourcesJar() + withJavadocJar() + } + } } dependencies { diff --git a/android/filament-android/build.gradle b/android/filament-android/build.gradle index b311edd2ce..b3a07143c6 100644 --- a/android/filament-android/build.gradle +++ b/android/filament-android/build.gradle @@ -1,5 +1,12 @@ android { namespace 'com.google.android.filament' + + publishing { + singleVariant("release") { + withSourcesJar() + withJavadocJar() + } + } } dependencies { diff --git a/android/filament-android/src/main/java/com/google/android/filament/ColorGrading.java b/android/filament-android/src/main/java/com/google/android/filament/ColorGrading.java index 00511ddb10..680e2585b8 100644 --- a/android/filament-android/src/main/java/com/google/android/filament/ColorGrading.java +++ b/android/filament-android/src/main/java/com/google/android/filament/ColorGrading.java @@ -118,6 +118,7 @@ public class ColorGrading { * * @deprecated Use {@link ColorGrading.Builder#toneMapper(ToneMapper)} */ + @Deprecated public enum ToneMapping { /** Linear tone mapping (i.e. no tone mapping). */ LINEAR, @@ -231,6 +232,7 @@ public class ColorGrading { * * @deprecated Use {@link #toneMapper(ToneMapper)} */ + @Deprecated public Builder toneMapping(ToneMapping toneMapping) { nBuilderToneMapping(mNativeBuilder, toneMapping.ordinal()); return this; diff --git a/android/filament-utils-android/build.gradle b/android/filament-utils-android/build.gradle index 64bd0c0bbd..a70e115d6c 100644 --- a/android/filament-utils-android/build.gradle +++ b/android/filament-utils-android/build.gradle @@ -21,16 +21,11 @@ android { excludes += ['lib/*/libfilament-jni.so', 'lib/*/libgltfio-jni.so'] } } -} -configurations.all { config -> - // Hack to preserve the version of the dependencies - if (!config.name.endsWith('Publication')) { - resolutionStrategy { - dependencySubstitution { - substitute(module("com.google.android.filament:gltfio-android:${VERSION_NAME}")).with(project(":gltfio-android")) - substitute(module("com.google.android.filament:gltfio-android-lite:${VERSION_NAME}")).with(project(":gltfio-android")) - } + publishing { + singleVariant("release") { + withSourcesJar() + withJavadocJar() } } } @@ -43,7 +38,7 @@ dependencies { implementation deps.coroutines.android api project(':filament-android') - api module("com.google.android.filament:gltfio-android:${VERSION_NAME}") + api project(':gltfio-android') } apply from: rootProject.file('gradle/gradle-mvn-push.gradle') diff --git a/android/gltfio-android/build.gradle b/android/gltfio-android/build.gradle index a4a3113fc7..93e9d16364 100644 --- a/android/gltfio-android/build.gradle +++ b/android/gltfio-android/build.gradle @@ -16,6 +16,13 @@ android { excludes += ['lib/*/libfilament-jni.so'] } } + + publishing { + singleVariant("fullRelease") { + withSourcesJar() + withJavadocJar() + } + } } dependencies { diff --git a/android/gradle.properties b/android/gradle.properties index fdcf41ac21..697982dc44 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -18,6 +18,9 @@ POM_DEVELOPER_NAME=Filament Team org.gradle.jvmargs=-Xmx1536m android.useAndroidX=true +android.defaults.buildfeatures.buildconfig=true +android.nonTransitiveRClass=false +android.nonFinalResIds=false com.google.android.filament.tools-dir=../../../out/release/filament com.google.android.filament.dist-dir=../out/android-release/filament diff --git a/android/gradle/gradle-mvn-push.gradle b/android/gradle/gradle-mvn-push.gradle index 18ee2a3eb3..c6bf2751f6 100644 --- a/android/gradle/gradle-mvn-push.gradle +++ b/android/gradle/gradle-mvn-push.gradle @@ -86,63 +86,10 @@ afterEvaluate { project -> } } - if (project.getPlugins().hasPlugin('com.android.application') || - project.getPlugins().hasPlugin('com.android.library')) { - - task androidJavadocs(type: Javadoc) { - source = android.sourceSets.main.java.source - classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) - excludes = ['**/*.kt'] - } - - task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { - classifier = 'javadoc' - from androidJavadocs.destinationDir - } - - task androidSourcesJar(type: Jar) { - classifier = 'sources' - from android.sourceSets.main.java.source - } - } - - if (JavaVersion.current().isJava8Compatible()) { - allprojects { - tasks.withType(Javadoc) { - options.addStringOption('Xdoclint:none', '-quiet') - } - } - } - - if (JavaVersion.current().isJava9Compatible()) { - allprojects { - tasks.withType(Javadoc) { - options.addBooleanOption('html5', true) - } - } - } - - artifacts { - if (project.getPlugins().hasPlugin('com.android.application') || - project.getPlugins().hasPlugin('com.android.library')) { - archives androidSourcesJar - archives androidJavadocsJar - } - } - - android.libraryVariants.all { variant -> - tasks.androidJavadocs.doFirst { - classpath += files(variant.javaCompileProvider.get().classpath.files.join(File.pathSeparator)) - } - } - publishing.publications.all { publication -> publication.groupId = GROUP publication.version = VERSION_NAME - publication.artifact androidSourcesJar - publication.artifact androidJavadocsJar - configurePom(publication.pom) } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 37da3ec845..6cbc1d9208 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Wed Nov 17 10:40:18 PST 2021 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/build/android/build.sh b/build/android/build.sh index 3df4981458..6b4fd0458e 100755 --- a/build/android/build.sh +++ b/build/android/build.sh @@ -44,6 +44,14 @@ elif [[ "$LC_UNAME" == "darwin" ]]; then fi source `dirname $0`/../common/build-common.sh +if [[ "$GITHUB_WORKFLOW" ]]; then + java_version=$(java -version 2>&1 | head -1 | cut -d'"' -f2 | sed '/^1\./s///' | cut -d'.' -f1) + if [[ "$java_version" < 17 ]]; then + echo "Android builds require Java 17, found version ${java_version} instead" + exit 0 + fi +fi + # Unless explicitly specified, NDK version will be set to match exactly the required one FILAMENT_NDK_VERSION=${FILAMENT_NDK_VERSION:-$(cat `dirname $0`/ndk.version)} diff --git a/build/common/ci-common.sh b/build/common/ci-common.sh index 7ea0b8de46..cb36ca7cdd 100755 --- a/build/common/ci-common.sh +++ b/build/common/ci-common.sh @@ -3,12 +3,4 @@ if [[ "$GITHUB_WORKFLOW" ]]; then echo "Running workflow $GITHUB_WORKFLOW (event: $GITHUB_EVENT_NAME, action: $GITHUB_ACTION)" CONTINUOUS_INTEGRATION=true - - # Force Java to be Java 11 minimum, it defaults to 8 in GitHub runners for some platforms - export JAVA_HOME=${JAVA_HOME_11_X64} - java_version=$(java -version 2>&1 | head -1 | cut -d'"' -f2 | sed '/^1\./s///' | cut -d'.' -f1) - if [[ "$java_version" < 11 ]]; then - echo "Android builds require Java 11, found version ${java_version} instead" - exit 0 - fi fi