Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
ff00c30
Modernize project to hybrid Java/Kotlin on API 37
RajnishKMehta Jun 24, 2026
4902a0a
Update CI workflow to latest versions and add PR APK build support
RajnishKMehta Jun 24, 2026
a8b905a
Update Gradle and upload artifact actions
RajnishKMehta Jun 24, 2026
07f6d95
Add workflow_dispatch trigger to android.yml
RajnishKMehta Jun 24, 2026
fd879d2
Modify Android CI workflow configuration
RajnishKMehta Jun 24, 2026
e272ce3
Fix CI failures and refine modernization config
RajnishKMehta Jun 24, 2026
0a3d0d7
Update android.yml
RajnishKMehta Jun 24, 2026
e1262a2
Split CI workflows and implement dynamic versioning for debug builds
RajnishKMehta Jun 24, 2026
2fb1768
Update build.gradle
RajnishKMehta Jun 24, 2026
061f38f
Update GitHub Actions for Android Debug CI
RajnishKMehta Jun 24, 2026
9193fad
Update GitHub Actions to use newer action versions
RajnishKMehta Jun 24, 2026
ad1d02c
Update debug.yml
RajnishKMehta Jun 24, 2026
9e033a3
Update release.yml
RajnishKMehta Jun 24, 2026
c53f721
Update build.gradle
RajnishKMehta Jun 24, 2026
6279994
Rename build.gradle to build.gradle.kts
RajnishKMehta Jun 24, 2026
bfb6244
Add debug app name to strings.xml
RajnishKMehta Jun 24, 2026
de95fb8
Refactor build.gradle.kts for versioning and optimization
RajnishKMehta Jun 24, 2026
28dde0a
Test release build
RajnishKMehta Jun 24, 2026
dd4b1cb
Fix Proguard rules and dynamic versioning
RajnishKMehta Jun 24, 2026
cb5cdb5
Finalize Proguard rules and fix CI memory issues
RajnishKMehta Jun 24, 2026
286fdb6
Update versionCode and disable minification
RajnishKMehta Jun 24, 2026
a94d365
Update build.gradle.kts
RajnishKMehta Jun 24, 2026
4bbacec
xyz
RajnishKMehta Jun 24, 2026
d2184b8
Add debug IME string to strings.xml
RajnishKMehta Jun 25, 2026
1c2c577
Enhance release workflow with APK signing and zipalign
RajnishKMehta Jun 25, 2026
79e3544
Add signing configuration to build.gradle.kts for release APK signing
RajnishKMehta Jun 25, 2026
3af4612
Update release.yml
RajnishKMehta Jun 25, 2026
3b5f929
Remove signingConfigs from build.gradle.kts
RajnishKMehta Jun 25, 2026
83febd7
Update release.yml
RajnishKMehta Jun 25, 2026
01edf58
Fix CI failure and Release APK installation issue
RajnishKMehta Jun 25, 2026
f420698
Add debug IME string to strings.xml
RajnishKMehta Jun 25, 2026
d35b466
Implement Settings Export/Import and fix Release installation
RajnishKMehta Jun 25, 2026
1db3ff4
Implement robust Settings Export/Import and handle errors
RajnishKMehta Jun 25, 2026
834ac4a
Fix Settings import crash and add file validation
RajnishKMehta Jun 25, 2026
f7b3310
Remove indentation from JSON export
RajnishKMehta Jun 25, 2026
88ce4d7
Overhaul Settings Import/Export with strict validation
RajnishKMehta Jun 25, 2026
3f41d44
Final overhaul of Settings Import/Export with strict validation and e…
RajnishKMehta Jun 25, 2026
8dabdaf
Simplify Settings Import/Export and remove file name restrictions
RajnishKMehta Jun 25, 2026
b735699
Update export and import settings titles
RajnishKMehta Jun 25, 2026
f58b45a
Modify release signing configuration in build.gradle.kts
RajnishKMehta Jun 26, 2026
c0d4e5a
Delete faltu .idea files
RajnishKMehta Jun 26, 2026
b00f7ac
Migrate build.gradle to build.gradle.kts format
RajnishKMehta Jun 26, 2026
d3f53e3
Migrate settings.gradle to settings.gradle.kts format
RajnishKMehta Jun 26, 2026
e0e52f4
Enable minification and resource shrinking for release
RajnishKMehta Jun 26, 2026
eb9b30a
Update version code and version name
RajnishKMehta Jun 26, 2026
3b38153
Update release.yml
RajnishKMehta Jun 26, 2026
e0ebdc0
Update Backup & Restore category title reference
RajnishKMehta Jun 26, 2026
83a10e2
Address PR feedback: null streams, incremental reading, and non-negat…
RajnishKMehta Jun 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 0 additions & 38 deletions .github/workflows/android.yml

