OnnxRuntime So werden Dateien in einer von der Xamarin -App generierten APK -Datei nicht verpackt
Posted: 12 Jul 2025, 22:16
Ich finde heraus, wie ich mein maschinelles Lernmodell in C#.NET Xamarin Android App ausführen kann. Ich teste es im Android -Gerät, das mit einem Android -Geräte -Manager erstellt wurde und mit VS2022 geliefert wird. Ich habe microsoft.ml.onnxruntime und microsoft.ml.onnxruntime.managed Nuget -Pakete installiert. Ich habe das Modell in eine ONNX -Datei konvertiert und es als Ressource in das Projekt aufgenommen. und liBonnXruntime4j_jni.so
Die APK meiner App enthielt nicht über zwei *.SO -Datei. Es enthält alle restlichen *.so-Dateien wie im Fall einer Beispiel-App (wie libmonodroid.so , libskisharp .so, libxamarin-App.so usw.). Was habe ich vermisst? Ich bin noob in der Xamarin -Entwicklung und verlor auch den Touch der .NET -Entwicklung
.
update
Ich habe es mit Quick Dirty Fix ausprobiert. Ich habe liBonnXruntime extrahiert. Setzen Sie dann ihre Build -Aktionen auf "Androidnatelibrary" in ihren Eigenschaften. Dann habe ich die App neu eingesetzt. Dieses Mal, als ich die generierte APK -Datei im 7zip -Manager eröffnete und diese Dateien tatsächlich in der neu generierten APK verpackt wurden. Aber ich bekomme immer noch den gleichen Fehler.
Code: Select all
System.DllNotFoundException
Message=onnxruntime assembly: type: member:(null)
[External Code]
> 0xA in MyProjectXamarin.MyProjectModel..ctor at D:\workspace\xamarin-demo\MyProjectXamarin\MyProjectXamarin\MyProjectXamarin\MyProjectModel.cs:21,13 C#
0x95 in MyProjectXamarin.MyProjectModel.CreateFromResources at D:\workspace\xamarin-demo\MyProjectXamarin\MyProjectXamarin\MyProjectXamarin\MyProjectModel.cs:212,13 C#
0x22D in MyProjectXamarin.TrackerDemoPage.InitializeDemo at D:\workspace\xamarin-demo\MyProjectXamarin\MyProjectXamarin\MyProjectXamarin\TrackerDemoPage.cs:148,17 C#
0x3AD in MyProjectXamarin.Droid.AndroidImageSequenceService.LoadImageAsync at D:\workspace\xamarin-demo\MyProjectXamarin\MyProjectXamarin\MyProjectXamarin.Android\AndroidImageSequenceService.cs:94,9 C#
< /code>
In der folgenden Zeile 21 unten: < /p>
12 public class MyProjectModel
13 {
14 private readonly InferenceSession _backboneSession;
15 private readonly InferenceSession _headSession;
16 private NDArray _zf; // Template feature
17
18 public MyProjectModel(byte[] backboneModel, byte[] headModel)
19 {
20 // Create ONNX inference sessions
21 _backboneSession = new InferenceSession(backboneModel);
22 _headSession = new InferenceSession(headModel);
23 }
< /code>
Ich habe den APK meiner App im 7zip -Dateimanager geöffnet. Ich ging zum folgenden Pfad: D: \ Workspace \ xamarin-Demo \ MyProjectxamarin \ MyProjectxamarin \ MyProjectxamarin.Android \ bin \ debug \ com.com.com.mpanyname.myProjectXamarin-Signed.apk \ lib \ lib \ Es enthielt keine Onnxruntime-verwandte *.so-Dateien. Es hat funktioniert. Ich öffnete seinen APK im 7zip-Manager und ging zum Pfad: D: \ Workspace \ xamarin_samples \ onnx_runtime \ Inferencingsample \ Inferencingsample.Android \ bin \ debug \ com.xamcat.onnxruntimes-Signed.apk \ lib \ lib \ arm64-v8a \ bw \ lib \ /> Es enthielt: liBonnXruntime.so
Die APK meiner App enthielt nicht über zwei *.SO -Datei. Es enthält alle restlichen *.so-Dateien wie im Fall einer Beispiel-App (wie libmonodroid.so , libskisharp .so, libxamarin-App.so usw.). Was habe ich vermisst? Ich bin noob in der Xamarin -Entwicklung und verlor auch den Touch der .NET -Entwicklung
Code: Select all
Ich habe es mit Quick Dirty Fix ausprobiert. Ich habe liBonnXruntime extrahiert. Setzen Sie dann ihre Build -Aktionen auf "Androidnatelibrary" in ihren Eigenschaften. Dann habe ich die App neu eingesetzt. Dieses Mal, als ich die generierte APK -Datei im 7zip -Manager eröffnete und diese Dateien tatsächlich in der neu generierten APK verpackt wurden. Aber ich bekomme immer noch den gleichen Fehler.