diff --git a/app/CHANGELOG.md b/app/CHANGELOG.md new file mode 100644 index 0000000..fcf0ac7 --- /dev/null +++ b/app/CHANGELOG.md @@ -0,0 +1,27 @@ +# Changelog + +Version history for HyperGames. + +## 0.1.0 (2026-11-04) + +**Internal Facelift** + +- Newer Android SDKs + - Icon is the correct size, no longer gets padded. + - Screens no longer get hidden by action bar. +- Upgrades + - Migrated from AppCompat libraries to AndroidX. + - Updated plugin versions such as AGP and Gradle. +- APK for release is now filtered to arm-v8a. + +minSDK is now 21 from 14. + +## 0.0.11 (2025-07-22) + +- Minify the APK. Reduced from 1.7MB to 1.3MB with a single setting change. +- Deleted APK from the previous release since no other changes were made. + +## 0.0.10 (2025-07-22) + +- Begin targeting SDK 36 (Android 16). +- Remove ad-related code. \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle deleted file mode 100755 index d76bd63..0000000 --- a/app/build.gradle +++ /dev/null @@ -1,38 +0,0 @@ -apply plugin: 'com.android.application' - -android { - namespace "com.hyperling.apps.games" - compileSdkVersion 36 - defaultConfig { - applicationId "apps.hyperling.com.platformer" - minSdkVersion 14 - targetSdkVersion 36 - versionCode 12 - versionName "0.0.11" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" - } - buildTypes { - release { - minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - -dependencies { - /* - compile fileTree(dir: 'libs', include: ['*.jar']) - androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { - exclude group: 'com.android.support', module: 'support-annotations' - }) - compile 'com.android.support:appcompat-v7:24.2.1' - testCompile 'junit:junit:4.12' - */ - - implementation fileTree(dir: 'libs', include: ['*.jar']) - androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', { - exclude group: 'com.android.support', module: 'support-annotations' - }) - // https://mvnrepository.com/artifact/com.android.support/appcompat-v7 - implementation group: 'com.android.support', name: 'appcompat-v7', version: '28.0.0' -} diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000..f475d97 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,50 @@ +plugins { + alias(libs.plugins.androidApplication) +} + +android { + namespace = "com.hyperling.apps.games" + compileSdk = 37 + + defaultConfig { + applicationId = "apps.hyperling.com.platformer" + minSdk = 21 + targetSdk = 37 + versionCode = 13 + versionName = "0.1.0" + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + kotlin { + compilerOptions { + jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17) + } + } + + buildTypes { + release { + isMinifyEnabled = true + isShrinkResources = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + ndk { + abiFilters += listOf("arm64-v8a") + } + } + } +} + +dependencies { + implementation(libs.androidx.appcompat) + + testImplementation(libs.junit) + androidTestImplementation(libs.junit.ext) + androidTestImplementation(libs.espresso.core) +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bc9c177..ec9cc0e 100755 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,11 +1,6 @@ - - - - + xmlns:tools="http://schemas.android.com/tools"> - \ No newline at end of file + diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000..79afd0c Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ diff --git a/app/src/main/java/com/hyperling/apps/games/GameActivity.java b/app/src/main/java/com/hyperling/apps/games/GameActivity.java index 96edaa1..7b6c796 100755 --- a/app/src/main/java/com/hyperling/apps/games/GameActivity.java +++ b/app/src/main/java/com/hyperling/apps/games/GameActivity.java @@ -1,7 +1,7 @@ package com.hyperling.apps.games; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.view.Window; import android.view.WindowManager; diff --git a/app/src/main/java/com/hyperling/apps/games/HighScoreActivity.java b/app/src/main/java/com/hyperling/apps/games/HighScoreActivity.java index ae90619..91167cb 100755 --- a/app/src/main/java/com/hyperling/apps/games/HighScoreActivity.java +++ b/app/src/main/java/com/hyperling/apps/games/HighScoreActivity.java @@ -1,7 +1,7 @@ package com.hyperling.apps.games; import android.content.SharedPreferences; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.LinearLayout; diff --git a/app/src/main/java/com/hyperling/apps/games/MainActivity.java b/app/src/main/java/com/hyperling/apps/games/MainActivity.java index 7a7cb0e..7ebf712 100755 --- a/app/src/main/java/com/hyperling/apps/games/MainActivity.java +++ b/app/src/main/java/com/hyperling/apps/games/MainActivity.java @@ -2,7 +2,7 @@ package com.hyperling.apps.games; import android.content.Intent; import android.content.SharedPreferences; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; diff --git a/app/src/main/java/com/hyperling/apps/games/OptionsActivity.java b/app/src/main/java/com/hyperling/apps/games/OptionsActivity.java index 9679043..8970af3 100755 --- a/app/src/main/java/com/hyperling/apps/games/OptionsActivity.java +++ b/app/src/main/java/com/hyperling/apps/games/OptionsActivity.java @@ -3,7 +3,7 @@ package com.hyperling.apps.games; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.view.WindowManager; import android.widget.Button; diff --git a/app/src/main/res/drawable/ic_launcher_monochrome.xml b/app/src/main/res/drawable/ic_launcher_monochrome.xml new file mode 100644 index 0000000..a1b84c0 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_monochrome.xml @@ -0,0 +1,18 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_high_score.xml b/app/src/main/res/layout/activity_high_score.xml index 3b9ad16..a061161 100755 --- a/app/src/main/res/layout/activity_high_score.xml +++ b/app/src/main/res/layout/activity_high_score.xml @@ -9,7 +9,7 @@ android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" - android:layout_marginTop="?android:actionBarSize" + android:fitsSystemWindows="true" tools:context="com.hyperling.apps.games.HighScoreActivity"> + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..081998b --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png index cde69bc..a5bc8b0 100755 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..8cd6b32 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000..a5bc8b0 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png index c133a0c..af98605 100755 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..02a5e75 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000..af98605 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png index bfa42f0..371828b 100755 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..feee4a8 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000..371828b Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 324e72c..50e68c3 100755 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..7483ef7 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..50e68c3 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index aee44e1..bc6792b 100755 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..96d40da Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..bc6792b Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..f21f12b --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #6400C8 + \ No newline at end of file diff --git a/apps.hyperling.com.platformer.yml b/apps.hyperling.com.platformer.yml index 61506e6..cab9ef2 100644 --- a/apps.hyperling.com.platformer.yml +++ b/apps.hyperling.com.platformer.yml @@ -1,11 +1,16 @@ AuthorName: 'Chad Michael "Hyperling" Greenwood' -SourceCode: 'https://git.hyperling.com/me/android-hypergames/' -WebSite: 'https://hyperling.com/apps' +AuthorWebSite: 'https://hyperling.com/about/' +Donate: 'https://hyperling.com/donate/' +Liberapay: 'HyperVegan' +Bitcoin: 'bc1qsfe8dkvry3d34kztz449gkq67wq8fu2nkgfkh0' +Litecoin: 'ltc1qavmpu5d6ljntxsd6jj548m4yys83zwscl0dzkx' +IssueTracker: 'https://hyperling.com/contact/' Categories: - fdroid - hyperling - games -CurrentVersionCode: 2147483647 -IssueTracker: 'mailto:me@hyperling.com' Name: Hyper Games +AuthorEmail: 'me+hypergames@hyperling.com' Summary: 'Started as a fun project for learning. Playable but unfinished.' +SourceCode: 'https://git.hyperling.com/me/android-hypergames/' +WebSite: 'https://hyperling.com/apps/#games' diff --git a/build.gradle b/build.gradle deleted file mode 100755 index bfc1796..0000000 --- a/build.gradle +++ /dev/null @@ -1,32 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - -buildscript { - repositories { - mavenCentral() - maven { - url 'https://jitpack.io' - } - google() - maven { - url 'https://maven.google.com/' - name 'Google' - } - } - dependencies { - classpath 'com.android.tools.build:gradle:8.11.1' - - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files - } -} - -allprojects { - repositories { - mavenCentral() - google() - } -} - -task clean(type: Delete) { - delete rootProject.buildDir -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..c49091b --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1 @@ +// Root build file - plugins managed via gradle/libs.versions.toml diff --git a/gradle.properties b/gradle.properties index aac7c9b..88f1374 100755 --- a/gradle.properties +++ b/gradle.properties @@ -15,3 +15,7 @@ org.gradle.jvmargs=-Xmx1536m # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true + +# Move to AndroidX +android.useAndroidX=true +# android.enableJetifier removed - all support libs migrated to AndroidX \ No newline at end of file diff --git a/gradle/gradle-daemon-jvm.properties b/gradle/gradle-daemon-jvm.properties new file mode 100644 index 0000000..fa4ed51 --- /dev/null +++ b/gradle/gradle-daemon-jvm.properties @@ -0,0 +1,12 @@ +#This file is generated by updateDaemonJvm +toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cf726b4a1c84b50457225f9bba6d7650/redirect +toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect +toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cf726b4a1c84b50457225f9bba6d7650/redirect +toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect +toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/c2dd35c9d0aaf0ba6ad0791320f99dfc/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/e5810bd7fd1f8a586644409d395a7e55/redirect +toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cf726b4a1c84b50457225f9bba6d7650/redirect +toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect +toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/7b3c4877c0749019e6805bb61e421497/redirect +toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/d76df094a9cbbabd3b08251f9e61444a/redirect +toolchainVersion=25 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..d2d272d --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,19 @@ +[versions] +agp = "9.5.0" +kotlin = "2.4.21" +coreKtx = "1.19.1" +appcompat = "1.7.1" +espressoCore = "3.7.0" +junit = "4.13.2" +junitVersion = "1.3.0" + +[libraries] +androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } +androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } +espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } +junit = { group = "junit", name = "junit", version.ref = "junit" } +junit-ext = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } + +[plugins] +androidApplication = { id = "com.android.application", version.ref = "agp" } +kotlinCompose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 275e5b5..a445ea8 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Thu Jan 10 06:49:36 CST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.8.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle deleted file mode 100755 index e7b4def..0000000 --- a/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -include ':app' diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..d06488f --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,19 @@ +pluginManagement { + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + maven { url = uri("https://jitpack.io") } + } +} + +rootProject.name = "HyperGames" +include(":app")