@@ -13,7 +13,6 @@ public class PowerSyncSetup
1313 private const string VERSION = "0.4.13" ;
1414
1515 private const string GITHUB_BASE_URL = $ "https://github.com/powersync-ja/powersync-sqlite-core/releases/download/v{ VERSION } ";
16- private const string MAVEN_BASE_URL = $ "https://repo1.maven.org/maven2/com/powersync/powersync-sqlite-core/{ VERSION } ";
1716
1817 private readonly HttpClient _httpClient ;
1918 private readonly string _basePath ;
@@ -108,26 +107,34 @@ public async Task SetupMauiAndroid()
108107 Console . WriteLine ( "Setting up MAUI Android libraries..." ) ;
109108
110109 var nativeDir = Path . Combine ( _basePath , "PowerSync.Maui" , "Platforms" , "Android" , "jniLibs" ) ;
111- var aarFileName = $ "powersync-sqlite-core-{ VERSION } .aar";
112110
113111 try
114112 {
115113 Directory . CreateDirectory ( nativeDir ) ;
116114
117- var aarPath = Path . Combine ( nativeDir , aarFileName ) ;
118- var downloadUrl = $ "{ MAVEN_BASE_URL } /{ aarFileName } ";
115+ await Task . WhenAll (
116+ DownloadAndroidLibrary ( "libpowersync_aarch64.android.so " , nativeDir , "arm64-v8a" ) ,
117+ DownloadAndroidLibrary ( "libpowersync_armv7.android.so " , nativeDir , "armeabi-v7a" ) ,
118+ DownloadAndroidLibrary ( "libpowersync_x86.android.so " , nativeDir , "x86" ) ,
119+ DownloadAndroidLibrary ( "libpowersync_x64.android.so " , nativeDir , "x86_64" )
120+ ) ;
119121
120- await DownloadFile ( downloadUrl , aarPath ) ;
121- ExtractAarNativeLibraries ( aarPath , nativeDir ) ;
122-
123- Console . WriteLine ( $ "✓ Android: Extracted native libraries from { aarFileName } ") ;
122+ Console . WriteLine ( $ "✓ Android: Downloaded native libraries") ;
124123 }
125124 catch ( Exception ex )
126125 {
127126 Console . Error . WriteLine ( $ "✗ Failed to setup Android: { ex . Message } ") ;
128127 }
129128 }
130129
130+ private async Task DownloadAndroidLibrary ( string filename , string jniLibsDir , string arch )
131+ {
132+ var targetDir = Path . Combine ( jniLibsDir , arch ) ;
133+ Directory . CreateDirectory ( targetDir ) ;
134+ var targetFile = Path . Combine ( targetDir , "libpowersync.so" ) ;
135+ await DownloadFile ( $ "{ GITHUB_BASE_URL } /{ filename } ", targetFile ) ;
136+ }
137+
131138 public async Task SetupMauiMacCatalyst ( )
132139 {
133140 Console . WriteLine ( "Setting up MAUI MacCatalyst libraries..." ) ;
@@ -141,48 +148,6 @@ public async Task SetupMauiMacCatalyst()
141148 await ProcessArchiveDownload ( nativeDir , config , GITHUB_BASE_URL ) ;
142149 }
143150
144- private void ExtractAarNativeLibraries ( string aarPath , string nativeDir )
145- {
146- var extractedDir = Path . Combine ( nativeDir , "temp_extracted" ) ;
147-
148- try
149- {
150- // Clean up any existing extraction
151- if ( Directory . Exists ( extractedDir ) )
152- Directory . Delete ( extractedDir , recursive : true ) ;
153-
154- // Extract AAR (which is a ZIP file)
155- ZipFile . ExtractToDirectory ( aarPath , extractedDir ) ;
156-
157- // Copy native libraries organized by architecture
158- var jniLibsPath = Path . Combine ( extractedDir , "jni" ) ;
159- if ( Directory . Exists ( jniLibsPath ) )
160- {
161- CopyNativeLibrariesByArchitecture ( jniLibsPath , nativeDir ) ;
162- }
163- }
164- finally
165- {
166- CleanupPaths ( extractedDir , aarPath ) ;
167- }
168- }
169-
170- private static void CopyNativeLibrariesByArchitecture ( string jniLibsPath , string nativeDir )
171- {
172- foreach ( var archDir in Directory . GetDirectories ( jniLibsPath ) )
173- {
174- var archName = Path . GetFileName ( archDir ) ;
175- var targetArchDir = Path . Combine ( nativeDir , archName ) ;
176- Directory . CreateDirectory ( targetArchDir ) ;
177-
178- foreach ( var libFile in Directory . GetFiles ( archDir , "*.so" ) )
179- {
180- var targetPath = Path . Combine ( targetArchDir , Path . GetFileName ( libFile ) ) ;
181- File . Copy ( libFile , targetPath , overwrite : true ) ;
182- }
183- }
184- }
185-
186151 private async Task ProcessArchiveDownload ( string nativeDir , ArchiveConfig config , string baseUrl )
187152 {
188153 try
0 commit comments