根据 Play 商店崩溃报告,该问题仅出现在运行 Android 10 的三星设备上,100% 在后台运行。我们发布了一个我们的客户在他们的应用程序中集成的库,我们或客户在我们自己的测试中都没有设法产生崩溃,并且没有其他客户报告过类似的情况。
我们的库中有一个自定义的 FileProvider 子类,我们的客户在上述设备上遇到了这个崩溃:
Unable to get provider com.getstream.sdk.chat.StreamFileProvider: java.lang.ClassNotFoundException:
Didn't find class "com.getstream.sdk.chat.StreamFileProvider" on path: DexPathList[
Run Code Online (Sandbox Code Playgroud)
我们已经检查了客户端的 APK,提供者正确地列在他们的合并清单中,并且类在 classes.dex 文件中以及正确的字节码内容。
在 gradle 同步时,出现错误:
WARNING: [XmlResourcesTransformer] No mapping for: android/support/FILE_PROVIDER_PATHS
Run Code Online (Sandbox Code Playgroud)
WARNING: [XmlResourcesTransformer] No mapping for: android/support/FILE_PROVIDER_PATHS
Run Code Online (Sandbox Code Playgroud)
提供者路径.xml
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path
name="my_images"
path="." />
</paths>
Run Code Online (Sandbox Code Playgroud)
怎么解决这个问题呢?
在 iOS 上,有文件提供程序 API来创建“虚拟文件夹”(应用程序提供内容的文件夹)。我怎么能在 MacOS 上做类似的事情?如果您想知道我为什么要这样做,那只是因为我想了解云存储应用程序的工作原理。
PS:抱歉英语不好,我是法国人。
我正在macOS 上实现文件提供程序。我看到 OneDrive 有一个离线模式,其中包含 \xe2\x80\x98Always Keep on This Device\xe2\x80\x99 和 \xe2\x80\x98Free up Space\xe2\x80\x99 菜单:
\n\n在 Windows 上,此功能由固定和取消固定文件属性以及 CfHydratePlaceholder() 和 CfDeHydratePlaceholder() Windows API 提供。如何在 macOS 上实现此功能?是否有任何特定属性或文件提供程序 API 来支持它?
\n我正在从 asp-net core 2.2 迁移到 asp-net core 3.0,我使用这个块来定义我的文件类提供程序,如你所知,它用于创建动态剃刀视图(动态 cshtml),我的问题是该段确实不行。
我已经实现了经典:
services.Configure<RazorViewEngineOptions>(opts =>
opts.FileProviders.Add(
new MyCostumizedFileProvider()
)
);
Run Code Online (Sandbox Code Playgroud)
在哪里:
MyCostumizedFileProvider:是文件提供程序的实现。
RazorViewEngineOptions:是在 aspnet core 2.0 中使用的 Razor 运行时编译器的处理程序。
在asp-net核心中我已经检查过
例如:
services.Configure<MvcRazorRuntimeCompilationOptions>(options => {
options.FileProviders.Clear();
options.FileProviders.Add(new MyCostumizedFileProvider());
});
Run Code Online (Sandbox Code Playgroud)
或者
services.Configure<MvcRazorRuntimeCompilationOptions>(options => {
options.FileProviders.Add(new MyCostumizedFileProvider());
});
Run Code Online (Sandbox Code Playgroud)
错误总是:
/Pages/Shared/ViewListPerson_1b2b2019-aad9-4096-a3b7-ece5dfe586c1.cshtml
at Microsoft.AspNetCore.Mvc.ViewEngines.ViewEngineResult.EnsureSuccessful(IEnumerable`1 originalLocations)
at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor.ExecuteAsync(ActionContext context, ViewResult result)
at Microsoft.AspNetCore.Mvc.ViewResult.ExecuteResultAsync(ActionContext context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|29_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, …Run Code Online (Sandbox Code Playgroud) 我正在尝试从数据库加载视图,正如文章中所建议的,人们可能想要添加一些缓存以防止每次都访问数据库。
ConfigureServices:
services.AddHttpContextAccessor();
services.AddMemoryCache();
services.AddRazorPages()
.AddRazorRuntimeCompilation(opt =>
{
opt.FileProviders.Add(new DatabaseFileProvider(Configuration["AppSettings:SQLConnectionString"]));
});
Run Code Online (Sandbox Code Playgroud)
DatabaseFileProvider构造函数:
private string _connection;
public DatabaseFileProvider(string connection)
{
_connection = connection;
}
Run Code Online (Sandbox Code Playgroud)
如何将 的实例依赖注入IMemoryCache到DatabaseFileProvider类中?就像使用单例一样:
ConfigureServices:
services.AddSingleton<AppUtils>();
Run Code Online (Sandbox Code Playgroud)
AppUtils构造函数:
private static IMemoryCache _cache;
public AppUtils(IMemoryCache cache)
{
_cache = cache;
}
Run Code Online (Sandbox Code Playgroud) c# dependency-injection runtime-compilation fileprovider asp.net-core-5.0