The contract is worth $18.25 million, Tim Brown of Yahoo Sports reports.
Prior to adding Grandal, the Brewers were slated to open the season with Manny Pina and Erik Kratz as their primary options behind the plate.
The 30-year-old reportedly rejected a four-year contract worth more than $50 million from the New York Mets earlier this offseason. The Mets wound up inking Wilson Ramos instead.
Grandal rejected a $17.9-million qualifying offer from the Los Angeles Dodgers. As such, the Brewers will surrender their third-highest pick in this summer's amateur draft to the Dodgers as compensation, according to MLB Pipeline.
The former All-Star is coming off a campaign in which he slashed .241/.349/.466 with 24 home runs, 23 doubles, and 68 RBIs in 140 games. Ramos and J.T. Realmuto were the only catchers (minimum 300 PA) who posted a better wRC+ than Grandal's 125 in 2018.
While Grandal had a few missteps defensively during the postseason, he's traditionally been excellent at the position. His nine defensive runs saved were second most in the majors last year among qualified catchers behind Mike Zunino.