From bdc7bbffc1377226fb72dd03aff5dda92b0cac00 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sun, 29 Sep 2024 14:11:47 +0530 Subject: Add release config + build apk setup --- android/app/build.gradle | 26 +++++++++++-- .../java/com/owynlauncherrewrite/MainActivity.kt | 22 ----------- .../com/owynlauncherrewrite/MainApplication.kt | 43 --------------------- .../dev/ediblemonad/owynlauncher/MainActivity.kt | 22 +++++++++++ .../ediblemonad/owynlauncher/MainApplication.kt | 43 +++++++++++++++++++++ android/app/src/main/res/values/strings.xml | 2 +- android/build.gradle | 2 +- app.json | 2 +- bun.lockb | Bin 399052 -> 399052 bytes flake.nix | 14 +++---- justfile | 32 ++++++++++++--- 11 files changed, 125 insertions(+), 83 deletions(-) delete mode 100644 android/app/src/main/java/com/owynlauncherrewrite/MainActivity.kt delete mode 100644 android/app/src/main/java/com/owynlauncherrewrite/MainApplication.kt create mode 100644 android/app/src/main/java/dev/ediblemonad/owynlauncher/MainActivity.kt create mode 100644 android/app/src/main/java/dev/ediblemonad/owynlauncher/MainApplication.kt diff --git a/android/app/build.gradle b/android/app/build.gradle index 57743c6..7ade26d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -71,14 +71,18 @@ def enableProguardInReleaseBuilds = true */ def jscFlavor = 'org.webkit:android-jsc:+' +// Local properties +def Properties localProperties = new Properties() +localProperties.load(project.rootProject.file("local.properties").newDataInputStream()) + android { ndkVersion rootProject.ext.ndkVersion buildToolsVersion rootProject.ext.buildToolsVersion compileSdk rootProject.ext.compileSdkVersion - namespace "com.owynlauncherrewrite" + namespace "dev.ediblemonad.owynlauncher" defaultConfig { - applicationId "com.owynlauncherrewrite" + applicationId "dev.ediblemonad.owynlauncher" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 @@ -91,7 +95,14 @@ android { keyAlias 'androiddebugkey' keyPassword 'android' } + release { + storeFile file("release.keystore") + storePassword localProperties.getProperty('OWYN_STORE_PASS') + keyAlias 'releasekey' + keyPassword localProperties.getProperty('OWYN_KEY_PASS') + } } + buildTypes { debug { signingConfig signingConfigs.debug @@ -99,11 +110,20 @@ android { release { // Caution! In production, you need to generate your own keystore file. // see https://reactnative.dev/docs/signed-apk-android. - signingConfig signingConfigs.debug + signingConfig signingConfigs.release minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" } } + + splits { + abi { + reset() + enable true + universalApk true + include "armeabi-v7a", "arm64-v8a", "x86", "x86_64" + } + } } dependencies { diff --git a/android/app/src/main/java/com/owynlauncherrewrite/MainActivity.kt b/android/app/src/main/java/com/owynlauncherrewrite/MainActivity.kt deleted file mode 100644 index c784bb9..0000000 --- a/android/app/src/main/java/com/owynlauncherrewrite/MainActivity.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.owynlauncherrewrite - -import com.facebook.react.ReactActivity -import com.facebook.react.ReactActivityDelegate -import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled -import com.facebook.react.defaults.DefaultReactActivityDelegate - -class MainActivity : ReactActivity() { - - /** - * Returns the name of the main component registered from JavaScript. This is used to schedule - * rendering of the component. - */ - override fun getMainComponentName(): String = "OwynLauncherRewrite" - - /** - * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate] - * which allows you to enable New Architecture with a single boolean flags [fabricEnabled] - */ - override fun createReactActivityDelegate(): ReactActivityDelegate = - DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled) -} diff --git a/android/app/src/main/java/com/owynlauncherrewrite/MainApplication.kt b/android/app/src/main/java/com/owynlauncherrewrite/MainApplication.kt deleted file mode 100644 index 4583c39..0000000 --- a/android/app/src/main/java/com/owynlauncherrewrite/MainApplication.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.owynlauncherrewrite - -import android.app.Application -import com.facebook.react.PackageList -import com.facebook.react.ReactApplication -import com.facebook.react.ReactHost -import com.facebook.react.ReactNativeHost -import com.facebook.react.ReactPackage -import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load -import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost -import com.facebook.react.defaults.DefaultReactNativeHost -import com.facebook.soloader.SoLoader - -class MainApplication : Application(), ReactApplication { - - override val reactNativeHost: ReactNativeHost = - object : DefaultReactNativeHost(this) { - override fun getPackages(): List = - PackageList(this).packages.apply { - // Packages that cannot be autolinked yet can be added manually here, for example: - // add(MyReactNativePackage()) - } - - override fun getJSMainModuleName(): String = "index" - - override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG - - override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED - override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED - } - - override val reactHost: ReactHost - get() = getDefaultReactHost(applicationContext, reactNativeHost) - - override fun onCreate() { - super.onCreate() - SoLoader.init(this, false) - if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { - // If you opted-in for the New Architecture, we load the native entry point for this app. - load() - } - } -} diff --git a/android/app/src/main/java/dev/ediblemonad/owynlauncher/MainActivity.kt b/android/app/src/main/java/dev/ediblemonad/owynlauncher/MainActivity.kt new file mode 100644 index 0000000..c72d8ee --- /dev/null +++ b/android/app/src/main/java/dev/ediblemonad/owynlauncher/MainActivity.kt @@ -0,0 +1,22 @@ +package dev.ediblemonad.owynlauncher + +import com.facebook.react.ReactActivity +import com.facebook.react.ReactActivityDelegate +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled +import com.facebook.react.defaults.DefaultReactActivityDelegate + +class MainActivity : ReactActivity() { + + /** + * Returns the name of the main component registered from JavaScript. This is used to schedule + * rendering of the component. + */ + override fun getMainComponentName(): String = "OwynLauncherRewrite" + + /** + * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate] + * which allows you to enable New Architecture with a single boolean flags [fabricEnabled] + */ + override fun createReactActivityDelegate(): ReactActivityDelegate = + DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled) +} diff --git a/android/app/src/main/java/dev/ediblemonad/owynlauncher/MainApplication.kt b/android/app/src/main/java/dev/ediblemonad/owynlauncher/MainApplication.kt new file mode 100644 index 0000000..34763cb --- /dev/null +++ b/android/app/src/main/java/dev/ediblemonad/owynlauncher/MainApplication.kt @@ -0,0 +1,43 @@ +package dev.ediblemonad.owynlauncher + +import android.app.Application +import com.facebook.react.PackageList +import com.facebook.react.ReactApplication +import com.facebook.react.ReactHost +import com.facebook.react.ReactNativeHost +import com.facebook.react.ReactPackage +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load +import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost +import com.facebook.react.defaults.DefaultReactNativeHost +import com.facebook.soloader.SoLoader + +class MainApplication : Application(), ReactApplication { + + override val reactNativeHost: ReactNativeHost = + object : DefaultReactNativeHost(this) { + override fun getPackages(): List = + PackageList(this).packages.apply { + // Packages that cannot be autolinked yet can be added manually here, for example: + // add(MyReactNativePackage()) + } + + override fun getJSMainModuleName(): String = "index" + + override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG + + override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED + override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED + } + + override val reactHost: ReactHost + get() = getDefaultReactHost(applicationContext, reactNativeHost) + + override fun onCreate() { + super.onCreate() + SoLoader.init(this, false) + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + // If you opted-in for the New Architecture, we load the native entry point for this app. + load() + } + } +} diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index bd75c71..4890b05 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - OwynLauncherRewrite + Owyn Launcher diff --git a/android/build.gradle b/android/build.gradle index f536a79..ece1ef8 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,7 +1,7 @@ buildscript { ext { buildToolsVersion = "34.0.0" - minSdkVersion = 23 + minSdkVersion = 29 compileSdkVersion = 34 targetSdkVersion = 34 ndkVersion = "26.1.10909125" diff --git a/app.json b/app.json index 2253436..473d7b4 100644 --- a/app.json +++ b/app.json @@ -1,4 +1,4 @@ { "name": "OwynLauncherRewrite", - "displayName": "OwynLauncherRewrite" + "displayName": "Owyn Launcher" } diff --git a/bun.lockb b/bun.lockb index 33efa1e..7ca9ec0 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/flake.nix b/flake.nix index 8f7b761..785f9de 100644 --- a/flake.nix +++ b/flake.nix @@ -27,19 +27,19 @@ cmakeVersions = [ "3.22.1" ]; }; in pkgs.mkShell rec { - buildInputs = with pkgs; [ - bun - nodePackages."@tailwindcss/language-server" - nodePackages.typescript - nodePackages.typescript-language-server + buildInputs = [ + pkgs.bun + pkgs.nodePackages."@tailwindcss/language-server" + pkgs.nodePackages.typescript + pkgs.nodePackages.typescript-language-server androidComposition.androidsdk androidComposition.platform-tools jdk - just + pkgs.just - libxml2 + pkgs.libxml2 ]; nativeBuildInputs = with pkgs; [ clang ]; diff --git a/justfile b/justfile index 7e56d9c..d0b3aa4 100644 --- a/justfile +++ b/justfile @@ -1,11 +1,33 @@ +set positional-arguments + +dev: + bun start + +build: + bunx react-native build-android --mode=release --tasks 'assembleRelease'; + +clean: + cd android && ./gradlew clean; + # bunx react-native clean; + +apks: + @echo "=== Generated APKs ===" + ls -la android/app/build/outputs/apk/* 2>/dev/null || true + +install: + #!/usr/bin/env bash + apk="$(ls android/app/build/outputs/apk/**/*.apk | fzf)"; + if ! [ -z "$apk" ]; then + adb install "$apk" && just open; + fi; + +open: + adb shell am start -a android.intent.action.MAIN -n dev.ediblemonad.owynlauncher/.MainActivity; android-setup: sdkmanager "$MY_ANDROID_AVD_PKG" && \ - avdmanager create avd -n channels -k "$MY_ANDROID_AVD_PKG" --device 26 --force; + avdmanager create avd -n owyn -k "$MY_ANDROID_AVD_PKG" --device 26 --force; emu: - emulator -gpu swiftshader_indirect @channels - -build: - bun run react-native build-android --mode release + emulator -gpu swiftshader_indirect @owyn -- cgit v1.3.1