Skip to content

Commit ad7c5ce

Browse files
committed
Simplify downloading libraries for Android
1 parent f2f3f32 commit ad7c5ce

1 file changed

Lines changed: 15 additions & 50 deletions

File tree

Tools/Setup/Setup.cs

Lines changed: 15 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)