Trying to build a framework before you start building solution usually results in bloated framework because you try to build something that could do anything that could possibly be needed at anytime in the future. Why not build the framework as you go so that it only contains the functionality that is actually needed? That reduces complexity and eliminates waste. I have worked with multiple teams that tried this approach and felt it was so much more successful than the old style. They ended up with a framework that was smaller, less complex and did everything that was needed but nothing else.
to create a base framework for a complex application, it requires a lot of time for discussions and implementation.
Why not create just enough of the framework in a Sprint to allow a feature of some kind to be simultaneously developed, however small it might be, and use that feature to validate the portion of the framework which is thus built?