My advice is to give characters depth. What do I mean by this?
Something I see very often (Especially in anime and manga) is that there are characters who are based completely around tropes, as if they only exist to say a single line or to have a set in stone personality that never changes.
Take tsunderes for example. They're always acting pissed off, always verbally abusing the main character, and they always act the exact same (Rotten on the outside but secretly loves MC). It doesn't matter what series this character is from, you could pick and choose and replace them with one another and they would achieve the exact same effect in the story.
A character has to have a personality that has meaning to it. If someone is typically angry or depressed, what is the reason for it? If someone is typically energetic and cheerful, is it because everyone around them is as well? Make your characters reactive to different situations.
A good character goes through all sorts of emotions depending on the situation. Maybe your characters aren't very emotional. This is perfectly fine, but what DOES make them emoitonal? Who do they care about? Who do they hate? What do they hate? What are their flaws, and do they recognize these flaws? Are they trying to improve themselves, or are they always focusing on the faults of others?
There are so many questions that one should ask oneself when creating a character - but my end of the day advice is this. Why is this person the way they are? People don't just get born with a personality. Sure, we have certain traits that we exhibit from when we are young, but people are formed and shaped throughout their lives. This is why we tend to be very different as adults than we were when we were children.
Now, natural tendencies and difficulties are also something that might shape a person. Is your character naturally introverted or extroverted? What talents do they have naturally? What do they naturally struggle with? All characters are imperfect, and if you find yourself writing a perfect character then you're wrong.
Another piece of advice: Don't make Good and Evil completely one sided.
There is no such thing as a person who is just wicked to the core. Of course, there are many really messed up people out there, but somewhere there must be some sort of good in them. Even so, when you craft your main cast and main villains, don't just make them as simple as "My main villain is evil because... he's evil and wants to do evil things like hurt people and... yeah."
If someone hurts people, then it might just be because they're an asshole who is pissed about life. But give them a reason! When I write heinous characters, I always try to give them some horribly demented reason as to why they came to be the way they are. Evil breeds evil, and when you grow up in a messed up situation you become messed up yourself.
But give them a goal. Every character has to have some sort of goal, good or evil. And the goal of a villain doesn't have to be evil. Heck, it could even be good, but they are willing to use evil means to obtain such a goal. I really like these types of villains (And usually even make characters like this my main characters).
Don't make things so clear cut for the MC. "This person is evil, so I'm going to defeat them. This person hurt others, so I'm going to stop them." Make the MC think about whether what they're doing is even right or wrong in the first place. This is how to develop an MC. Make them struggle, make them suffer, make them realize - and make it so that even when they defeat a villain, that they exit the battle a changed person.
This is another thing I will say - MAKE PROGRESS!!!!
Your characters should be constantly learning from experiences, improving themselves, or changing their views. I should not read the story 200 chapters in and witness the same person as I did in chapter 1. Everything should progress, from the characters to the plotline to the situation throughout your world, and the story shouldn't be a repeat from some starting scenario with each chapter.
There should be real threats to the story. There should be consequences to your battles. Heck, there should even be times where a character dies. (This isn't always the case so make sure to plan deaths carefully, but don't be scared to kill off a character - just make sure to do it in a meaningful fashion.)
There should be options and doors which are closed, there should be new paths which are opened, there should be hard decisions that the MC has to make. There should be regrets, there should be questioning "What if".
That's my little rant of advice. Listen to it or don't, it's your story - but that's what I've learned over my 2 million words of experience.