This file was deleted.

41 changes: 41 additions & 0 deletions .github/workflows/debug.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Android Debug CI (PR)

on:
pull_request:
types: [opened, synchronize, reopened]
branches: ['**']

workflow_dispatch:

concurrency:
group: pr-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Set up Java 21
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '21'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6

- name: Build Debug APK
run: ./gradlew assembleDebug --stacktrace
env:
GITHUB_RUN_NUMBER: ${{ github.run_number }}

- name: Upload Debug APK
uses: actions/upload-artifact@v7
with:
name: app-debug-apk
path: app/build/outputs/apk/debug/*.apk
retention-days: 60
38 changes: 38 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Android Release CI

on:
push:
branches: [ main, master ]

workflow_dispatch:

concurrency:
group: Release
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Set up Java 21
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '21'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6

- name: Build Release APK
run: ./gradlew assembleRelease --stacktrace

- name: Upload Release APK
uses: actions/upload-artifact@v7
with:
name: app-release-apk
path: app/build/outputs/apk/release/*.apk
retention-days: 60
10 changes: 0 additions & 10 deletions .idea/deploymentTargetDropDown.xml

This file was deleted.

10 changes: 0 additions & 10 deletions .idea/migrations.xml

This file was deleted.

73 changes: 0 additions & 73 deletions app/build.gradle

This file was deleted.

57 changes: 57 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
plugins {
id("com.android.application")
}

android {
namespace = "com.gazlaws.codeboard"
compileSdk = 37

defaultConfig {
applicationId = "com.gazlaws.codeboard"
minSdk = 23
targetSdk = 37
versionCode = 24
versionName = "7.0.0"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

buildTypes {
debug {
applicationIdSuffix = ".debug"
versionNameSuffix =
System.getenv("GITHUB_RUN_NUMBER")
?.let { "-debug-$it" }
?: "-debug"

}
release {
// Sign release build with debug key (if release not available) so it's installable from CI
val releaseConfig = signingConfigs.findByName("release")
signingConfig = releaseConfig ?: signingConfigs.getByName("debug")
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}

compileOptions {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
}

dependencies {
implementation("androidx.appcompat:appcompat:1.7.1")
implementation("androidx.preference:preference:1.2.1")
implementation("com.google.android.material:material:1.12.0")
implementation("com.github.AppIntro:AppIntro:6.3.1")
implementation("com.github.evilbunny2008:android-material-color-picker-dialog:1.3.7")

testImplementation("junit:junit:4.13.2")
implementation("androidx.annotation:annotation:1.10.0")
androidTestImplementation("androidx.annotation:annotation:1.10.0")
androidTestImplementation("androidx.test:core:1.7.0")
androidTestImplementation("androidx.test:runner:1.7.0")
androidTestImplementation("androidx.test.ext:junit:1.3.0")
}
72 changes: 55 additions & 17 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -1,17 +1,55 @@
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in C:\Users\Ruby\AppData\Local\Android\sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Project-specific ProGuard rules for Codeboard
# These rules ensure that essential classes are kept to prevent installation and runtime issues.

# Keep all project classes to ensure the IME and main activities function correctly
-keep class com.gazlaws.codeboard.** { *; }

# Keep Input Method Service and its internal implementations
-keep class * extends android.inputmethodservice.InputMethodService
-keep class * extends android.inputmethodservice.InputMethodService$InputMethodImpl

# AndroidX and Material Design components keep rules (Prevents issues with inflation and reflection)
-keep class androidx.appcompat.** { *; }
-keep class com.google.android.material.** { *; }
-keep class androidx.preference.** { *; }
-keep class androidx.annotation.** { *; }
-keep class androidx.core.** { *; }

# External Libraries: AppIntro and Color Picker
-keep class com.github.appintro.** { *; }
-keep class com.github.evilbunny2008.** { *; }

# Maintain standard Android component entry points
-keepattributes *Annotation*, Signature, SourceFile, LineNumberTable
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference

# Support for Javascript interfaces if utilized in WebViews
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}

# Preserve R class for resource access via reflection or dynamic lookup
-keep class **.R$* { *; }

# Maintain View constructors and setters for XML layout inflation
-keepclassmembers class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}

# Kotlin metadata preservation for hybrid interoperability
-keep class kotlin.Metadata { *; }
-dontwarn kotlin.**
-dontwarn org.jetbrains.kotlin.**

# Suppress warnings from common libraries that may be safely ignored during minification
-dontwarn androidx.**
-dontwarn com.google.android.material.**
4 changes: 4 additions & 0 deletions app/src/debug/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<resources>
<string name="app_name">CodeBoard Debug</string>
<string name="codeboard_ime">Debug CodeBoard IME</string>
</resources>
Loading