Weaver, 34, made nine starts this season for the San Diego Padres after spending the previous 11 years with the Angels.
The Padres announced Weaver's retirement on Twitter and included a statement from the veteran right-hander, who said his "body just will not allow me to compete like I want to."
Weaver went 0-5 with a 7.44 ERA this season before being placed on the disabled list with a nagging hip injury in May. He also battled back and elbow injuries in recent years with the Angels.
Padres general manager A.J. Preller praised Weaver for his "outstanding career" in a separate statement tweeted by the team.
Weaver finished his career with a 150-98 record and a 3.63 ERA. He was the runner-up for the American League Cy Young Award in 2011, when he went 18-8 with a 2.41 ERA. He led the league in wins the following year, when he went 20-5 with a 2.81 ERA.
The No. 12 overall pick in the 2004 draft, Weaver was the ace pitcher for an Angels team that won three straight AL West division titles from 2007-09. He is second in Angels franchise history in wins and games started (322) and is third in innings pitched (2,025) and strikeouts (1,598).