diff --git a/.changeset/breezy-carrots-fold.md b/.changeset/breezy-carrots-fold.md new file mode 100644 index 000000000..deca704b4 --- /dev/null +++ b/.changeset/breezy-carrots-fold.md @@ -0,0 +1,5 @@ +--- +'@powersync/capacitor': patch +--- + +[Android] Fixed missing CMakeLists file error. diff --git a/.github/workflows/test-isolated.yaml b/.github/workflows/test-isolated.yaml index 31b643c83..8581dfbbc 100644 --- a/.github/workflows/test-isolated.yaml +++ b/.github/workflows/test-isolated.yaml @@ -17,7 +17,16 @@ jobs: - name: Setup NodeJS uses: actions/setup-node@v4 with: - node-version-file: '.nvmrc' + node-version-file: ".nvmrc" + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: "21" + distribution: "temurin" + + - name: Set up Gradle + uses: gradle/actions/setup-gradle@v4 - uses: pnpm/action-setup@v2 name: Install pnpm diff --git a/demos/example-capacitor/android/app/build.gradle b/demos/example-capacitor/android/app/build.gradle index f77855be8..c946bff6f 100644 --- a/demos/example-capacitor/android/app/build.gradle +++ b/demos/example-capacitor/android/app/build.gradle @@ -20,7 +20,6 @@ android { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - signingConfig signingConfigs.debug } } } diff --git a/demos/example-capacitor/android/debug-isolated.keystore b/demos/example-capacitor/android/debug-isolated.keystore new file mode 100644 index 000000000..363d5205e Binary files /dev/null and b/demos/example-capacitor/android/debug-isolated.keystore differ diff --git a/demos/example-capacitor/capacitor.config.json b/demos/example-capacitor/capacitor.config.json index aab7189f4..483f68395 100644 --- a/demos/example-capacitor/capacitor.config.json +++ b/demos/example-capacitor/capacitor.config.json @@ -9,7 +9,14 @@ } }, "android": { - "loggingBehavior": "production" + "loggingBehavior": "production", + "buildOptions": { + "releaseType": "APK", + "keystorePath": "debug-isolated.keystore", + "keystorePassword": "android", + "keystoreAlias": "androiddebugkey", + "keystoreAliasPassword": "android" + } }, "ios": { "loggingBehavior": "production" diff --git a/demos/example-capacitor/ios/App/Podfile.lock b/demos/example-capacitor/ios/App/Podfile.lock index b919a5788..887704400 100644 --- a/demos/example-capacitor/ios/App/Podfile.lock +++ b/demos/example-capacitor/ios/App/Podfile.lock @@ -9,7 +9,7 @@ PODS: - CapacitorSplashScreen (7.0.3): - Capacitor - powersync-sqlite-core (0.4.8) - - PowersyncCapacitor (0.0.1): + - PowersyncCapacitor (0.1.0): - Capacitor - powersync-sqlite-core (~> 0.4.6) - SQLCipher (~> 4.0) @@ -51,7 +51,7 @@ SPEC CHECKSUMS: CapacitorCordova: 435121e81a2df4d0034f0fb11fcefab5104cfdb5 CapacitorSplashScreen: d06ae8804808e9f649a08e7bb7f283c77b688084 powersync-sqlite-core: f48d06a7a9e6f73fee5bbc74da542466be2bb06f - PowersyncCapacitor: d7dcf7f15e24b512571dc87f545855f936ef9537 + PowersyncCapacitor: 9c39e1aec5125bdea55fa61e8277e4a3b16853d2 SQLCipher: eb79c64049cb002b4e9fcb30edb7979bf4706dfc ZIPFoundation: dfd3d681c4053ff7e2f7350bc4e53b5dba3f5351 diff --git a/demos/example-capacitor/package.json b/demos/example-capacitor/package.json index a55d89413..9ba20f697 100644 --- a/demos/example-capacitor/package.json +++ b/demos/example-capacitor/package.json @@ -14,6 +14,7 @@ "sync": "npx cap sync", "ios": "pnpm build && pnpm sync && npx cap run ios", "android": "pnpm build && pnpm sync && npx cap run android", + "test:build": "pnpm build && npx cap sync && npx cap build android", "start": "vite", "build": "vite build", "preview": "vite preview" @@ -35,6 +36,9 @@ "devDependencies": { "@capacitor/cli": "^7.4.3", "@swc/core": "~1.6.0", + "@mui/material": "^5.15.12", + "@emotion/react": "11.11.4", + "@emotion/styled": "11.11.5", "@types/node": "^20.12.12", "@types/react": "^18.3.2", "@types/react-dom": "^18.3.0", diff --git a/demos/example-capacitor/tsconfig.json b/demos/example-capacitor/tsconfig.json index 98800e2e9..c43562d77 100644 --- a/demos/example-capacitor/tsconfig.json +++ b/demos/example-capacitor/tsconfig.json @@ -13,9 +13,5 @@ "resolveJsonModule": true, "jsx": "preserve" }, - "references": [ - { - "path": "../../packages/web" - } - ] + "references": [] } diff --git a/packages/capacitor/android/CMakeLists.txt b/packages/capacitor/android/CMakeLists.txt deleted file mode 100644 index 69493b4a5..000000000 --- a/packages/capacitor/android/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -cmake_minimum_required(VERSION 3.4.1) - -cmake_minimum_required(VERSION 3.4.1) -project(powersync_capacitor) - -# Set the name of your native library -set(LIB_NAME powersync_capacitor) - -# Add your native source files here -add_library( - ${LIB_NAME} - SHARED - src/main/cpp/powersync_capacitor_jni.c -) - -find_package(powersync_sqlite_core REQUIRED CONFIG) - -# Link libraries if needed (e.g., log) -target_link_libraries( - ${LIB_NAME} - log - powersync_sqlite_core::powersync -) diff --git a/packages/capacitor/android/build.gradle b/packages/capacitor/android/build.gradle index 6ee5f27ba..24a1e6315 100644 --- a/packages/capacitor/android/build.gradle +++ b/packages/capacitor/android/build.gradle @@ -29,12 +29,6 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } - externalNativeBuild { - cmake { - path "CMakeLists.txt" - } - } - buildFeatures { prefab true } diff --git a/packages/capacitor/android/src/main/cpp/powersync_capacitor_jni.c b/packages/capacitor/android/src/main/cpp/powersync_capacitor_jni.c deleted file mode 100644 index 1937281a0..000000000 --- a/packages/capacitor/android/src/main/cpp/powersync_capacitor_jni.c +++ /dev/null @@ -1,12 +0,0 @@ -#include - -// SQLCipher enables dynamic loading of extensions. We don't need to do anything here. -int register_powersync(void) { - return 0; -} - -// JNI wrapper -JNIEXPORT jint JNICALL -Java_com_powersync_capacitor_PowerSync_registerPowersync(JNIEnv *env, jobject thiz) { - return register_powersync(); -} \ No newline at end of file diff --git a/packages/capacitor/android/src/main/java/com/powersync/capacitor/PowerSync.java b/packages/capacitor/android/src/main/java/com/powersync/capacitor/PowerSync.java index 585ea6b2c..e89795f80 100644 --- a/packages/capacitor/android/src/main/java/com/powersync/capacitor/PowerSync.java +++ b/packages/capacitor/android/src/main/java/com/powersync/capacitor/PowerSync.java @@ -1,9 +1,5 @@ package com.powersync.capacitor; public class PowerSync { - static { - System.loadLibrary("powersync_capacitor"); - } - public static native int registerPowersync(); } diff --git a/packages/capacitor/android/src/main/java/com/powersync/capacitor/PowerSyncPlugin.java b/packages/capacitor/android/src/main/java/com/powersync/capacitor/PowerSyncPlugin.java index c7cfe1af5..28c6c3610 100644 --- a/packages/capacitor/android/src/main/java/com/powersync/capacitor/PowerSyncPlugin.java +++ b/packages/capacitor/android/src/main/java/com/powersync/capacitor/PowerSyncPlugin.java @@ -14,7 +14,8 @@ public class PowerSyncPlugin extends Plugin { @PluginMethod public void registerCore(PluginCall call) { JSObject ret = new JSObject(); - ret.put("responseCode", implementation.registerPowersync()); + // For Android we don't statically register the library, so we always return 0 + ret.put("responseCode", 0); call.resolve(ret); } } diff --git a/packages/capacitor/package.json b/packages/capacitor/package.json index 873197fe4..fed261b93 100644 --- a/packages/capacitor/package.json +++ b/packages/capacitor/package.json @@ -13,6 +13,7 @@ "files": [ "android/src/main/", "android/build.gradle", + "android/proguard-rules.pro", "dist/", "ios/Sources", "ios/Tests", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ba8250c89..3e6b4bcf1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -305,6 +305,15 @@ importers: '@capacitor/cli': specifier: ^7.4.3 version: 7.4.3 + '@emotion/react': + specifier: 11.11.4 + version: 11.11.4(@types/react@18.3.23)(react@18.3.1) + '@emotion/styled': + specifier: 11.11.5 + version: 11.11.5(@emotion/react@11.11.4(@types/react@18.3.23)(react@18.3.1))(@types/react@18.3.23)(react@18.3.1) + '@mui/material': + specifier: ^5.15.12 + version: 5.17.1(@emotion/react@11.11.4(@types/react@18.3.23)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.23)(react@18.3.1))(@types/react@18.3.23)(react@18.3.1))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@swc/core': specifier: ~1.6.0 version: 1.6.13