Faits :
A.
Par jugement du 20 septembre 2018, le Tribunal régional Jura bernois-Seeland a condamné A._ pour vol en bande, dommages à la propriété et violation de domicile, a révoqué les sursis à l'exécution des peines qui avaient été accordés au prénommé les 13 novembre 2014 et 12 avril 2017, et a condamné l'intéressé à une peine pécuniaire de 180 jours-amende à 30 fr. le jour.
B.
Par jugement du 11 septembre 2019, la 2e Chambre pénale de la Cour suprême du canton de Berne, statuant sur l'appel de A._ et sur l'appel joint formé par le ministère public contre ce jugement, a réformé celui-ci en ce sens que le prénommé est libéré d'une partie des faits qui lui étaient reprochés, qu'il est condamné, pour vols, dommages à la propriété et violation de domicile, à une peine privative de liberté d'ensemble de 19 mois, comprenant les sanctions pour lesquelles les sursis des 13 novembre 2014 et 12 avril 2017 ont été révoqués.
La cour cantonale a retenu les faits suivants.
Entre les 4 et 5 juillet 2017, A._ et B._ ont pénétré dans les locaux de C._ AG. Ils ont brisé la vitre de la cage d'escalier avec une pierre, fouillé les lieux et dérobé divers objets, pour un montant total d'environ 5'401 francs. Les deux prénommés se sont également introduits dans les locaux de D._ GmbH, ont fouillé les lieux et y ont dérobé divers effets, pour un montant total de 19'641 fr. 90.
C.
A._ forme un recours en matière pénale au Tribunal fédéral (6B_1215/2019) contre le jugement du 11 septembre 2019, en concluant, avec suite de frais et dépens, à sa réforme en ce sens qu'il est acquitté. Il sollicite par ailleurs le bénéfice de l'assistance judiciaire.
Le Ministère public du canton de Berne, Parquet général, forme également un recours en matière pénale au Tribunal fédéral (6B_1217/2019) contre le jugement du 11 septembre 2019, en concluant, avec suite de frais, à sa réforme en ce sens que A._ est condamné en raison de l'infraction de violation de domicile pour laquelle un classement avait été prononcé par la cour cantonale et qu'une peine privative de liberté d'ensemble de 20 mois est prononcée. Il conclut "éventuellement" à son annulation et au renvoi de la cause à l'autorité précédente pour nouvelle décision.

