redth-org / BTProgressHUD

Port to Xamarin.iOS of the SVProgressHUD
Other
118 stars 64 forks source link

v 1.3.1 Crash - Xamarin - Targeting 13.2 IOS #77

Closed mattcuda closed 4 years ago

mattcuda commented 4 years ago

We are getting isolated crashes in some view controllers. Code wise, nothing has changed in at least two years on these controllers. At this point we are still trying to track down exactly how it is happening.

ProgressHUD.ShowImageWorker (UIKit.UIImage image, System.String status, System.TimeSpan duration) ProgressHUD+<>cDisplayClass26_0.b__0 () NSActionDispatcher.Apply () (wrapper managed-to-native) ObjCRuntime.Messaging.objc_msgSend(intptr,intptr,intptr,intptr,bool) NSObject.InvokeOnMainThread (System.Action action) ProgressHUD.ShowImage (UIKit.UIImage image, System.String status, System.Double timeoutMs) BTProgressHUD.ShowSuccessWithStatus (System.String status, System.Double timeoutMs) DeleteStoresGridDelegate+<>cDisplayClass24_0.b__0 () NSActionDispatcher.Apply () (wrapper managed-to-native) UIKit.UIApplication.UIApplicationMain(int,string[],intptr,intptr) UIApplication.Main (System.String[] args, System.IntPtr principal, System.IntPtr delegate) UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) Application.Main (System.String[] args)

Cheesebaron commented 4 years ago

Which version of BTProgressHud?

taylor19882002 commented 4 years ago

As title BTProgressHUD 1.3.1

gafain commented 4 years ago

Same problem . I cannot use the functions ShowSuccessWithStatus and ShowErrorWithStatus the app crashes at line 440 of ProgressHUD.cs

System.NullReferenceException: Object reference not set to an instance of an object at BigTed.ProgressHUD.ShowImageWorker (UIKit.UIImage image, System.String status, System.TimeSpan duration) [0x0005a] in D:\a\BTProgressHUD\BTProgressHUD\BTProgressHUD\ProgressHUD.cs:440 at BigTed.ProgressHUD+<>c__DisplayClass26_0.b__0 () [0x00000] in D:\a\BTProgressHUD\BTProgressHUD\BTProgressHUD\ProgressHUD.cs:179 at Foundation.NSActionDispatcher.Apply () [0x00000] in /Library/Frameworks/Xamarin.iOS.framework/Versions/13.14.1.39/src/Xamarin.iOS/Foundation/NSAction.cs:62 at at (wrapper managed-to-native) ObjCRuntime.Messaging.void_objc_msgSend_IntPtr_IntPtr_bool(intptr,intptr,intptr,intptr,bool) at Foundation.NSObject.InvokeOnMainThread (System.Action action) [0x00007] in /Library/Frameworks/Xamarin.iOS.framework/Versions/13.14.1.39/src/Xamarin.iOS/Foundation/NSObject2.cs:605 at BigTed.ProgressHUD.ShowImage (UIKit.UIImage image, System.String status, System.Double timeoutMs) [0x00022] in D:\a\BTProgressHUD\BTProgressHUD\BTProgressHUD\ProgressHUD.cs:179 at BigTed.ProgressHUD.ShowErrorWithStatus (System.String status, System.Double timeoutMs) [0x00000] in D:\a\BTProgressHUD\BTProgressHUD\BTProgressHUD\ProgressHUD.cs:173 at BigTed.BTProgressHUD.ShowErrorWithStatus (System.String status, System.Double timeoutMs) [0x00000] in D:\a\BTProgressHUD\BTProgressHUD\BTProgressHUD\BTProgressHUD.cs:55 at KCAAPP2.Model.ReleTableCell.errorProgress () [0x00001] in /Users/Shared/Develop/apps/Kronotech/KCAAPP-IOS/KCAAPP2/Model/ReleTableCell.cs:149 at Foundation.NSActionDispatcher.Apply () [0x00000] in /Library/Frameworks/Xamarin.iOS.framework/Versions/13.14.1.39/src/Xamarin.iOS/Foundation/NSAction.cs:62 at at (wrapper managed-to-native) UIKit.UIApplication.UIApplicationMain(int,string[],intptr,intptr) at UIKit.UIApplication.Main (System.String[] args, System.IntPtr principal, System.IntPtr delegate) [0x00005] in /Library/Frameworks/Xamarin.iOS.framework/Versions/13.14.1.39/src/Xamarin.iOS/UIKit/UIApplication.cs:86 at UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x0000e] in /Library/Frameworks/Xamarin.iOS.framework/Versions/13.14.1.39/src/Xamarin.iOS/UIKit/UIApplication.cs:65 at KCAAPP2.Application.Main (System.String[] args) [0x00001] in

tony98789 commented 4 years ago

Hi Guys, think this is a problem with images not being included. Whenever i called ShowSuccessWithStatus i would get a null ref exception, this was due to the SuccessImage being null.

I downloaded the library and moved the images to my own resources folder and it fixed the problem for me.

The strange part was when i added the BTProgressHud folder to my project the images still had a build action of BundleResources but still caused the null ref exception. They did not load in correctly until i added them to my own Resources folder.

Think this is related

76

Cheesebaron commented 4 years ago

@tony98789 looks like you are right. Tested #76 though and it doesn't seem to solve the issue. Will investigate this further.

@Redth do you have any idea, why BundleResources don't make it into the DLL?

Redth commented 4 years ago

I think they may only get included if it’s a binding project. You might have to add a .targets file to the nuget package and include the assets directly in the nupkg and add the <ItemGroup><BundleResource Include=“$(MSBuildThisFileDirectory)\assets\image.png” /></ItemGroup> (or similar - that’s a from memory typed on phone code snippet).

Cheesebaron commented 4 years ago

@Redth I've just been working a bit on this. I managed to get the images and .targets file added to the NuGet package and the images seem to get included in the built IPA file when referencing the produced NuGet.

However, it still doesn't seem to pick up the images when trying to load them from bundle. I see the images on the simulator file system.

I added a file called BTProgressHud.targets to the NuGet with following contents (My branch here):

<Project>
    <ItemGroup>
        <BundleResource Include="$(MSBuildThisFileDirectory)\BTProgressHud\error_7.png" />
        <BundleResource Include="$(MSBuildThisFileDirectory)\BTProgressHud\error_7@2x.png" />
        <BundleResource Include="$(MSBuildThisFileDirectory)\BTProgressHud\error.png" />
        <BundleResource Include="$(MSBuildThisFileDirectory)\BTProgressHud\error@2x.png" />
        <BundleResource Include="$(MSBuildThisFileDirectory)\BTProgressHud\success_7.png" />
        <BundleResource Include="$(MSBuildThisFileDirectory)\BTProgressHud\success_7@2x.png" />
        <BundleResource Include="$(MSBuildThisFileDirectory)\BTProgressHud\success.png" />
        <BundleResource Include="$(MSBuildThisFileDirectory)\BTProgressHud\success@2x.png" />
    </ItemGroup>
</Project>

I don't really see what else should be needed for this to work?

Cheesebaron commented 4 years ago

Annotation 2020-04-08 164134

BTProgressHUD.1.3.2-bugfix-missing-assets.1.zip

Here is a screenshot of the package contents exploring with NuGet Package Explorer. I've also attached a NuGet package (just rename to .nupkg)