소스 검색

Merge pull request #11602 from nextcloud/chore/noid/AndroidGradle8

Android Gradle 8
Andy Scherzinger 2 년 전
부모
커밋
9ea3fbe058

+ 3 - 3
.drone.yml

@@ -5,7 +5,7 @@ name: tests-stable
 
 steps:
   - name: gplay
-    image: ghcr.io/nextcloud/continuous-integration-android8:2
+    image: ghcr.io/nextcloud/continuous-integration-android8:3
     privileged: true
     environment:
       LOG_USERNAME:
@@ -65,7 +65,7 @@ name: tests-master
 
 steps:
   - name: gplay
-    image: ghcr.io/nextcloud/continuous-integration-android8:2
+    image: ghcr.io/nextcloud/continuous-integration-android8:3
     privileged: true
     environment:
       LOG_USERNAME:
@@ -120,7 +120,7 @@ name: allScreenshots
 
 steps:
   - name: runAllScreenshots
-    image: ghcr.io/nextcloud/continuous-integration-android8:2
+    image: ghcr.io/nextcloud/continuous-integration-android8:3
     privileged: true
     environment:
       GIT_USERNAME:

+ 2 - 2
.github/workflows/analysis.yml

@@ -32,11 +32,11 @@ jobs:
                 with:
                     repository: ${{ steps.get-vars.outputs.repo }}
                     ref: ${{ steps.get-vars.outputs.branch }}
-            -   name: Set up JDK 11
+            -   name: Set up JDK 17
                 uses: actions/setup-java@5ffc13f4174014e2d4d4572b3d74c3fa61aeb2c2 # v3.11.0
                 with:
                     distribution: "temurin"
-                    java-version: 11
+                    java-version: 17
             -   name: Install dependencies
                 run: |
                     python3 -m pip install defusedxml

+ 2 - 2
.github/workflows/assembleFlavors.yml

@@ -16,11 +16,11 @@ jobs:
                 flavor: [ Generic, Gplay, Huawei ]
         steps:
             -   uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
-            -   name: set up JDK 11
+            -   name: set up JDK 17
                 uses: actions/setup-java@5ffc13f4174014e2d4d4572b3d74c3fa61aeb2c2 # v3
                 with:
                     distribution: "temurin"
-                    java-version: 11
+                    java-version: 17
             -   name: Build ${{ matrix.flavor }}
                 run: |
                     echo "org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError" >> gradle.properties

+ 2 - 2
.github/workflows/check.yml

@@ -16,10 +16,10 @@ jobs:
                 task: [ detekt, spotlessKotlinCheck ]
         steps:
             -   uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
-            -   name: Set up JDK 11
+            -   name: Set up JDK 17
                 uses: actions/setup-java@5ffc13f4174014e2d4d4572b3d74c3fa61aeb2c2 # v3
                 with:
                     distribution: "temurin"
-                    java-version: 11
+                    java-version: 17
             -   name: Check ${{ matrix.task }}
                 run: ./gradlew ${{ matrix.task }}

+ 2 - 2
.github/workflows/qa.yml

@@ -17,12 +17,12 @@ jobs:
                 id: check-secrets
             -   uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
                 if: ${{ steps.check-secrets.outputs.ok == 'true' }}
-            -   name: set up JDK 11
+            -   name: set up JDK 17
                 uses: actions/setup-java@5ffc13f4174014e2d4d4572b3d74c3fa61aeb2c2 # v3
                 if: ${{ steps.check-secrets.outputs.ok == 'true' }}
                 with:
                     distribution: "temurin"
-                    java-version: 11
+                    java-version: 17
             -   name: Install NDK and cmake
                 if: ${{ steps.check-secrets.outputs.ok == 'true' }}
                 run: |

+ 1 - 1
.github/workflows/screenShotTest.yml

@@ -39,7 +39,7 @@ jobs:
             -   uses: actions/setup-java@5ffc13f4174014e2d4d4572b3d74c3fa61aeb2c2 # v3
                 with:
                     distribution: "temurin"
