* [Build] Remove submodule
* [Build] Use GitInfo to set Assembly metadata
* [Build] Remove extra prop
* [Build] Update version
* [Build] Update versions to be consistent with existing Build.Tasks
* [Build] Update build number
* [Build] make sure build tasks gets info
* [Build] Add assembly info unit test
* [Test] Refactor test for gitinfo on vsts
* [Android] Unseal FastRenderers
* [Android] Flip experimental flag to legacy flag
* Flip flag for testing both renderers & set up custom renderers for testing
* Undo build arg change
This reverts commit 8447fec03b4dff16d8ca96544ec83159670b80d7.
* Fix whitespace
* restore workaround for #2520
* Only use workaround for fast renderers (crashes legacy)
fixes#5724
Context: https://github.com/xamarin/xamarin-android/issues/2982
The Blank Xamarin.Forms app template in VS 2019 takes longer to build
than in VS 2017. A little research is showing that this is due to use
of the 28.x support libraries... For example, the build includes ~20
*more* jar files in the template from 2019 than 2017. The
`_CompileDex` step alone goes from ~15.2s to ~18.2s.
This lead me down the road of investigating if we can remove any
support libraries by default in Xamarin.Forms apps. I am also seeing
if there is more we can do in Xamarin.Android for this problem, in
general.
It looks like we can remove:
* Xamarin.Android.Support.v7.MediaRouter
* Xamarin.Android.Support.Media.Compat
Neither of these appear to be used, but have been listed as
dependencies of Xamarin.Forms for a long time.
~~ Results ~~
I made these changes, then did a `Debug` build of
`Xamarin.Forms.ControlGallery.Android.csproj` for comparison.
Comparing dex file sizes (in bytes):
Before:
3428092 classes.dex
3265616 classes2.dex
6693708 total
After:
4938000 classes.dex
1098772 classes2.dex
6036772 total
This looks like it could potentially save ~600KB of compiled dex code
on every Xamarin.Forms app.
Comparing methods:
Before:
classes.dex 11,492 methods
classes2.dex 19,451 methods
total 30,943 methods
After:
classes.dex 22,171 methods
classes2.dex 7,635 methods
total 29,806 methods
~1,137 methods removed, which should help with the dex limit.
Comparing APK sizes (in bytes):
Before:
26442597 AndroidControlGallery.AndroidControlGallery-Signed.apk
After:
25741701 AndroidControlGallery.AndroidControlGallery-Signed.apk
~700KB smaller APK, due to less .NET assemblies & dex code.
Comparing build time (this was using dx):
Before:
19785 ms CompileToDalvik 1 calls
After:
18532 ms CompileToDalvik 1 calls
Looks like it saved over a second of build time for this project.
Seems like an "easy win", let's do this!
* Enable "treat warnings as errors"
* Remove unnecessary for loop
* Remove properties which already exist in base class
* Make property hiding explicit and obsolete hiding property
* Move Treat Warnings as Errors setting to props file
* Fix weird quotation changes in Xamarin.Forms.Build.Tasks.csproj
* Scrub empty WarningsAsErrors tags
* Remove unused variable
* Fix TearDown method hiding in UI tests
* Fix Id member hiding in test for Bugzilla32871
* Fix RootPage member hiding in Bugzilla51503
* Fix RooPage member hiding in Issue1483
* Disable warnings for deprecated OpenGL calls
* Fix member hiding in test view models
* Fix RootPage member hiding in Issue1931
* Fix Id member hiding in Bugzilla42620
* Fix AutomationId member hiding in Bugzilla57114
* Fix Layout member hiding in Bugzilla40911
* Remove unused variables from Bugzilla31114
* Remove unused variable
* Fix various unused variable warnings
* Disable warning to leave example code for reference
* Fix unused variable from macOS test
* Remove unused members
* Fix unused variable warnings
* Fixed unused property warnings
* Fix warnings for unused code
* Disable 'await' warning
* Remove unused variable
* Adding pragma directives for await warnings
* Remove member hiding
* Turn off global "Treat warnings as errors" in other platforms
* Use MarkerId instead of obsolete Id member
* Fix await warnings in WPF GeocoderBackend
* Add missing await
* Disable warning for unused event
* [Controls] Add repo for shell issue
* [iOS] Allow specify SetPaddingInsets on the ShellContent
* [iOS,Shell] Fix issue when disposing ToolbarItems of old page
* [Controls] Add demo repo for #5466
* [Shell,Core] Fix navigating to a registered route
* [Shell,Core] Add better exception messages for wrong or non existing content fixes#5081
* [Core,Shell,iOS,Android] Add FlyoutIcon property
* [Controls] Make shell sample work on Android
* [Controls,Android] Add ImageSource support to FlyoutIcon
* [Android]Allow to set text on the back button
* [Android] Create default text back button
* [Controls] Add example to push with back button behavior
* [Android] Fix back button tint color
* [Android] Cleanup and refactor UpdateDrawerArrow
* Update Xamarin.Forms.Platform.Android/Renderers/ShellToolbarTracker.cs
Co-Authored-By: rmarinho <me@ruimarinho.net>
* [iOS,Shell] Fix go back (Pop) when proving BackButtonBehavior
* [iOS] Check the ParentViewController since we were push to it
* [Android,iOS,Shell] Remove extra code implement feedback
* removed old code
* minor cleanup
* - locate activity
* get tests to run
* - fix and force core gallery to work against default
* - fix check if control already disposed
* - fixing what automationid assigns to
* - input transparent fixes
* - fix sandbox back
* - set default visual back to default
* Update Xamarin.Forms.Material.Android/MaterialStepperRenderer.cs
* Update Xamarin.Forms.Material.Android/MaterialSliderRenderer.cs
* - fix core gallery ui tests to find container
* - ui test tweak
* - fix background color on pickers
* - suggested changes
* - suggested fix
* [Android] move renderers to separate nuget
* additional android dependency
* rebase with material changes
* add android to material check
* simplify assembly info
* - add context to Init for future cases
* [Visual] remove visual flag and tidy up code
* - added basic loading ui test
* change material namespaces to be Xamarin.Forms.Material.<Platform>
* api 19 fixes
* fix casing on resources
* Updated all the OpenTK references to use NuGet
- Using the same NuGet version of OpenTK across the board
- Added a gallery factory to allow for platform-specific pages
- Added the OpenGL galleries to Android, iOS, GTK# and WPF
* Fix the build for iOS and macOS
* Fix the modified defines for the control gallery
* Use the auto-generated constants
* [Visual] Work on the Material Frame
* Improving the code for the sample
* Added a controller to help with frames that have additional padding
- Android MaterialCardView does not use the default padding to determine where the content starts, rather it uses the content padding of the view because there is a border that does not affect the content
* [Visual] Added a few extra checks on Android to reduce unnecessary interop
* [Visual] A few more frame changes and some button tweaks
* [Visual] use the themers on iOS and save default properties
* [Visual] Add placeholders for themer and cache defaults
* [Visual] Added the material slider for iOS
- Android does not have a custom control, so uses the existing renderer
* [enhancements] Move from duplicate LoadImageAsync code to GetNativeImageAsync
* [visual] Updated the controls to use the new iOS bits
* [visual] some fixes for material components
* [visual] Added hacks for material alerts
* [visual] removing the alert changes for the main branch
* [visual] Update the MaterialComponents NuGet
* [visual] Rework the theming/customization of Material controls on iOS
* [visual] fix the places where the user colors were being changed
* [visual] Improve the ColorStateList management for Android
* [visual] Re-implemented the Android ProgressBar as a fast, material renderer
* Material Entry
* [visual] Add Android ActivityIndicator
* filter out material layouts for 8.1
* remove folder
* fix __ANDROID_28__
* MaterialContextThemeWrapper
* [visual] remove the `IFrameController` interface
* [visual] reverting the changes to the Frame layout
* [visual] reverting whitespace
* [visual] make sure to raise both property changed
* formatting changes
* fixing colors on android to match with ios themes
* Update Xamarin.Forms.Platform.Android/Material/MaterialButtonRenderer.cs
Co-Authored-By: mattleibow <mattleibow@live.com>
* fix sizing of entry with infinite width size request
* update to release 28 of support
* Update Xamarin.Forms.Platform.Android/Resources/values/styles.xml
Co-Authored-By: PureWeen <shane94@hotmail.com>
* Update Xamarin.Forms.Platform.Android/Resources/values/styles.xml
Co-Authored-By: PureWeen <shane94@hotmail.com>
* PR Comment changes
* min viable fontImageSource
* [UWP] Min viable FontImageSource (#4817)
* [UWP] font image source
* address comment
* [UWP] performance optimization of the rendering of icons font
- the minimum Dpi of the icon is 300
* char -> string; CR feedback
* [Shell] The glorious Shell
* set the flag for the test
* remove the FastRenderer flag
* [Android] If we were disposed earlier Element can be null and Control was disposed
* [Controls] Seems part of #2520 was solved so we don't need this
* [iOS] Fix NRE on the ScrollviewTracker
* add missing constructor for RenderWith
* [Core] propagate visual/flow through shell
* use interlock increment
* hide IDataTemplateController
* [Android] Fix TableViewModelRenderer dispose
* [Core] propagate visual/flow direction through shell hierarchy
* [Android-Gallery] removed some left in settings changes that effect UI Tests
* [iOS,Droid,Core] Code formatting
* [iOS,Core] Last minute style refactoring
* Visual
* add progress bar and fix ui tint color
* Progress Bar Updates
* ios padding fixes
* padding fix and button image positioning fixes
* added button themes
* disable tint and open up material android button
* change image to bank
* add overrides for Material Frame Renderer
* remove commented out code
* change back to Full linker
* applying comment fixes
* change comparison
* Move the first few projects over to PackageReference
* Move the first few projects over to PackageReference
* Moved the remainder of the projects to PackageReference
* Copy the nunit test adapters for the test apps
* Update the unit tests version of json.net
* Don't use relative paths
* Make sure to also copy sub folders
* Remove the trailing slash
* Keep the directory structure
* The barest beginnings of starting a spike for LV2
* Very basic RecyclerView
* Very, very basic UICollectionView
* Start setting up galleries
* De-duplicate some gallery code
* Android horizontal layout
* Very basic horizontal/vertical text lists for iOS
* Vertical list views working in iOS, stashing while trying to figure out what the deal is
with horizontal views and frames with heights of 1
* Working on rotation issues in iOS
* Fix name of renderer in UWP; make horizontal scrolling work for horizontal
lists on UWP
* Set up gallery to generate different sizes of lists for testing
* Respond to items source updates on UWP
* Add gallery for GridLayout; Add GridLayout;
begin GridLayout implementation UWP
* Basic UWP gridness
* Add demo page for grid layouts with text;
Handle grid layout spans on UWP; handle grid layout span changes on UWP;
* Implement span updates on Android grid layouts;
* Ironed out most of the iOS text cell layout issues
* iOS vertical/horizontal text lists now working reliably;
* In progress on UWP DataTemplate stuff
* Dumping the data template into the itemsource
* Vertical list basically working with DataTemplate; horizontal list having image size issues
* Clean up names and move classes to their own files
* Adding some notes for FormsContentControl
* Rolling back platform test on UWP
* Fix Tizen build
* Fix typo and roll back old test code
* Remove old testing comments
* Make basic data templates work on Android
* Update measure to work horizontally
* Remove old testing code
* Terser rectangles
* Use nameof()
* Rename FormsContentControl to ItemContentControl
* Use CreateRenderer instead of GetOrCreateRenderer
* Clean up TemplateCodeCollectionViewGallery
* Add grid galleries for templates
* Nicer example templates
* Create gallery to test removing items from collections
* Smooth single item removal on Android
* Smooth item insertion on Android
* Observable collection item adds working on UWP
* UWP Remove
* Split files
* Add gallery for snap points; start implementation of snap points on Android;
* Move snap handling to separate class; implement Start snapping (horizontally)
* Debugging vertical overlap issues on Android
* Temporarily add IsClippedToBounds to generators to force clipping on Android
* Start and End SnapHelpers are working horizontally and vertically
* Consolidate some snap code on Android
* Mandatory Single Snapping working for Center/Start horizontally
* Throwing together scrollto gallery
* Super basic "ScrollTo" implementation for Android, plus test page
* Expand ScrollTo test harness;
* Move ScrollToRequestEventArgs to its own file
* Mostly working Carousel renderer; needs some cleanup and its own gallery pages
* Carousel gallery
* Naming cleanup
* Make parameter name consistent
* Finally some basic data template functionality for lists
* Checkpoint; sort of working
* Working out estimate size hacks
* Working out cell optimizations
* Checkpoint before some serious refactoring
* Collapsing closer to a solution; text lists and grids working;
template lists and grids working; uniform size hint mostly implemented;
* Remove awkward Update method
* No longer hard-coding list item heights estimates
* Consolidate more code
* Get rid of event on ItemsViewLayout
* Remove public NeedsEstimate stuff
* Get rid of IConstrainedCell
* Watch for Span changes on iOS
* Indexed ScrollTo on iOS
* Implement removal/insertion of items on iOS
* Handle Move, Reset, Replace on Android
* Add screens to test ScrollTo Item; implement ScrollTo Item for iOS
* ScrollTo Item working on Android, but only works for MakeVisible
* Implement Android ScrollTo Animated ScrollToPosition
* Ugly but functional non-animated scroll with ScrollToPosition
* Move Scroll logic into helper class for clarity and maintenance
* Fix Start snapping with grids (hard-coded span of 1)
* Fix next/previous row/col snapping bug for EndSnapHelper
* Remove some debug statements
* Clean up example code
* Fix missing delegate setting on CollectionView
* Add filtering example
* Watching the adapter and handling empty view from the renderer
* Add debugging for all the FindViewHolder methods
* Suuuuper basic but functional EmptyView
* Allow EmptyView to be turned on and off
* Building tests for all the EmptyView scenarios
* Set Platform on EmptyView (for now)
* Templated EmptyView on Android
* Clean up merge errors
* Require flag to use CollectionView on Android
* Require flag to use CollectionView on UWP
* Restore Label functionality commented out during testing
* Adding a note for myself
* Add flags for iOS; flags for Android CarouselView;
* Remove Calabash out-commenting
* Undo changes to DotSettings; remove outdated TODOs
* Fix formatting
* Remove debugging code; remove outdated todos; remove unnecessary comments
* Undo randon VS changes
* Include CollectionView in experimental renderer testing
* Use correct property in nameof() call
* Rename ScrollToRequestEventArgs Animate -> IsAnimated
* Rename Constrain -> ConstrainTo for consistency
* Add Core flags feature; add flag verification for CollectionView features
* Make sure no one is subclassing native CollectionView stuff without flag
* Set CollectionView flags for unit tests
* Make flags depend on Application.Current
* Fix iOS 9.3 exception when laying out CollectionView
* Use Device.Flags
* Move CV flag check to CollectionView; use Device.Flags on native platforms;
* Move classes into their own files
* Make CollectionView flag check method non-browseable
* Remove old TODO
* Remove Element.Platform sets
* stubbed toolbox entries and snippets for Carousel and Collection
* updated CV snippet to include layout
* Remove Linq using statement
* Remove unused using statement
* Turn off CollectionView in Control Gallery
* Move PropertyChangedEventArgsExtensions to internal on each platform
* Clean up debugging code
* Fix broken test setup
* Remove ToString overrides
* Fix broken test screen
Fix broken test screen
* Fix rebase errors
* Update submodule
* Fix rebase error
Currently, on the first build of a "Hello World" Xamarin.Forms app,
you will see this in the build log:
ConvertDebuggingFiles
Parameters
Files
C:\Users\myuser\.nuget\packages\xamarin.forms\3.1.0.697729\lib\MonoAndroid10\FormsViewGroup.pdb
C:\Users\myuser\.nuget\packages\xamarin.forms\3.1.0.697729\lib\MonoAndroid10\Xamarin.Forms.Platform.Android.pdb
OutputItems
_ConvertedDebuggingFiles
C:\Users\myuser\.nuget\packages\xamarin.forms\3.1.0.697729\lib\MonoAndroid10\FormsViewGroup.dll
C:\Users\myuser\.nuget\packages\xamarin.forms\3.1.0.697729\lib\MonoAndroid10\Xamarin.Forms.Platform.Android.dll
The logging is a little weird here, but this `ConvertDebuggingFiles`
MSBuild task takes about 100ms on my machine.
What is it doing?
The Mono debugger can support two types of debugging files:
- `mdb` files
- "portable" `pdb` files
If Xamarin.Android's build finds a "non-portable" `pdb` file, we have
to run it through this task to convert to an `mdb` file... This gives
us proper stacktraces for `FormsViewGroup.dll` and
`Xamarin.Forms.Platform.Android.dll`.
You can change the type of debugging symbols in your project with the
`DebugType` setting, which has these options:
- Blank or `None`: don't generate symbols. (Although Xamarin.Android
has funny behavior here, see:
https://github.com/xamarin/xamarin-android/issues/2282)
- `Full` generates an `mdb` file, this is a Windows-proprietary format
for debug builds
- `PdbOnly` generates a "non-portable" `pdb` file, a
Windows-proprietary format for release builds
- `Portable` generates a "portable" pdb file, which is the new
standard that works for debug and release builds. New SDK-style
MSBuild projects use this option by default.
These values are not case sensitive, I have mostly seen them lower
case in newer projects.
So what does Xamarin.Forms need to do?
Use `<DebugType>portable</DebugType>` in any Android class library or
app project. Other platforms, this is optional, not as much benefit. I
have heard that `DebugType=portable` might cause a problem on UWP.
* Xamarin.Forms will ship "portable" `pdbs` in its NuGet package for
`FormsViewGroup.dll` and `Xamarin.Forms.*.Android.dll`. Developers
won't pay the 100ms on initial build.
* Initial build times for `Xamarin.Forms.sln` will be slightly better
for development, although I didn't measure the difference here.
* [Controls] Add automation id to icon
* [iOS] Add AutomationId support to MDP tooggle button
* [Android] Add support for AutomationId to ActionBarDrawerToggle and MasterDetailPage
* [IOS] Refactor and add Accessibility to ToolbarItems
* [iOS] Fix typos
* [Android] Add accessibility to ToolbarItems
* [UWP] Refactor A11y to extensions
* [UWP] Set Accessibility properties on ToolbarItems
* [UWP] Set accessibility to MDP button
* [ControlGallery] Add accessibility toolbaritems to gallery
* Comment test out
* [iOS] Fix NRE when Control is being disposed
* [UITests] Remove not used UITests file
* [Build] Update provisioning
* [Controls] Ignore deprecated Android API usage
* [Android] Remove use of obsolete color usage
* [Android] Remove app fragment usage
* [android] Rollback changes to EntryCellRenderer
* [Android] Better way to get the default color for the label text
* [Android] Obsolete message for ContentPage.CreateFragment()
* [ControlGallery] - create bitmap from Drawable to use for pixel location
* [Android] Use textcolor resource
* Update submodule