Novolis.IO.Platform.Android
2026.1.1.58
See the version list below for details.
dotnet add package Novolis.IO.Platform.Android --version 2026.1.1.58
NuGet\Install-Package Novolis.IO.Platform.Android -Version 2026.1.1.58
<PackageReference Include="Novolis.IO.Platform.Android" Version="2026.1.1.58" />
<PackageVersion Include="Novolis.IO.Platform.Android" Version="2026.1.1.58" />
<PackageReference Include="Novolis.IO.Platform.Android" />
paket add Novolis.IO.Platform.Android --version 2026.1.1.58
#r "nuget: Novolis.IO.Platform.Android, 2026.1.1.58"
#:package Novolis.IO.Platform.Android@2026.1.1.58
#addin nuget:?package=Novolis.IO.Platform.Android&version=2026.1.1.58
#tool nuget:?package=Novolis.IO.Platform.Android&version=2026.1.1.58
Novolis.IO.Platform.Android
On-device Android directories for Novolis apps. This is not the host-side ADB package (Novolis.IO.Mobile.Android).
AndroidAppStorage.Open(product) creates the default root and a workspace folder under it.
Default location
Documents/Novolis/{product}when the app can create a normal directory there. That folder shows in the phone Files app, andadb pullreads it withoutrun-as. Creation follows scoped storage: a direct write when the platform allows it, otherwise a MediaStore file inDocuments/Novolis/{product}so the app owns the tree. No storage permission and no all-files access.- App-specific external files
Android/data/<package>/files/Novolis/{product}when shared Documents is not a normal writable directory. This needs no storage permission and is removed on uninstall. Debug builds can list it withadb shell run-as <package>. - Internal files only when external storage is not mounted.
Existing trees under the old internal files/{product} directory are moved onto the new root when the new root is still empty.
Logcat on a debug build prints the resolved path and the matching adb command.
Products that need uninterrupted direct file access can opt into
AndroidStoragePreference.AppPrivate. On first resolution, readable legacy
files under the shared Documents product tree are copied into the app-owned
root, including files exposed only through the product's MediaStore rows.
Install
dotnet add package Novolis.IO.Platform.Android
Requires net10.0-android.
Quick start
using Novolis.IO.Platform.Android;
var paths = AndroidAppStorage.Open("BooksMobile");
Directory.CreateDirectory(paths.WorkspaceDirectory);
File.WriteAllText(Path.Combine(paths.RootDirectory, "note.txt"), "hello");
// Documents: adb pull "/storage/emulated/0/Documents/Novolis/BooksMobile"
// App files: adb shell run-as <applicationId> ls "<paths.RootDirectory>"
Console.WriteLine(AndroidStorageLayout.DescribeForAdb(paths));
Avalonia Android hosts pick this up through AddNovolisMobileAndroid(productName).
API
| Surface | Role |
|---|---|
AndroidAppStorage.Open |
Creates the default root, workspace, and cache directory |
AndroidAppStorage.DefaultRoot |
Product root path |
AndroidAppLocations.Kind |
SharedDocuments, AppExternal, or Internal |
AndroidStorageLayout.DescribeForAdb |
adb pull or adb shell run-as for the resolved root |
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-android36.0 is compatible. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
-
net10.0-android36.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Novolis.IO.Platform.Android:
| Package | Downloads |
|---|---|
|
Novolis.Avalonia.Mobile.Android
Android implementations of Novolis.Avalonia.Mobile (EncryptedSharedPreferences, Documents/Novolis app storage, Custom Tabs). |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.1.1.70 | 42 | 10/25/2026 |
| 2026.1.1.69 | 86 | 10/19/2026 |
| 2026.1.1.68 | 87 | 10/19/2026 |
| 2026.1.1.67 | 84 | 10/19/2026 |
| 2026.1.1.66 | 84 | 10/18/2026 |
| 2026.1.1.64 | 83 | 10/18/2026 |
| 2026.1.1.63 | 88 | 10/18/2026 |
| 2026.1.1.62 | 84 | 10/18/2026 |
| 2026.1.1.61 | 86 | 10/18/2026 |
| 2026.1.1.60 | 80 | 10/18/2026 |
| 2026.1.1.58 | 84 | 10/18/2026 |
| 2026.1.1.57 | 79 | 10/18/2026 |
| 2026.1.1.56 | 81 | 10/18/2026 |
| 2026.1.1.55 | 83 | 10/12/2026 |
| 2026.1.1.54 | 117 | 10/4/2026 |
| 2026.1.1.53 | 97 | 10/4/2026 |
| 2026.1.1.52 | 98 | 10/4/2026 |
| 2026.1.1.51 | 99 | 10/3/2026 |
| 2026.1.1.50 | 98 | 10/3/2026 |
| 2026.1.1.49 | 101 | 10/2/2026 |