-                    java-version: 11
+                    java-version: 17
 
             -   name: create AVD and generate snapshot for caching
                 if: steps.avd-cache.outputs.cache-hit != 'true'

+ 2 - 2
.github/workflows/unit-tests.yml

@@ -15,11 +15,11 @@ jobs:
         runs-on: ubuntu-latest
         steps:
             -   uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-            -   name: Set up JDK 11
+            -   name: Set up JDK 17
                 uses: actions/setup-java@5ffc13f4174014e2d4d4572b3d74c3fa61aeb2c2 # v3.11.0
                 with:
                     distribution: "temurin"
-                    java-version: 11
+                    java-version: 17
             -   name: Delete old comments
                 env:
                     GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

+ 8 - 3
app/build.gradle

@@ -4,7 +4,6 @@ import org.gradle.internal.jvm.Jvm
 buildscript {
     dependencies {
         classpath "com.android.tools.build:gradle:$androidPluginVersion"
-        classpath 'com.hiya:jacoco-android:0.2'
         classpath 'com.github.spotbugs.snom:spotbugs-gradle-plugin:5.0.14'
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
         classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.0"
@@ -27,7 +26,7 @@ apply plugin: 'kotlin-kapt'
 apply plugin: 'kotlin-parcelize'
 apply plugin: 'checkstyle'
 apply plugin: 'pmd'
-apply plugin: 'com.hiya.jacoco-android'
+apply from: "$rootProject.projectDir/jacoco.gradle"
 apply plugin: 'com.github.spotbugs'
 apply plugin: 'io.gitlab.arturbosch.detekt'
 apply plugin: 'shot'
@@ -208,10 +207,16 @@ android {
     buildFeatures {
         dataBinding true
         viewBinding true
+        aidl true
+    }
+
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_17
+        targetCompatibility JavaVersion.VERSION_17
     }
 
     kotlinOptions {
-        jvmTarget = "1.8"
+        jvmTarget = "17"
     }
 
     lint {

+ 5 - 3
appscan/build.gradle

@@ -24,12 +24,14 @@ android {
             minifyEnabled false
         }
     }
+
     compileOptions {
-        sourceCompatibility JavaVersion.VERSION_1_8
-        targetCompatibility JavaVersion.VERSION_1_8
+        sourceCompatibility JavaVersion.VERSION_17
+        targetCompatibility JavaVersion.VERSION_17
     }
+
     kotlinOptions {
-        jvmTarget = '1.8'
+        jvmTarget = '17'
     }
 }
 

+ 1 - 1
build.gradle

@@ -1,6 +1,6 @@
 buildscript {
     ext {
-        androidPluginVersion = '7.4.2'
+        androidPluginVersion = '8.0.2'
         appCompatVersion = '1.6.1'
         jacoco_version = '0.8.10'
         kotlin_version = '1.8.21'

+ 3 - 0
gradle.properties

@@ -4,4 +4,7 @@ NC_TEST_SERVER_USERNAME=test
 NC_TEST_SERVER_PASSWORD=test
 android.enableJetifier=true
 android.useAndroidX=true
+android.defaults.buildfeatures.buildconfig=true
+android.nonTransitiveRClass=false
+android.nonFinalResIds=false
 #android.debug.obsoleteApi=true

+ 1 - 1
gradle/wrapper/gradle-wrapper.properties

@@ -1,6 +1,6 @@
 #Fri Jan 13 08:21:45 CET 2023
 distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip
 distributionPath=wrapper/dists
 zipStorePath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME

+ 109 - 0
jacoco.gradle

@@ -0,0 +1,109 @@
+apply plugin: 'jacoco'
+
+jacoco {
+    toolVersion = "$jacoco_version"
+}
+
+// Force Jacoco Version
+
+subprojects {
+    configurations.all {
+        resolutionStrategy {
+            eachDependency { details ->
+                if ('org.jacoco' == details.requested.group) {
+                    details.useVersion "$jacocoVersion"
+                }
+            }
+        }
+    }
+}
+
+project.afterEvaluate { project ->
+
+    tasks.withType(Test) {
+        jacoco.includeNoLocationClasses = true
+        jacoco.excludes = ['jdk.internal.*']
+    }
+
+    final flavor = "Gplay"
+    final buildType = "Debug"
+    final variant = "$flavor${buildType.capitalize()}"
+    final taskName = "jacocoTest${variant.capitalize()}UnitTestReport"
+
+    task "$taskName"(type: JacocoReport, dependsOn: "test${variant.capitalize()}UnitTest") {
+
+        reports {
+            csv.required = Boolean.FALSE
+            xml.required = Boolean.TRUE
+            html.required = Boolean.TRUE
+        }
+
+        final fileFilter = [
+                // data binding
+                '**/databinding/*',
+                'android/databinding/**/*.class',
+                '**/android/databinding/*Binding.class',
+                '**/android/databinding/*',
+                '**/androidx/databinding/*',
+                '**/BR.*',
+                // android
+                '**/R.class',
+                '**/R$*.class',
+                '**/BuildConfig.*',
+                '**/Manifest*.*',
+                '**/*Test*.*',
+                'android/**/*.*',
+                // kotlin
+                '**/*MapperImpl*.*',
+                '**/*$ViewInjector*.*',
+                '**/*$ViewBinder*.*',
+                '**/BuildConfig.*',
+                '**/*Component*.*',
+                '**/*BR*.*',
+                '**/Manifest*.*',
+                '**/*$Lambda$*.*',
+                '**/*Companion*.*',
+                '**/*Module*.*',
+                '**/*Dagger*.*',
+                '**/*Hilt*.*',
+                '**/*MembersInjector*.*',
+                '**/*_MembersInjector.class',
+                '**/*_Factory*.*',
+                '**/*_Provide*Factory*.*',
+                '**/*Extensions*.*',
+                // sealed and data classes
+                '**/*$Result.*',
+                '**/*$Result$*.*',
+                // adapters generated by moshi
+                '**/*JsonAdapter.*',
+                // Hilt
+                '**/*Module.kt',
+                '**/di/**',
+                'dagger.hilt.internal/*',
+                'hilt_aggregated_deps/*',
+
+                '**/*$Result.*', /* filtering `sealed` and `data` classes */
+                '**/*$Result$*.*',/* filtering `sealed` and `data` classes */
+                '**/*Args*.*', /* filtering Navigation Component generated classes */
+                '**/*Directions*.*', /* filtering Navigation Component generated classes */
+                '**/*inlined*.class', /* filtering inlined classes */
+                '**/composables/**'
+                /* INSERT ANY OTHER JUNK YOU WANT FILTERED OUT HERE */
+        ]
+
+        final androidKotlinTree = fileTree(dir: "${project.buildDir}/tmp/kotlin-classes/${variant}", excludes: fileFilter)
+        final kotlinTree = fileTree(dir: "${project.buildDir}/classes/kotlin/main", excludes: fileFilter)
+        final javacTree = fileTree(dir: "${project.buildDir}/intermediates/javac/${variant}/classes", excludes: fileFilter)
+
+        final mainSrc = "${project.projectDir}/src/main/java"
+        final productFlavorSrc = "${project.projectDir}/src/${flavor}/java"
+        final buildTypeSrc = "${project.projectDir}/src/${buildType}/java"
+
+        sourceDirectories.setFrom files([mainSrc, productFlavorSrc, buildTypeSrc])
+        classDirectories.setFrom files([androidKotlinTree, kotlinTree, javacTree])
+        executionData.setFrom fileTree(dir: project.buildDir, includes: [
+                "jacoco/test${variant.capitalize()}UnitTest.exec",
+                "outputs/unit_test_code_coverage/${variant}UnitTest/test${variant.capitalize()}UnitTest.exec",
+        ])
+    }
+}