2017-06-21 3 views
3

私のプロジェクトでは、NuGetのMicrosoft.EntityFrameworkCore.SQLiteパッケージを使用しています。 Android 7以降では、アプリがクラッシュするunauthorized access to "/system/lib64/libsqlite.so".Android 7+でEF7 SQLiteを使用

これは、Android 7ではNDK以外のネイティブライブラリ(私が理解する限り)が許可されていないためです。この問題は、https://github.com/aspnet/EntityFramework/issues/7777も参照してください。

私は約2日間インターネットを研究し、Android 7でEFCoreを動作させるのに失敗しました。その1つはプレビューバージョンv2.0.0-preview1-finalにアップデートすることでした。しかし、これはアプリがコンパイルところ、以下のような他の問題が生じますが、エミュレータ上で起動/デプロイ中に墜落した:

06-21 09:58:18.970 D/Mono (3632): Assembly Loader probing location: 'System.Runtime.CompilerServices.Unsafe'. 
06-21 09:58:18.970 F/monodroid-assembly(3632): Could not load assembly 'System.Runtime.CompilerServices.Unsafe' during startup registration. 
06-21 09:58:18.970 F/monodroid-assembly(3632): This might be due to an invalid debug installation. 

私は、その後に手動で「System.Runtime.CompilerServices.Unsafe」NuGetパッケージを追加しようとしました私のプロジェクト、それは問題を解決しませんでした。 さまざまなビルドパラメータなどを試してみましたが、実際にAndroid 7エミュレータでEFCoreのプレビューパッケージを実行しています。しかし、プロジェクトがクリーンで再構築された後、エラーが再び表示されました。

EFCore SqliteをAndroid 7で動作させる方法についてのヘルプはありますか? - 基本的にはちょうどVSからの基本的なAndroidのテンプレートで開始し、Nugetを追加https://github.com/tipa/EFCoreSample

私は問題を再現するために、サンプルプロジェクトを作成しXamarin.Android 7.3.1.2

でのVisual Studio 2017を使用していますパッケージ

+0

を私は何の問題もなくXamarin.Forms /アンドロイドでEFCoreを使用しています。パラメータをチェックするためにソリューションを公開リポジトリに投稿できますか? – hugoterelle

+0

v2.0.0-preview1-finalパッケージのバージョンも使用していますか?サンプルプロジェクトを行います。 – tipa

+0

Microsoft.EntityFrameworkCore.Sqliteバージョン1.1.2およびNugetの依存関係は1.1.1です。または1.1.2。 – hugoterelle

答えて

1

これは2ヶ月以上前に尋ねられたものですが、おそらく解決策を見つけたでしょうが、この問題を回避する方法を投稿したかったのです。

私たちはEntityFrameworkCoreとSQLiteでXamarin.Formsアプリケーションを開発しています。プロジェクトと会社の方針のために、私たちは.NetStandard 1.6を使用することに制限されています(EntityFrameworkCoreを統合するために.NetFrameworkから.NetStandardへPCLプロジェクトを移行しました)。この問題は、私たちに起こって開始した後、我々は次のようにしてこの問題を解決するために

管理:

  1. 更新「Microsoft.EntityFrameworkCore」と「Microsoft.EntityFrameworkCore.SQLite」バージョンから「1.1.1」 DALプロジェクト(Context、UoW、Repositories and Modelsを含む別々のPCLプロジェクトがあります)の "2.0.0-preview1-final"(これは.NetStandard 1.6で動作する最新バージョンです)

  2. バージョン「1.1.1」から「2.0.0-preview1-fina」に「Microsoft.Data.Sqlite」(必要な依存関係を自動的に更新)だけを更新するL」メインXamarin.FormsのAndroidプロジェクトに

EntityFrameworkCoreのバージョンは、Android 7+を使用2.x.x "のバージョンにはない1.x.xながら、libsqlite.so "ファイル" にアクセスする方法を" 承認しました。

これは、私たちが持っていたのと同じパッケージを使用している人なら誰でも助けてくれることを願っています。

+0

あなたの答えをありがとう、私はすぐにそれを試してみます。私がやったことは、バージョン1.1.2を使用し、Xamarinプロジェクト(Android 7または8ではなく)でAndroid 6をターゲットにしていることです。そうすれば、アプリはAndroid7 +でも動作しますが、アプリの起動時に(無害な)エラーメッセージが表示されることがあります – tipa

0

私は同じ問題を抱えていましたが、私はこの問題の解決策を見つけました。

私は.NET Standard 2でXamarin.Formsアプリケーションを使用しています。0 libsとSQLiteでEFCoreを使用する。あなたがしなければならないのは、あなたのAndroid csprojを編集して、最後のPropertyGroupタグの後にこれを追加するだけです。その後、

<PropertyGroup> 
    <NoWarn>$(NoWarn);NU1605</NoWarn> 
</PropertyGroup> 

そしてcsprojにSystem.Runtime.CompilerServices.Unsafeのための参照を追加します。

<PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="4.3.0" /> 

クリーンあなたのAndroidプロジェクトを再構築してください。

私はここでの問題に対する答えを見つけました:https://developercommunity.visualstudio.com/content/problem/152947/xamarin-android-run-error-could-not-load-assembly.html

関連する問題