diff --git a/.github/workflows/dev-packages.yml b/.github/workflows/dev-packages.yml
index 1fc5af6..92ee98c 100644
--- a/.github/workflows/dev-packages.yml
+++ b/.github/workflows/dev-packages.yml
@@ -7,16 +7,21 @@ on: workflow_dispatch
jobs:
dev-release:
name: Publish Dev Packages
- runs-on: windows-latest
+ runs-on: macos-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
+ with:
+ ref: ${{ github.ref }}
- name: Setup .NET SDK
uses: actions/setup-dotnet@v4
with:
- dotnet-version: '8.0'
+ dotnet-version: '8.0'
+
+ - name: Install MAUI Workloads
+ run: dotnet workload restore
- name: Download PowerSync extension
run: dotnet run --project Tools/Setup
@@ -37,7 +42,7 @@ jobs:
- name: Run Push For Common
continue-on-error: true
- run: dotnet nuget push ${{ github.workspace }}\output\PowerSync.Common*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }}
+ run: dotnet nuget push ${{ github.workspace }}/output/PowerSync.Common*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }}
- name: Extract MAUI Package Version from CHANGELOG.md
id: extract_maui_version
@@ -46,10 +51,13 @@ jobs:
MAUI_VERSION=$(awk '/^## [0-9]+\.[0-9]+\.[0-9]+-dev(\.[0-9]+)?$/ {print $2; exit}' PowerSync/PowerSync.Maui/CHANGELOG.md)
echo "Detected Version: $MAUI_VERSION"
echo "VERSION=$MAUI_VERSION" >> $GITHUB_ENV
-
+
+ - name: Build MAUI Project
+ run: dotnet build PowerSync/PowerSync.Maui -c Release
+
- name: Run Pack For MAUI
run: dotnet pack PowerSync/PowerSync.Maui -c Release -o ${{ github.workspace }}/output
- name: Run Push For MAUI
continue-on-error: true
- run: dotnet nuget push ${{ github.workspace }}\output\PowerSync.Maui*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }}
\ No newline at end of file
+ run: dotnet nuget push ${{ github.workspace }}/output/PowerSync.Maui*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 2a33476..497c2fd 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -6,17 +6,22 @@ on: workflow_dispatch
jobs:
release:
name: Release
- runs-on: windows-latest
+ runs-on: macos-latest
if: github.ref == 'refs/heads/main'
steps:
- name: Checkout Repository
uses: actions/checkout@v4
+ with:
+ ref: ${{ github.ref }}
- name: Setup .NET SDK
uses: actions/setup-dotnet@v4
with:
- dotnet-version: '8.0'
+ dotnet-version: '8.0'
+
+ - name: Install MAUI Workloads
+ run: dotnet workload restore
- name: Download PowerSync extension
run: dotnet run --project Tools/Setup
@@ -37,7 +42,7 @@ jobs:
- name: Run Push for Common
continue-on-error: true
- run: dotnet nuget push ${{ github.workspace }}\output\PowerSync.Common*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }}
+ run: dotnet nuget push ${{ github.workspace }}/output/PowerSync.Common*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }}
- name: Extract MAUI Package Version from CHANGELOG.md
id: extract_maui_version
@@ -46,10 +51,13 @@ jobs:
MAUI_VERSION=$(awk '/^## [0-9]+\.[0-9]+\.[0-9]+/ {print $2; exit}' PowerSync/PowerSync.Maui/CHANGELOG.md)
echo "Detected Version: $MAUI_VERSION"
echo "VERSION=$MAUI_VERSION" >> $GITHUB_ENV
+
+ - name: Build MAUI Project
+ run: dotnet build PowerSync/PowerSync.Maui -c Release
- name: Run Pack For MAUI
run: dotnet pack PowerSync/PowerSync.Maui -c Release -o ${{ github.workspace }}/output
- name: Run Push For MAUI
continue-on-error: true
- run: dotnet nuget push ${{ github.workspace }}\output\PowerSync.Maui*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }}
\ No newline at end of file
+ run: dotnet nuget push ${{ github.workspace }}/output/PowerSync.Maui*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }}
\ No newline at end of file
diff --git a/PowerSync/PowerSync.Common/CHANGELOG.md b/PowerSync/PowerSync.Common/CHANGELOG.md
index 3c726e0..21f94ac 100644
--- a/PowerSync/PowerSync.Common/CHANGELOG.md
+++ b/PowerSync/PowerSync.Common/CHANGELOG.md
@@ -1,5 +1,8 @@
# PowerSync.Common Changelog
+## 0.0.4-alpha.1
+- Fixed MAUI issues related to extension loading when installing package outside of the monorepo.
+
## 0.0.3-alpha.1
- Minor changes to accommodate PowerSync.MAUI package extension.
diff --git a/PowerSync/PowerSync.Common/PowerSync.Common.csproj b/PowerSync/PowerSync.Common/PowerSync.Common.csproj
index f429dd4..abb53de 100644
--- a/PowerSync/PowerSync.Common/PowerSync.Common.csproj
+++ b/PowerSync/PowerSync.Common/PowerSync.Common.csproj
@@ -30,17 +30,22 @@
+
+
+
+
+
-
+
PreserveNewest
-
+
diff --git a/PowerSync/PowerSync.Common/PowerSync.Common.targets b/PowerSync/PowerSync.Common/PowerSync.Common.targets
new file mode 100644
index 0000000..0c5bcba
--- /dev/null
+++ b/PowerSync/PowerSync.Common/PowerSync.Common.targets
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/PowerSync/PowerSync.Maui/CHANGELOG.md b/PowerSync/PowerSync.Maui/CHANGELOG.md
index 09f2e66..a0f0049 100644
--- a/PowerSync/PowerSync.Maui/CHANGELOG.md
+++ b/PowerSync/PowerSync.Maui/CHANGELOG.md
@@ -1,5 +1,8 @@
# PowerSync.Maui Changelog
+## 0.0.2-alpha.1
+- Fixed issues related to extension loading when installing package outside of the monorepo.
+
## 0.0.1-alpha.1
- Introduce package. Support for iOS/Android use cases.
diff --git a/PowerSync/PowerSync.Maui/PowerSync.Maui.csproj b/PowerSync/PowerSync.Maui/PowerSync.Maui.csproj
index ce14928..5ed5bd3 100644
--- a/PowerSync/PowerSync.Maui/PowerSync.Maui.csproj
+++ b/PowerSync/PowerSync.Maui/PowerSync.Maui.csproj
@@ -19,6 +19,9 @@
icon.png
NU5100
README.md
+ true
+ true
+ true
@@ -32,26 +35,14 @@
Designer
-
-
-
-
- PreserveNewest
-
-
-
-
- PreserveNewest
-
-
-
-
-
-
-
-
+
+
+
+ Framework
+ False
+
diff --git a/PowerSync/PowerSync.Maui/SQLite/MAUISQLiteAdapter.cs b/PowerSync/PowerSync.Maui/SQLite/MAUISQLiteAdapter.cs
index ee8b8fd..4583fe8 100644
--- a/PowerSync/PowerSync.Maui/SQLite/MAUISQLiteAdapter.cs
+++ b/PowerSync/PowerSync.Maui/SQLite/MAUISQLiteAdapter.cs
@@ -19,7 +19,7 @@ protected override void LoadExtension(SqliteConnection db)
db.EnableExtensions(true);
#if IOS
- LoadExtensionIOS(db);
+ LoadExtensionIOS(db);
#elif ANDROID
db.LoadExtension("libpowersync");
#else
@@ -29,16 +29,21 @@ protected override void LoadExtension(SqliteConnection db)
private void LoadExtensionIOS(SqliteConnection db)
{
- #if IOS
- var bundlePath = Foundation.NSBundle.MainBundle.BundlePath;
+#if IOS
+ var bundlePath = Foundation.NSBundle.FromIdentifier("co.powersync.sqlitecore")?.BundlePath;
+ if (bundlePath == null)
+ {
+ throw new Exception("Could not find PowerSync SQLite extension bundle path");
+ }
+
var filePath =
- Path.Combine(bundlePath, "Frameworks", "powersync-sqlite-core.framework", "powersync-sqlite-core");
-
+ Path.Combine(bundlePath, "powersync-sqlite-core");
+
using var loadExtension = db.CreateCommand();
loadExtension.CommandText = "SELECT load_extension(@path, @entryPoint)";
loadExtension.Parameters.AddWithValue("@path", filePath);
loadExtension.Parameters.AddWithValue("@entryPoint", "sqlite3_powersync_init");
loadExtension.ExecuteNonQuery();
- #endif
+#endif
}
}
\ No newline at end of file
diff --git a/PowerSync/PowerSync.Maui/build/ApiDefinition.cs b/PowerSync/PowerSync.Maui/build/ApiDefinition.cs
new file mode 100644
index 0000000..79a0522
--- /dev/null
+++ b/PowerSync/PowerSync.Maui/build/ApiDefinition.cs
@@ -0,0 +1,4 @@
+namespace PowerSync.Maui.build
+{
+ // Empty API definition - allows xcframework to be included without managed bindings
+}
\ No newline at end of file
diff --git a/demos/MAUITodo/MAUITodo.csproj b/demos/MAUITodo/MAUITodo.csproj
index afd5eb1..cee3763 100644
--- a/demos/MAUITodo/MAUITodo.csproj
+++ b/demos/MAUITodo/MAUITodo.csproj
@@ -3,9 +3,9 @@
com.companyname.todo
- net8.0-android;net8.0-ios
+ net8.0-android
$(TargetFrameworks);net8.0-windows10.0.19041.0
-
+ $(TargetFrameworks);net8.0-ios
Exe
MAUITodo
@@ -34,6 +34,13 @@
10.0.19041.0
10.0.19041.0
+
+
+
+ iossimulator-x64
+ true
+
+
diff --git a/demos/MAUITodo/README.md b/demos/MAUITodo/README.md
index 82bcd1c..9a24f6f 100644
--- a/demos/MAUITodo/README.md
+++ b/demos/MAUITodo/README.md
@@ -50,4 +50,11 @@ dotnet build -t:Run -f:net8.0-android -p:_DeviceName=emulator-5554
```sh
dotnet run -f net8.0-windows10.0.19041.0
+```
+
+## Android on Windows
+You may need to overwrite the [backend and PowerSync URLs](./Data/NodeConnector.cs) when running an Android emulator on Windows.
+```
+BackendUrl = "http://10.0.2.2:6060";
+PowerSyncUrl = "http://10.0.2.2:8080";
```
\ No newline at end of file