diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml new file mode 100644 index 0000000..1a30217 --- /dev/null +++ b/.github/workflows/android.yml @@ -0,0 +1,57 @@ +name: Android CI + +on: + push: + branches: [ "master" ] + tags: [ "*" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + - name: Build with Gradle + run: ./gradlew build --refresh-dependencies --s + + publish: + needs: build # Ensures that the 'publish' job runs after the 'build' job is successful + if: startsWith(github.ref, 'refs/tags/') # Ensure this job only runs for tags + runs-on: ubuntu-latest + env: + ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USER_NAME }} + ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} + ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_IN_MEMORY_KEY }} + ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.SIGNING_IN_MEMORY_KEY_PASSWORD }} + ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_IN_MEMORY_KEY_ID }} + steps: + - uses: actions/checkout@v4 + - name: Extract version from tag + id: extract_version + run: | + TAG_NAME=${GITHUB_REF#refs/tags/} + if [[ $TAG_NAME =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "SEMVER_TAG=$TAG_NAME" >> $GITHUB_STATE + else + echo "Not a semver tag. Exiting..." + exit 1 # Exit if it is not a semver tag. + fi + + - name: Set up Maven Central Repository + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + - name: Publish package to Maven Central Repository + run: ./gradlew publishToMavenCentral --no-configuration-cache --s -Pversion=$GITHUB_REF_NAME diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 14d0db2..0000000 --- a/.travis.yml +++ /dev/null @@ -1,53 +0,0 @@ -language: android -dist: trusty -jdk: openjdk8 - -env: - global: - - - SLAVE_AAPT_TIMEOUT=31 - - TERM=dumb - - GRADLE_OPTS="-XX:MaxPermSize=1024m -XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError -Xmx2048m -Dfile.encoding=UTF-8" - -matrix: - fast_finish: true - -android: - components: - - - platform-tools - - tools - - build-tools-32.0.0 - - android-32 - - extra-google-m2repository - - extra-android-m2repository - - # https://docs.travis-ci.com/user/languages/android/ - licenses: - - 'android-sdk-preview-license-.+' - - 'android-sdk-license-.+' - - 'google-gdk-license-.+' - -before_install: - - git submodule update --init --recursive - - chmod u+x gradlew - - android list sdk --no-ui --all --extended - - android list targets - - yes | sdkmanager "platforms;android-31" - - - -install: true - -script: - - wget https://github.com/sormuras/bach/raw/master/install-jdk.sh - - chmod +x $TRAVIS_BUILD_DIR/install-jdk.sh - - export JAVA_HOME=$HOME/openjdk11 - - $TRAVIS_BUILD_DIR/install-jdk.sh -F 11 --target $JAVA_HOME - - ./gradlew -v - - ./gradlew clean build --stacktrace - -after_failure: true - -notifications: - email: false diff --git a/ResourceExtensions/.gitignore b/AndroidResourceExtensions/.gitignore similarity index 100% rename from ResourceExtensions/.gitignore rename to AndroidResourceExtensions/.gitignore diff --git a/AndroidResourceExtensions/build.gradle b/AndroidResourceExtensions/build.gradle new file mode 100644 index 0000000..8daca88 --- /dev/null +++ b/AndroidResourceExtensions/build.gradle @@ -0,0 +1,99 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' + +android { + namespace "net.kibotu.resourceextension" + compileSdk compileSdkVer + buildToolsVersion = buildToolsVer + + defaultConfig { + minSdk minSdkVer + targetSdk targetSdkVer + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles 'consumer-rules.pro' + } + + buildTypes { + debug { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro', '../proguard-debug.pro' + } + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro', '../proguard-release.pro' + } + } + + // region java compile options + + java { + toolchain { + languageVersion.set(JavaLanguageVersion.of(17)) + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + // endregion + + // region kotlin compile options + + kotlinOptions { + jvmTarget = "17" + allWarningsAsErrors = false + kotlinOptions.verbose = true + freeCompilerArgs += [ + "-Xjvm-default=all-compatibility" + ] + } + + // endregion + + // region exclude duplicated meta inf files + + packagingOptions { + // DebugProbesKt.bin is used for java debugging (not needed for android) + // Hint: https://github.com/Kotlin/kotlinx.coroutines/issues/2274 + exclude 'DebugProbesKt.bin' + + excludes += '/META-INF/{AL2.0,LGPL2.1}' + // https://stackoverflow.com/a/61893957/1006741 + excludes -= "/META-INF/*.kotlin_module" + } + + // endregion +} + +dependencies { + coreLibraryDesugaring desugaring.jdk + implementation libs.supportAppCompat + implementation libs.applicationProvider +} + +if (!isJitpack) { + apply plugin: 'com.vanniktech.maven.publish' + mavenPublishing { + publishToMavenCentral(com.vanniktech.maven.publish.SonatypeHost.CENTRAL_PORTAL, true) + signAllPublications() + } +} + +if (isJitpack) { + apply plugin: 'maven-publish' + afterEvaluate { + publishing { + publications { + release(MavenPublication) { + from components.release + groupId = GROUP + artifactId = POM_ARTIFACT_ID + version = version + } + } + } + } +} diff --git a/ResourceExtensions/consumer-rules.pro b/AndroidResourceExtensions/consumer-rules.pro similarity index 100% rename from ResourceExtensions/consumer-rules.pro rename to AndroidResourceExtensions/consumer-rules.pro diff --git a/ResourceExtensions/proguard-rules.pro b/AndroidResourceExtensions/proguard-rules.pro similarity index 93% rename from ResourceExtensions/proguard-rules.pro rename to AndroidResourceExtensions/proguard-rules.pro index c0c2f6e..f1b4245 100644 --- a/ResourceExtensions/proguard-rules.pro +++ b/AndroidResourceExtensions/proguard-rules.pro @@ -19,5 +19,3 @@ # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile - --keep class net.kibotu.resourceextension.** { *; } \ No newline at end of file diff --git a/AndroidResourceExtensions/src/main/AndroidManifest.xml b/AndroidResourceExtensions/src/main/AndroidManifest.xml new file mode 100644 index 0000000..cc947c5 --- /dev/null +++ b/AndroidResourceExtensions/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + diff --git a/ResourceExtensions/src/main/java/net/kibotu/resourceextension/ManifestPermission.kt b/AndroidResourceExtensions/src/main/java/net/kibotu/resourceextension/ManifestPermission.kt similarity index 100% rename from ResourceExtensions/src/main/java/net/kibotu/resourceextension/ManifestPermission.kt rename to AndroidResourceExtensions/src/main/java/net/kibotu/resourceextension/ManifestPermission.kt diff --git a/ResourceExtensions/src/main/java/net/kibotu/resourceextension/Resource+Extensions.kt b/AndroidResourceExtensions/src/main/java/net/kibotu/resourceextension/Resource+Extensions.kt similarity index 100% rename from ResourceExtensions/src/main/java/net/kibotu/resourceextension/Resource+Extensions.kt rename to AndroidResourceExtensions/src/main/java/net/kibotu/resourceextension/Resource+Extensions.kt diff --git a/ResourceExtensions/src/main/res/values-ldltr/ltr-config.xml b/AndroidResourceExtensions/src/main/res/values-ldltr/ltr-config.xml similarity index 100% rename from ResourceExtensions/src/main/res/values-ldltr/ltr-config.xml rename to AndroidResourceExtensions/src/main/res/values-ldltr/ltr-config.xml diff --git a/ResourceExtensions/src/main/res/values-ldrtl/rtl-config.xml b/AndroidResourceExtensions/src/main/res/values-ldrtl/rtl-config.xml similarity index 100% rename from ResourceExtensions/src/main/res/values-ldrtl/rtl-config.xml rename to AndroidResourceExtensions/src/main/res/values-ldrtl/rtl-config.xml diff --git a/ResourceExtensions/src/main/res/values/colors.xml b/AndroidResourceExtensions/src/main/res/values/colors.xml similarity index 100% rename from ResourceExtensions/src/main/res/values/colors.xml rename to AndroidResourceExtensions/src/main/res/values/colors.xml diff --git a/ResourceExtensions/src/main/res/values/ltr-config.xml b/AndroidResourceExtensions/src/main/res/values/ltr-config.xml similarity index 100% rename from ResourceExtensions/src/main/res/values/ltr-config.xml rename to AndroidResourceExtensions/src/main/res/values/ltr-config.xml diff --git a/README.md b/README.md index 08331db..3149f76 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@ [![Donation](https://img.shields.io/badge/buy%20me%20a%20coffee-brightgreen.svg)](https://www.paypal.me/janrabe/5) [![About Jan Rabe](https://img.shields.io/badge/about-me-green.svg)](https://kibotu.net) [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-AndroidResourceExtensions-brightgreen.svg?style=flat)](https://android-arsenal.com/details/1/7880) - # Android Resource Extensions -[![Build Status](https://app.travis-ci.com/kibotu/AndroidResourceExtensions.svg?branch=master)](https://app.travis-ci.com/kibotu/AndroidResourceExtensions) [![](https://jitpack.io/v/kibotu/AndroidResourceExtensions.svg)](https://jitpack.io/#kibotu/AndroidResourceExtensions) [![](https://jitpack.io/v/kibotu/AndroidResourceExtensions/month.svg)](https://jitpack.io/#kibotu/AndroidResourceExtensions) [![Hits-of-Code](https://hitsofcode.com/github/kibotu/AndroidResourceExtensions)](https://hitsofcode.com/view/github/kibotu/AndroidResourceExtensions) [![Javadoc](https://img.shields.io/badge/javadoc-SNAPSHOT-green.svg)](https://jitpack.io/com/github/kibotu/AndroidResourceExtensions/master-SNAPSHOT/javadoc/index.html) [![API](https://img.shields.io/badge/API-15%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=15) [![Gradle Version](https://img.shields.io/badge/gradle-7.5-green.svg)](https://docs.gradle.org/current/release-notes) [![Kotlin](https://img.shields.io/badge/kotlin-1.7.10-green.svg)](https://kotlinlang.org/) [![GitHub license](https://img.shields.io/badge/license-Apache%202-blue.svg)](https://raw.githubusercontent.com/kibotu/AndroidResourceExtensions/master/LICENSE) [![androidx](https://img.shields.io/badge/androidx-brightgreen.svg)](https://developer.android.com/topic/libraries/support-library/refactor) +[![Maven Central Version](https://img.shields.io/maven-central/v/net.kibotu/ApplicationProvider)](https://central.sonatype.com/artifact/net.kibotu/ApplicationProvider) [![](https://jitpack.io/v/kibotu/ApplicationProvider.svg)](https://jitpack.io/#kibotu/ApplicationProvider) [![Android CI](https://github.com/kibotu/ApplicationProvider/actions/workflows/android.yml/badge.svg)](https://github.com/kibotu/ApplicationProvider/actions/workflows/android.yml) [![API](https://img.shields.io/badge/Min%20API-21%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=21) [![API](https://img.shields.io/badge/Target%20API-35%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=35) [![API](https://img.shields.io/badge/Java-17-brightgreen.svg?style=flat)](https://www.oracle.com/java/technologies/javase/17all-relnotes.html) [![Gradle Version](https://img.shields.io/badge/gradle-8.11.1-green.svg)](https://docs.gradle.org/current/release-notes) [![Kotlin](https://img.shields.io/badge/kotlin-2.1.0-green.svg)](https://kotlinlang.org/) [![](https://jitpack.io/v/kibotu/AndroidResourceExtensions/month.svg)](https://jitpack.io/#kibotu/AndroidResourceExtensions) [![Hits-of-Code](https://hitsofcode.com/github/kibotu/AndroidResourceExtensions)](https://hitsofcode.com/view/github/kibotu/AndroidResourceExtensions) Convenience extension methods for android's auto-generated /res folder *R.* class. diff --git a/ResourceExtensions/build.gradle b/ResourceExtensions/build.gradle deleted file mode 100644 index dbb077f..0000000 --- a/ResourceExtensions/build.gradle +++ /dev/null @@ -1,91 +0,0 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' -apply plugin: 'maven-publish' - -android { - compileSdkVersion 33 - buildToolsVersion "33.0.0" - - - defaultConfig { - minSdkVersion 15 - targetSdkVersion 33 - versionCode 1 - versionName "1.0" - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles 'consumer-rules.pro' - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - - // region java compile options - - compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 - } - - java { - toolchain { - languageVersion.set(JavaLanguageVersion.of(11)) - } - } - - // endregion - - // region kotlin compile options - - kotlinOptions { - jvmTarget = "11" - freeCompilerArgs += [ - // disable linting for opt-in annotations - "-opt-in=kotlin.RequiresOptIn", - ] - } - - // endregion - - // region lint - - lintOptions { - disable 'InvalidPackage' - abortOnError false // true by default - checkAllWarnings false - checkReleaseBuilds false - ignoreWarnings true // false by default - quiet true // false by default - ignoreTestSources true - checkDependencies true - tasks.lint.enabled = false - } - - // endregion -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.4.1' - implementation 'androidx.core:core-ktx:1.7.0' - implementation 'androidx.annotation:annotation:1.3.0' - - implementation "com.github.kibotu:ApplicationProvider:1.7.10" -} - -afterEvaluate { - publishing { - publications { - release(MavenPublication) { - from components.release - groupId = "com.github.kibotu" - artifactId = 'AndroidResourceExtensions' - version = libraryVersion - } - } - } -} diff --git a/ResourceExtensions/src/main/AndroidManifest.xml b/ResourceExtensions/src/main/AndroidManifest.xml deleted file mode 100644 index b4ea505..0000000 --- a/ResourceExtensions/src/main/AndroidManifest.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/app/build.gradle b/app/build.gradle index fd08b50..b3f400b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,77 +2,65 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { - compileSdkVersion 33 - buildToolsVersion "33.0.0" + namespace "net.kibotu.resourceextensions.demo" + compileSdk compileSdkVer + buildToolsVersion = buildToolsVer defaultConfig { applicationId "net.kibotu.resourceextensions.demo" - minSdkVersion 15 - targetSdkVersion 33 - versionCode 1 - versionName "1.0" + minSdk minSdkVer + targetSdk targetSdkVer + versionName version testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildTypes { + debug { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro', '../proguard-debug.pro' + } release { minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro', '../proguard-release.pro' } } - // region java compile options - compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 - } - java { toolchain { - languageVersion.set(JavaLanguageVersion.of(11)) + languageVersion.set(JavaLanguageVersion.of(17)) } } + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + // endregion // region kotlin compile options kotlinOptions { - jvmTarget = "11" + jvmTarget = "17" + allWarningsAsErrors = false + kotlinOptions.verbose = true freeCompilerArgs += [ - // disable linting for opt-in annotations - "-opt-in=kotlin.RequiresOptIn", + "-Xjvm-default=all-compatibility" ] } // endregion - - // region lint - - lintOptions { - disable 'InvalidPackage' - abortOnError false // true by default - checkAllWarnings false - checkReleaseBuilds false - ignoreWarnings true // false by default - quiet true // false by default - ignoreTestSources true - checkDependencies true - tasks.lint.enabled = false - } - - // endregion } dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'androidx.appcompat:appcompat-resources:1.3.1' - implementation 'androidx.core:core-ktx:1.7.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.1' - implementation 'com.google.android.material:material:1.4.0' + coreLibraryDesugaring desugaring.jdk + implementation libs.supportAppCompat + implementation libs.coreKtx + implementation libs.constraintLayout + implementation libs.material - implementation project(':ResourceExtensions') - implementation 'com.github.kibotu:ApplicationProvider:1.7.10' + implementation project(':AndroidResourceExtensions') + implementation libs.applicationProvider } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0e531de..d83b492 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,6 @@ + xmlns:android="http://schemas.android.com/apk/res/android"> = Build.VERSION_CODES.O) { + R.font.lato.resFont + } else { + TODO("VERSION.SDK_INT < O") + } val my_raw: InputStream = R.raw.my_raw.resRaw val my_interpolator: Interpolator = android.R.interpolator.anticipate_overshoot.resInterpolator val my_res_layout_animation_controller: LayoutAnimationController = R.anim.layout_animation.resLayoutAnimation diff --git a/app/src/main/res/values/values.xml b/app/src/main/res/values/values.xml index f8e065f..64f889f 100644 --- a/app/src/main/res/values/values.xml +++ b/app/src/main/res/values/values.xml @@ -8,7 +8,7 @@ lorem %.2f default - + Minutes Minute Minutes @@ -17,7 +17,7 @@ Minutes - + %s Minutes %s Minute %s Minutes diff --git a/build.gradle b/build.gradle index a0cca07..2294549 100644 --- a/build.gradle +++ b/build.gradle @@ -1,18 +1,18 @@ buildscript { - ext.kotlin_version = '1.7.10' - ext.libraryVersion = '1.7.10' + apply from: "./dependencies.gradle" repositories { google() mavenCentral() - maven { url "https://jitpack.io" } - + gradlePluginPortal() + maven { url 'https://jitpack.io' } } - dependencies { - classpath 'com.android.tools.build:gradle:7.2.1' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + dependencies { + classpath plugin.gradleBuildTools + classpath plugin.kotlinGradle + classpath plugin.mavenCentralPublish } } @@ -20,10 +20,7 @@ allprojects { repositories { google() mavenCentral() - maven { url "https://jitpack.io" } + gradlePluginPortal() + maven { url 'https://jitpack.io' } } -} - -task clean(type: Delete) { - delete rootProject.buildDir -} +} \ No newline at end of file diff --git a/dependencies.gradle b/dependencies.gradle new file mode 100755 index 0000000..d5bc843 --- /dev/null +++ b/dependencies.gradle @@ -0,0 +1,37 @@ +ext { + // refresh gradle dependencies: ./gradlew build --refresh-dependencies + minSdkVer = 21 + + compileSdkVer = 35 + buildToolsVer = "35.0.0" + targetSdkVer = 35 + + // @see https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib-jdk8 + kotlinVersion = "2.1.0" + + isJitpack = System.getenv("JITPACK") == "true" + + println "Compile Version: $compileSdkVer" + println "Min SDK Version: $minSdkVer" + println "Target SDK Version: $targetSdkVer" + println "Kotlin: $kotlinVersion" + println "Version Name: $version" +} + +ext.plugin = [ + mavenCentralPublish: "com.vanniktech:gradle-maven-publish-plugin:0.30.0", + gradleBuildTools : "com.android.tools.build:gradle:8.7.3", + kotlinGradle : "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion", +] + +ext.libs = [ + supportAppCompat : "androidx.appcompat:appcompat:1.7.0", + coreKtx : "androidx.core:core-ktx:1.7.0", + applicationProvider: "net.kibotu:ApplicationProvider:2.1.2", + constraintLayout : "androidx.constraintlayout:constraintlayout:2.1.4", + material : "com.google.android.material:material:1.12.0", +] + +ext.desugaring = [ + jdk: "com.android.tools:desugar_jdk_libs:2.1.3" +] diff --git a/gradle.properties b/gradle.properties index ebf261b..2e4f531 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,5 @@ -## ================================================================================================= -## gradle -## ================================================================================================= -org.gradle.jvmargs=-Xmx8g -Xms1g -XX:MaxPermSize=1g -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseCompressedOops -XX:+CMSClassUnloadingEnabled -XX:+UseParallelGC +# https://developer.android.com/build/optimize-your-build#experiment-with-the-jvm-parallel-garbage-collector +org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1g -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParallelGC -Dfile.encoding=UTF-8 org.gradle.caching=true org.gradle.configureondemand=true org.gradle.daemon=true @@ -9,10 +7,13 @@ org.gradle.info=true org.gradle.offline=true org.gradle.profile=true org.gradle.parallel=true -org.gradle.parallel.threads=8 -org.gradle.workers.max=32 -# https://blog.gradle.org/introducing-file-system-watching -org.gradle.unsafe.watch-fs=true +org.gradle.parallel.threads=12 +org.gradle.workers.max=12 +# https://docs.gradle.org/current/userguide/file_system_watching.html +org.gradle.vfs.watch=true +# https://docs.gradle.org/current/userguide/configuration_cache.html +org.gradle.configuration-cache=true +org.gradle.configuration-cache-problems=warn ## ================================================================================================= ## java ## ================================================================================================= @@ -23,35 +24,50 @@ compileJava.options.fork=true ## ================================================================================================= # https://developer.android.com/topic/libraries/support-library/androidx-overview android.useAndroidX=true -# Automatically convert third-party libraries to use AndroidX -android.enableJetifier=true -android.enableDexingArtifactTransform=false ## Determines whether to generate a BuildConfig class. -android.defaults.buildfeatures.buildconfig=true +android.defaults.buildfeatures.buildConfig=false ## Determines whether to support Data Binding. android.defaults.buildFeatures.dataBinding=false ## Determines whether to support View Binding. -android.defaults.buildFeatures.viewBinding=true +android.defaults.buildFeatures.viewBinding=false ## Determines whether to generate binder classes for your AIDL files. -android.defaults.buildfeatures.aidl=false -## Determines whether to support RenderScript. -android.defaults.buildfeatures.renderscript=false -## Determines whether to support injecting custom variables into the module’s R class. android.defaults.buildfeatures.resvalues=true ## Determines whether to support shader AOT compilation. android.defaults.buildfeatures.shaders=false +# https://r8.googlesource.com/r8/+/refs/heads/master/compatibility-faq.md#r8-full-mode +android.enableR8.fullMode=false +## since agp 8.0.0 changed default values must be reverted for desired Behaviour +# https://developer.android.com/build/releases/gradle-plugin#default-changes +android.nonFinalResIds=true +android.nonTransitiveRClass=false ## ================================================================================================= ## kotlin ## ================================================================================================= -# Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official kotlin.incremental=true kotlin.caching.enabled=true kotlin.incremental.js=true -## ================================================================================================= -## kapt -## ================================================================================================= -kapt.incremental.apt=true -# https://blog.jetbrains.com/kotlin/2019/04/kotlin-1-3-30-released/ -kapt.include.compile.classpath=false +kotlinOptions.allWarningsAsErrors=true +kotlinOptions.verbose=true +kotlinOptions.freeCompilerArgs=["-Xjvm-default=all-compatibility"] + +# publishing +GROUP=net.kibotu +POM_ARTIFACT_ID=AndroidResourceExtensions + +POM_NAME=AndroidResourceExtensions +POM_DESCRIPTION=Convenience extension methods for android's auto-generated /res folder *R.* class. Basically everything in your res/ and /assets folder can be accessed via an extension function. *Note: everything gets loaded with current activity context, if that is not available it uses application context.* +POM_INCEPTION_YEAR=2024 +POM_URL=https://github.com/kibotu/AndroidResourceExtensions + +POM_LICENSE_NAME=The Apache Software License, Version 2.0 +POM_LICENSE_URL=https://www.apache.org/licenses/LICENSE-2.0.txt +POM_LICENSE_DIST=repo + +POM_SCM_URL=https://github.com/kibotu/AndroidResourceExtensions +POM_SCM_CONNECTION=scm:git:git://github.com/kibotu/AndroidResourceExtensions.git +POM_SCM_DEV_CONNECTION=scm:git:ssh://git@github.com/kibotu/AndroidResourceExtensions.git +POM_DEVELOPER_ID=kibotu +POM_DEVELOPER_NAME=Jan Rabe +POM_DEVELOPER_URL=https://github.com/kibotu/ diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 249e583..a4b76b9 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8049c68..e2847c8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ 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.11.1-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index a69d9cb..f5feea6 100755 --- a/gradlew +++ b/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,13 +82,12 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,22 +134,29 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -193,11 +201,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/gradlew.bat b/gradlew.bat index 53a6b23..9b42019 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @@ -26,6 +28,7 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -42,11 +45,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -56,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/javadoc.gradle b/javadoc.gradle deleted file mode 100644 index 2e12598..0000000 --- a/javadoc.gradle +++ /dev/null @@ -1,24 +0,0 @@ -apply plugin: 'com.github.dcendents.android-maven' - -task sourcesJar(type: Jar) { - from android.sourceSets.main.java.srcDirs - classifier = 'sources' -} - -task javadoc(type: Javadoc) { - failOnError false - source = android.sourceSets.main.java.sourceFiles - classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) - classpath += configurations.compile -} - -// build a jar with javadoc -task javadocJar(type: Jar, dependsOn: javadoc) { - classifier = 'javadoc' - from javadoc.destinationDir -} - -artifacts { - archives sourcesJar - archives javadocJar -} \ No newline at end of file diff --git a/proguard-debug.pro b/proguard-debug.pro new file mode 100644 index 0000000..2cc5998 --- /dev/null +++ b/proguard-debug.pro @@ -0,0 +1,4 @@ +-verbose +-dontobfuscate +#-dontshrink +#-dontoptimize diff --git a/proguard-release.pro b/proguard-release.pro new file mode 100644 index 0000000..01ebccf --- /dev/null +++ b/proguard-release.pro @@ -0,0 +1,4 @@ +-verbose +#-dontobfuscate +#-dontshrink +#-dontoptimize diff --git a/settings.gradle b/settings.gradle index 7a7d552..47aa0b4 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1 @@ -include ':app', ':ResourceExtensions' -rootProject.name='AndroidResourceExtensions' +include ':app', ':AndroidResourceExtensions'