The 29-year-old winger scored six goals in 46 appearances to help the club secure the League Two title this season, despite mostly featuring in an unfamiliar right-back role.
Evans told the official Portsmouth site: "I've been desperate to sign a new contract since the end of the season, so I'm delighted to get this deal over the line.
"It was a great campaign for the club and, without doubt, we deserved to be champions. I certainly didn't play against a better team.
"By any standard, it was an impressive finish. There were parts of the season when things didn't go quite right, but we got it right at the perfect time and then never took our foot off the gas.
"I've told the manager that if he wants me to continue at right-back then I'm happy. As long as I'm in a Pompey shirt, I'm not bothered what position I play."
Evans joined Pompey from Fleetwood Town in the summer of 2015 and has scored a total of 16 goals in 93 appearances during his time at Fratton Park.