The 32-year-old Gabon striker signed the deal late on Monday evening.
according to BBC sport Aubameyang has not played for the Gunners since a disciplinary breach in December but scored 92 goals in 163 games prior to that.
Barcelona feared the move was dead earlier on transfer deadline day, even though Aubameyang had flown to Spain.
He had also been linked with a switch to Saudi Arabian side Al-Nassr.
The former Arsenal captain’s departure will save the Gunners – who bought him for £56m from Borussia Dortmund in 2018 – about £15m in wages. But it leaves boss Mikel Arteta with just Alexandre Lacazette and Eddie Nketiah as his forwards for the remainder of the season.
Aubameyang was sent home early from the Africa Cup of Nations in January because of ongoing health issues.
The forward missed Gabon’s draw with Ghana after scans revealed “heart lesions” following a bout of Covid, although later scans gave him the all-clear.
Barcelona had 2m euros (£1.6m) in wages to pay and Aubameyang was happy to accept any payment In the end. Then Arsenal accepted a free transfer. That means the Gabon forward may just get 2m euros this season – rather than the circa 9m euros (£7.5m) he was due at Arsenal – and more later.