Maui icon indicating copy to clipboard operation
Maui copied to clipboard

[BUG] Camera View - Zoom does not work when application is built in release mode

Open LHunter91 opened this issue 1 year ago • 12 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

Did you read the "Reporting a bug" section on Contributing file?

  • [X] I have read the "Reporting a bug" section on Contributing file: https://github.com/CommunityToolkit/Maui/blob/main/CONTRIBUTING.md#reporting-a-bug

Current Behavior

When built in release mode there is no way to zoom the camera view - while all tried methods work perfectly in debug mode

Expected Behavior

Zoom to work in both release and debug

Steps To Reproduce

Run attached code base, set to release mode and deploy to an android device, press the zoom button to see nothing happens

How ever when deployed in debug mode it works

Link to public reproduction project repository

https://github.com/jfversluis/MauiCameraViewSample

Environment

- OS: Andorid
- .NET MAUI:

Anything else?

No response

LHunter91 avatar Aug 09 '24 13:08 LHunter91

I have same issue

soroushsarabi avatar Aug 15 '24 18:08 soroushsarabi

I have same issue, any solution?

AmenehShadlo avatar Aug 15 '24 18:08 AmenehShadlo

Same issue here

nk-alex avatar Aug 20 '24 11:08 nk-alex

Same problem in release. We tested it in our own development, and added a DisplayAlert to the zoom in/out button to verify that the button worked. The display looks perfect but the zoom doesn't work.

AugPav avatar Aug 20 '24 11:08 AugPav

Issue still not fixed in Nuget Version 1.0.4 MCT.Maui.Camera

LHunter91 avatar Aug 27 '24 09:08 LHunter91

im having the same problem. It seems to me that the MaxZoomFactor is always 1. Somehow i can zoom on the front camera where MaxZoomFactor is not set to 1 but on the rear camera its always 1.

Edit: i've realised that i can zoom in both cameras in debug. the problem is when i have the emulator camera set to "virtual" instead of "emulated" i cant zoom in debug. Now i can zoom in both camera in debug, but when i deploy to release i cant zoom in none of them.

"My Resolution": Not the optimal scenario but if you disable AoT compilation and code trimming for release you can zoom after the deploy.

jaqsilva avatar Aug 27 '24 11:08 jaqsilva

@jaqsilva thank you for that update! It sounds like something is being trimmed out of your application when being built. We currently have IsTrimmable set to false in our projects because we aren't fully compliant with it - we hope to be when .NET 9 ships though. This makes me believe it is the AoT compilation that would be causing it as the code shouldn't be trimmed.

bijington avatar Aug 28 '24 06:08 bijington

@jaqsilva thank you for that update! It sounds like something is being trimmed out of your application when being built. We currently have IsTrimmable set to false in our projects because we aren't fully compliant with it - we hope to be when .NET 9 ships though. This makes me believe it is the AoT compilation that would be causing it as the code shouldn't be trimmed.

Thanks!

AugPav avatar Sep 16 '24 14:09 AugPav

This is also an issue for my team. Just commenting to give the issue a bit more attention.

cam13469 avatar Oct 01 '24 04:10 cam13469

This is a huge deal for our project. Not being able to publish with AOT and trimmed makes the app bloated and very unoptimized.

Workaround

Update the CSPROJ file to disable Trimming and AOT:

        <PublishTrimmed>false</PublishTrimmed>
        <PublishAot>false</PublishAot>
        <RunAOTCompilation>false</RunAOTCompilation>

Xopabyteh avatar Oct 01 '24 16:10 Xopabyteh

I've had a brief look at this but I have only been able to test using an emulator which doesn't support zooming.

bijington avatar Oct 02 '24 19:10 bijington

I am also having this issue with no zoom in release. It works fine for me in iOS, both debug and release. In android it works in debug, but not in release. When I add display information I can see minzoom=1 and maxzoom=1 in release mode. In debug minzoom=1, maxzoom=10.

AndrewKeat avatar Oct 07 '24 23:10 AndrewKeat

I recently encountered this issue and found that excluding just the Xamarin.AndroidX.Camera.Core assembly from the trimming process is enough to get zoom working in a release build of our app.

MauiApp.csproj

<ItemGroup Condition="$(TargetFramework.Contains('-android'))">
    <TrimmerRootDescriptor Include="Platforms\Android\ILLink.Descriptors.xml" />
</ItemGroup>

MauiApp\Platforms\Android\ILLink.Descriptors.xml

<?xml version="1.0" encoding="UTF-8" ?>
<linker>
    <assembly fullname="Xamarin.AndroidX.Camera.Core" />
</linker>

phunkeler avatar Oct 27 '24 05:10 phunkeler

Thanks for the suggestion phunkeler. Unfortunately it did not work for me. In the end I modified the ILLinker.Descriptors.xml file as follows and it worked.

<?xml version="1.0" encoding="UTF-8" ?>
<linker>
	<assembly fullname="Xamarin.AndroidX.Camera.Core" />
	<assembly fullname="Xamarin.AndroidX.Camera.Lifecycle" />
	<assembly fullname="Xamarin.AndroidX.Camera.Video" />
	<assembly fullname="Xamarin.AndroidX.Camera.View" />
	<assembly fullname="Xamarin.AndroidX.Camera.Camera2" />
</linker>

AndrewKeat avatar Oct 29 '24 05:10 AndrewKeat