Considérant en droit :
1.
Les deux recours en matière pénale au Tribunal fédéral sont dirigés contre la même décision. Ils concernent le même complexe de faits et portent sur des questions juridiques connexes. Il y a donc lieu de joindre les causes et de les traiter dans un seul arrêt (<ref-law> et 71 LTF).
I. Recours de A._ (recourant 1)
2.
Le recourant 1 reproche à l'autorité précédente d'avoir apprécié les preuves et établi les faits de manière arbitraire. Il se plaint en outre, à cet égard, d'une violation du principe "in dubio pro reo".
2.1. Le Tribunal fédéral n'est pas une autorité d'appel, auprès de laquelle les faits pourraient être rediscutés librement. Il est lié par les constatations de fait de la décision entreprise (<ref-law>), à moins qu'elles n'aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, soit pour l'essentiel de façon arbitraire au sens de l'art. 9 Cst. Une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable; il faut qu'elle soit manifestement insoutenable et cela non seulement dans sa motivation mais aussi dans son résultat. Le Tribunal fédéral n'entre pas en matière sur les critiques de nature appellatoire. La présomption d'innocence, garantie par les <ref-law>, 32 al. 1 Cst., 14 par. 2 Pacte ONU II et 6 par. 2 CEDH, ainsi que son corollaire, le principe "in dubio pro reo", concernent tant le fardeau de la preuve que l'appréciation des preuves au sens large. En tant que règle sur le fardeau de la preuve, elle signifie, au stade du jugement, que le fardeau de la preuve incombe à l'accusation et que le doute doit profiter au prévenu. Comme règle d'appréciation des preuves, la présomption d'innocence signifie que le juge ne doit pas se déclarer convaincu de l'existence d'un fait défavorable à l'accusé si, d'un point de vue objectif, il existe des doutes quant à l'existence de ce fait. Il importe peu qu'il subsiste des doutes seulement abstraits et théoriques, qui sont toujours possibles, une certitude absolue ne pouvant être exigée. Il doit s'agir de doutes sérieux et irréductibles, c'est-à-dire de doutes qui s'imposent à l'esprit en fonction de la situation objective. Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence au principe "in dubio pro reo", celui-ci n'a pas de portée plus large que l'interdiction de l'arbitraire (<ref-ruling> consid. 1.1 p. 155 s. et les références citées).
2.2. La cour cantonale a exposé que, dès le mois de mai 2017, une série de cambriolages dans la région de E._ avait été observée. B._ avait été interpelé en flagrant délit de cambriolage le 14 août 2017 à F._. Interrogé par la suite à propos des vols commis les 4 et 5 juillet 2017, le prénommé avait reconnu en être l'auteur. Il avait tout d'abord prétendu avoir agi seul, avant de déclarer avoir été accompagné de "G._ et H._". A cet égard, B._ avait livré un récit empreint de contradictions, alors qu'il s'était au contraire montré sûr de lui et précis s'agissant des autres cambriolages dont il avait reconnu être l'auteur. Le prénommé avait en outre fourni des explications invraisemblables à propos de sa rencontre et de son prétendu compagnonnage avec "G._ et H._". Il avait ainsi menti sur ce point pour couvrir son ami, le recourant 1. Ce dernier avait pour sa part été interpellé à son domicile, après que la police eut frappé à la porte durant 30 minutes sans succès et fait appel aux services d'un serrurier, pour finalement découvrir le recourant 1. L'intéressé avait expliqué avoir craint d'ouvrir à la police, ce qui ne portait pas à croire qu'il n'avait alors rien à se reprocher. Interrogé sur les événements des 4 et 5 juillet 2017, le recourant 1 avait donné des explications fluctuantes. Il avait en particulier menti en prétendant qu'il aurait travaillé au moment des faits, ce qui était faux. Il avait par ailleurs tenté de justifier la présence de traces de son ADN sur les lieux des cambriolages en fournissant des explications fantaisistes - selon lesquelles B._ lui aurait emprunté des habits pour commettre son forfait - qui n'étaient pas compatibles avec le matériel génétique retrouvé ni avec le mode opératoire habituel du prénommé.
2.3. Le recourant 1 conteste toute implication dans les événements des 4 et 5 juillet 2017. Son argumentation se révèle toutefois totalement appellatoire et, partant, irrecevable, puisqu'elle consiste à rediscuter intégralement l'appréciation des preuves à laquelle s'est livrée la cour cantonale, sans démontrer en quoi celle-ci serait arbitraire. Il en va en particulier ainsi lorsque le recourant 1 livre sa propre appréciation des déclarations successives de B._ - sans exposer quelle constatation insoutenable aurait pu en être tirée par l'autorité précédente -, ou discute librement l'interprétation faite de son comportement et de ses déclarations durant l'instruction. Pour le reste, le recourant 1 affirme que rien ne permettrait "d'exclure que la trace ADN retrouvée sur les lieux soit arrivée là par le biais d'un transfert secondaire". Il ne démontre cependant nullement en quoi il aurait été arbitraire, pour la cour cantonale, d'exclure un tel transfert, en particulier en raison des circonstances invraisemblables qui auraient, cas échéant, dû permettre à B._ de déposer de l'ADN du recourant 1 durant les cambriolages.
Le grief doit ainsi être rejeté dans la mesure où il est recevable.
II. Recours du Ministère public bernois (recourant 2)
3.
Le recourant 2 reproche à l'autorité précédente d'avoir libéré le recourant 1 d'une infraction poursuivie uniquement sur plainte - soit une violation de domicile -, "en interprétant - à tort - le formulaire rempli par la partie plaignante comme correspondant à sa volonté de vouloir retirer sa plainte pénale". Il précise que le ministère public "a l'habitude d'utiliser ce genre de formulaires dans le cadre de procédures dans lesquelles il y a plusieurs parties plaignantes" et que "cette situation aberrante risque de se répercuter dans d'autres dossiers, raison pour laquelle [le recourant 2] estime qu'il s'agit ici d'une question de principe".
On comprend de ces explications que le recourant 2 souhaite voir le Tribunal fédéral se prononcer sur le sens du formulaire utilisé et ainsi valider ou non une pratique du ministère public. On peut douter que le recourant 2 se prévale, à cet égard, d'un intérêt juridique à l'annulation ou à la modification du jugement attaqué au sens de l'<ref-law>. La question peut cependant être laissée ouverte au vu du sort du recours.
4.
Le recourant 2 reproche à l'autorité précédente d'avoir violé son droit d'être entendu en statuant sur la question du retrait de plainte de D._ GmbH contre le recourant 1 sans l'avoir préalablement interpellé sur ce point.
4.1. Le droit d'être entendu, tel qu'il est garanti par l'art. 29 al. 2 Cst., comprend notamment pour le justiciable le droit de s'exprimer sur les éléments pertinents avant qu'une décision ne soit prise touchant sa situation juridique, d'obtenir l'administration des preuves pertinentes et valablement offertes, de participer à l'administration des preuves essentielles et de se déterminer sur son résultat lorsque cela est de nature à influer sur la décision à rendre (<ref-ruling> consid. 7.2.2.1 p. 103).
4.2. En l'espèce, il apparaît que le jugement de première instance comportait une contradiction, puisque cette décision indiquait à la fois que D._ GmbH avait retiré sa plainte contre le recourant 1 et qu'une condamnation de l'intéressé pour violation de domicile au préjudice de cette société pouvait être prononcée sur la base de ladite plainte (cf. p. 2 et 11 du jugement du 20 septembre 2018). Il ressort par ailleurs du jugement attaqué que le recourant 2 a lui-même attiré l'attention de la cour cantonale sur cette problématique durant les débats d'appel, en indiquant que, à son avis, D._ GmbH avait retiré sa constitution de partie demanderesse au pénal et au civil mais non sa plainte (cf. p. 12 du jugement attaqué). On perçoit mal comment la cour cantonale aurait pu violer le droit d'être entendu du recourant 2 en statuant sur un point sur lequel ce dernier avait spontanément pris position en invitant l'autorité précédente à l'examiner à son tour. Le grief doit être rejeté.
5.
Le recourant 2 fait grief à la cour cantonale d'avoir classé la procédure dirigée contre le recourant 1 s'agissant du chef de prévention de violation de domicile au préjudice de D._ GmbH. Il lui reproche d'avoir arbitrairement établi les faits sur ce point.
5.1. Déterminer ce qu'une personne a su, voulu, envisagé ou accepté relève du contenu de la pensée, à savoir de faits "internes" qui, en tant que tels, lient le Tribunal fédéral (cf. <ref-law>), à moins qu'ils aient été retenus de manière arbitraire (cf. <ref-ruling> consid. 6.3 p. 375).
5.2. L'autorité précédente a exposé qu'à réception du courrier du procureur demandant s'il souhaitait maintenir sa " Zivil- und Strafklage " à l'encontre de B._, le représentant de D._ GmbH avait tout d'abord renvoyé celui-ci sans cocher aucune des cases proposées. Sur appel du recourant 2, le représentant de la société avait indiqué vouloir "se retirer". Par la suite, lorsqu'un courrier identique lui avait été envoyé s'agissant du recourant 1, le représentant de D._ GmbH avait derechef déclaré retirer sa " Zivil- und Strafklage " à l'encontre de celui-ci, signifiant ainsi qu'il souhaitait abandonner sa constitution de partie demanderesse au civil et au pénal. On ignorait le contenu des explications qui avaient été données, sur ce point, par téléphone au représentant de D._ GmbH. En outre, le formulaire en question ne mentionnait pas toutes les possibilités s'offrant à la partie plaignante, en particulier celle de retirer la plainte, ni ne fournissait d'explications. Le fait que le représentant de D._ GmbH eût tout d'abord renvoyé le formulaire sans aucune case cochée démontrait son incompréhension. La volonté précise de D._ GmbH ne pouvait être établie de manière certaine. Il convenait en outre de prendre en considération la teneur de l'<ref-law>. Dans ces conditions, les formulaires incomplets remis par le ministère public ne pouvaient être interprétés dans un sens portant préjudice au recourant 1. Il convenait de retenir que la plainte pénale de D._ GmbH avait été retirée, de sorte que la procédure relative au chef de prévention de violation de domicile à son préjudice devait être classée.
5.3. En l'occurrence, dans un courrier du 23 mars 2018, le ministère public a notamment demandé à D._ GmbH si elle souhaitait maintenir sa plainte pénale (" Strafklage ") et son action civile (" Zivilklage ") contre le recourant 1. Il lui était en outre précisé ce qui suit (cf. pièce 63 du dossier cantonal) :
" Gerne weise ich Sie darauf hin, dass ein Rückzug Ihrer Privatklage keinen Einfluss auf die weitere Strafverfolgung des Beschuldigten haben wird. "
Dans le formulaire envoyé au ministère public en réponse à cette interpellation, le représentant de la société a coché la case bordant la mention suivante : " Rückzug der Zivilklage im Strafverfahren gegen A._ und der damit verbundene Verzicht der Geltendmachung von Ansprüchen ", ainsi que la case bordant celle qui suit : " Rückzug der Strafklage im Strafverfahren gegen A._ " (cf. pièce 65 du dossier cantonal).
Le problème décelé par la cour cantonale est évident.
Le ministère public a invité D._ GmbH à lui indiquer si elle souhaitait maintenir son action civile et sa plainte pénale (" Strafklage ") contre le recourant 1. On peut tout d'abord relever qu'en langue française, une question formulée de cette manière prêterait fortement à confusion, puisque le CP parle de "plainte" (cf. <ref-law>) tandis que le CPP utilise les termes "plainte pénale" (cf. art. 119 al. 2 let. a et 120 al. 2 CPP) pour désigner la demande de poursuite et de condamnation de la personne pénalement responsable de l'infraction, alors que, dans les textes allemands, les notions de " Strafantrag " (cf. <ref-law>) et de " Strafklage " (cf. art. 119 al. 2 let. a et 120 al. 2 CPP) sont clairement distinguées.
Dans les documents en allemand utilisés en l'espèce par le ministère public, seules les questions de la plainte pénale (" Strafklage ") et de l'action civile étaient évoquées, nullement la plainte (" Strafantrag "), en particulier la possibilité de retirer celle-ci conformément à l'<ref-law>. En outre, il était précisé, dans la lettre du 23 mars 2018, qu'un éventuel retrait de l'action civile n'empêcherait pas la poursuite de la procédure pénale contre le recourant 1.
Au vu de ce qui précède, il apparaît douteux qu'un laïc pût comprendre la différence entre un retrait de sa plainte (" Strafantrag ") et un retrait de sa plainte pénale (" Strafklage "), ces notions n'étant à aucun endroit expliquées dans les documents employés. En conséquence, il n'était pas arbitraire, pour la cour cantonale, de retenir qu'en déclarant non seulement vouloir retirer son action civile, mais encore sa plainte pénale (" Strafklage "), D._ GmbH avait entendu procéder à un retrait de plainte (" Strafantrag ") au sens de l'<ref-law>. Une telle interprétation de la volonté de la société est renforcée par les explications fournies par le ministère public, puisque si D._ GmbH avait uniquement souhaité renoncer à son action civile tout en maintenant sa plainte pénale, elle n'aurait vraisemblablement pas coché, spécifiquement, la case portant sur le retrait de la plainte pénale (" Strafklage "), sans pouvoir saisir - faute de toute explication - que sa plainte (" Strafantrag ") serait en revanche maintenue. Une telle constatation n'était par ailleurs nullement contraire à la jurisprudence selon laquelle la volonté de retirer une plainte doit être exprimée de manière non équivoque, étant rappelé qu'une déclaration marquant le désintérêt pour la poursuite d'une infraction punie sur plainte équivaut à un retrait de plainte (cf. <ref-ruling> consid. 5.1 p. 112).
On peut ajouter que l'ambiguïté affectant le formulaire utilisé par le ministère public est malheureuse, car il n'est pas exclu qu'un lésé puisse croire à tort retirer la plainte (" Strafantrag ") déposée, alors qu'il retire en réalité uniquement sa plainte pénale (" Strafklage "), cela sans même en avoir conscience.
Le grief doit donc être rejeté.
III. Frais
6.
Le recours du recourant 1 (6B_1215/2019) doit être rejeté dans la mesure où il est recevable. Le recours du recourant 2 (6B_1217/2019) doit être rejeté.
Comme le recours du recourant 1 était dépourvu de chances de succès, l'assistance judiciaire ne peut être accordée (<ref-law>). Par conséquent, le recourant, qui succombe, supportera les frais judiciaires liés à son recours (<ref-law>), dont le montant sera fixé en tenant compte de sa situation financière, laquelle n'apparaît pas favorable. Le recourant 2 ne supporte quant à lui pas de frais judiciaires (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Les causes 6B_1215/2019 et 6B_1217/2019 sont jointes.
2.
Le recours du recourant 1 est rejeté dans la mesure où il est recevable.
3.
Le recours du recourant 2 est rejeté.
4.
La demande d'assistance judiciaire formée par le recourant 1 est rejetée.
5.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge du recourant 1.
6.
Le présent arrêt est communiqué aux parties et à la Cour suprême du canton de Berne, 2e Chambre pénale.
Lausanne, le 13 novembre 2019
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Graa