Faits :
A.
Par jugement du 22 mars 2018, le Tribunal correctionnel de l'arrondissement de Lausanne a libéré X._ du chef de prévention d'escroquerie d'importance mineure et l'a condamné, pour vol, tentative de vol, vol d'importance mineure, filouterie d'auberge d'importance mineure, recel, incendie intentionnel, incendie intentionnel de peu d'importance, conduite d'un véhicule automobile malgré une incapacité de conduire, conduite d'un véhicule automobile malgré le refus, le retrait ou l'interdiction de l'usage du permis, mise d'un véhicule automobile à la disposition d'un conducteur sans permis requis, usage abusif de permis ou de plaques de contrôle, usurpation de plaques de contrôle, infraction à la LArm et contravention à la LStup, à une peine privative de liberté de 30 mois, ainsi qu'à une amende de 200 francs.
B.
Par jugement du 30 juillet 2018, la Cour d'appel pénale du Tribunal cantonal du canton de Vaud a partiellement admis l'appel formé par X._ contre ce jugement et a réformé celui-ci en ce sens que le prénommé est condamné à une peine privative de liberté de 28 mois ainsi qu'à une amende de 200 francs.
La cour cantonale a retenu les faits suivants.
B.a. X._ est né en 1980 en France, pays dont il est ressortissant.
Son casier judiciaire suisse fait état d'une condamnation, en 2013, pour délit contre la LArm, d'une condamnation, la même année, pour délit contre la LArm, conduite en état d'ébriété qualifiée et contravention aux règles de la circulation routière, ainsi que d'une condamnation, en 2017, pour dommages à la propriété.
Selon ses déclarations, X._ a en outre fait l'objet de plusieurs condamnations en France.
B.b. Le 6 février 2013, à D._, X._ a bouté le feu à des objets laissés dans la cage d'escalier d'un immeuble de l'avenue E._, devant l'appartement de A._. Des chaussures, un meuble ainsi que la sonnette et la paroi ont été endommagés par les flammes.
Dans la nuit du 6 au 7 février 2013, à D._, X._ s'est introduit dans un immeuble, est monté dans le galetas et y a mis le feu à un drap de lit ainsi qu'au panier d'un cycle. Ces deux objets ont été calcinés et la charpente du galetas a été noircie.
Le 1er février 2014, dans une boucherie sise à F._, le prénommé a bouté le feu à deux caisses en plastique ainsi qu'à une bâche en tissu recouvrant une machine de boucherie. Ces objets ont été endommagés, tandis que les murs et le plafond ont été noircis par la fumée.
Le 28 février 2016, à F._, X._ a dérobé une caméra de surveillance dans un hôpital.
A une date indéterminée, entre février et mars 2016, dans un magasin de G._, le prénommé s'est emparé d'un appareil électronique et a passé les caisses sans payer celui-ci.
Le 18 avril 2016, sur la route principale F._ - H._, X._ a conduit son véhicule automobile alors qu'il se trouvait sous l'influence de la morphine et de diverses autres substances.
Le 4 mai 2016, le prénommé, accompagné d'un comparse, n'a pas payé la nuit passée dans un hôtel de I._ ni les cigarettes et boissons acquises sur place.
Le 11 mai 2016, X._ a apposé sur son véhicule une plaque de contrôle vaudoise, puis a conduit celui-ci alors qu'il se trouvait sous le coup d'un retrait du permis de conduire et sous l'influence de la morphine. Il a en outre admis qu'il conduisait son véhicule depuis plusieurs jours - malgré son retrait de permis - et qu'il avait mis cette voiture à disposition d'un comparse qui ne disposait pas non plus d'un permis de conduire.
Entre le 9 juin 2014 et le 11 mai 2016, X._ a acheté à un inconnu, dans la rue, un GPS qui provenait d'un vol commis dans une voiture.
Lors de son interpellation le 11 mai 2016, le prénommé était porteur d'un pistolet soft air imitant un pistolet Bersa BP9CC.
Entre avril 2016 et le 11 mai 2016, X._ a consommé régulièrement diverses drogues, soit de la cocaïne, du cannabis, de la crystal meth et de la méthamphétamine. En cours d'enquête, 15,1 g de résine de cannabis ont été saisis.
C.
X._ forme un recours en matière pénale au Tribunal fédéral contre le jugement du 30 juillet 2018, en concluant, avec suite de frais et dépens, principalement à sa réforme en ce sens qu'il est libéré des chefs de prévention d'incendie intentionnel, d'incendie intentionnel de peu d'importance et de recel. Subsidiairement, il conclut à son annulation et au renvoi de la cause à l'autorité précédente pour nouvelle décision. Il sollicite par ailleurs le bénéfice de l'assistance judiciaire.
Considérant en droit :
1.
Le recourant reproche à l'autorité précédente d'avoir refusé l'administration de la preuve qu'il avait requise.
1.1. Selon l'art. 389 al. 1 CPP, la procédure de recours se fonde sur les preuves administrées pendant la procédure préliminaire et la procédure de première instance. L'art. 389 al. 3 CPP règle les preuves complémentaires. Ainsi, la juridiction de recours administre, d'office ou à la demande d'une partie, les preuves complémentaires nécessaires au traitement du recours. Le droit d'être entendu, consacré par l'art. 107 CPP, garantit aux parties le droit de déposer des propositions relatives aux moyens de preuves (al. 1 let. e). Conformément à l'art. 139 al. 2 CPP, il n'y a pas lieu d'administrer des preuves sur des faits non pertinents, notoires, connus de l'autorité ou déjà suffisamment prouvés. Cette disposition codifie, pour la procédure pénale, la règle jurisprudentielle déduite de l'art. 29 al. 2 Cst. en matière d'appréciation anticipée des preuves (arrêts 6B_1093/2018 du 12 décembre 2018 consid. 1.1; 6B_1067/2018 du 23 novembre 2018 consid. 2.2.1; 6B_898/2018 du 2 novembre 2018 consid. 1.1). Le refus d'instruire ne viole ainsi le droit d'être entendu des parties que si l'appréciation anticipée de la pertinence du moyen de preuve offert, à laquelle le juge a procédé, est entachée d'arbitraire (ATF 141 I 60 consid. 3.3 p. 64; 136 I 229 consid. 5.3 p. 236).
1.2. La cour cantonale a exposé que le recourant avait requis l'audition d'un nommé J._, personne dont il ignorait le patronyme et l'adresse, en prétendant que celui-ci se serait trouvé sur les lieux du feu allumé le 6 février 2013. Le recourant avait invité l'autorité précédente à obtenir les indications nécessaires à l'identification et à la localisation de cet individu auprès de A._. Or, dans sa plainte du 6 février 2013, cette dernière n'en avait pas fait état. Le recourant avait évoqué le nommé J._ pour la première fois lors de son audition du 3 juin 2016 et avait été le seul à le mentionner. L'évolution des déclarations du recourant au cours de son audition faisait par ailleurs sérieusement douter de l'existence de l'intéressé. Selon la cour cantonale, les éléments au dossier étaient suffisants pour lui permettre de trancher les questions litigieuses.
1.3. Le recourant affirme que si le nommé J._ avait pu être identifié et localisé par les autorités pénales, celui-ci aurait pu corroborer sa version des événements. On comprend de la motivation de l'autorité précédente, d'une part, que cette dernière n'a pas cru les déclarations du recourant concernant la présence, sur les lieux du sinistre, de cet individu et, d'autre part, qu'elle a considéré pouvoir établir, au terme de l'administration des preuves présentes au dossier, que l'intéressé avait bien fait partir le feu. Le grief du recourant se confond donc avec celui d'arbitraire dans l'administration des preuves (cf. consid. 2.2.2 infra), puisqu'il s'agit en définitive de déterminer si l'autorité précédente pouvait, sans verser dans l'arbitraire, écarter sa version des événements.
2.
Le recourant reproche à l'autorité précédente d'avoir apprécié les preuves et établi les faits de manière arbitraire.
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 (art. 105 al. 1 LTF), à 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 (ATF 143 IV 241 consid. 2.3.1 p. 244). En matière d'appréciation des preuves et d'établissement des faits, il n'y a arbitraire que lorsque l'autorité ne prend pas en compte, sans aucune raison sérieuse, un élément de preuve propre à modifier la décision, lorsqu'elle se trompe manifestement sur son sens et sa portée, ou encore lorsque, en se fondant sur les éléments recueillis, elle tire des conclusions insoutenables (ATF 143 IV 500 consid. 1.1 p. 503; 140 III 264 consid. 2.3 p. 266 et les références citées). Le Tribunal fédéral n'entre pas en matière sur les critiques de nature appellatoire (ATF 142 III 364 consid. 2.4 p. 368 et les références citées).
2.2.
2.2.1. Concernant le sinistre du 6 février 2013, la cour cantonale a exposé que le recourant avait admis s'être trouvé sur les lieux - soit devant la porte de A._ - et y avoir fumé une cigarette. L'intéressé avait soutenu avoir été amené en ces lieux par un nommé J._ et avoir quitté l'endroit avant que le prénommé, énervé, pût éventuellement allumer un feu. Selon l'autorité précédente, la version du recourant n'était pas convaincante. Lors de son audition du 3 juin 2016 par la police, celui-ci avait admis avoir fumé une cigarette dans un bâtiment de l'avenue E._ car il devait pleuvoir. Après que l'enquêteur lui eut expliqué que la personne recherchée avait mis le feu, entre 20 h 45 et 22 h 20, à une paire de bottes posée sur un meuble à chaussures entreposé sur le palier de A._, le recourant avait déclaré avoir suivi le nommé J._ dans cet immeuble, en précisant que ce dernier venait du foyer K._, qu'il était très énervé et qu'il lui avait laissé ses cigarettes avant de partir. Ce n'était que lors de son audition suivante, tenue par le ministère public, que le recourant avait soutenu que le nommé J._ aurait sonné plusieurs fois sans parvenir à se faire ouvrir, qu'il aurait ensuite fouillé les chaussures pour trouver la clé de l'appartement, sans succès, tout en étant convaincu de la présence de la locataire à ce moment. Pour la cour cantonale, la présence du recourant sur les lieux du sinistre était attestée tant par les aveux de ce dernier que par des traces de son ADN. En outre, le recourant avait également bouté le feu dans une boucherie à F._. Par ailleurs, la version des événements présentée par le recourant n'était pas crédible, puisque ni A._ ni son voisin du dessous n'avaient entendu les prétendus coups de la sonnette actionnée par le nommé J._. On ne voyait pas pourquoi le recourant, qui habitait dans le quartier à l'époque des faits, serait demeuré devant la porte de la prénommée le temps de fumer une cigarette, avant de partir sans attendre ce J._.
2.2.2. Le recourant développe une argumentation purement appellatoire et, partant, irrecevable, par laquelle il rediscute librement l'appréciation des preuves à laquelle s'est livrée la cour cantonale, sans démontrer en quoi celle-ci serait arbitraire. En particulier, on ne voit pas en quoi l'autorité précédente aurait versé dans l'arbitraire en retenant que le recourant s'était trouvé sur les lieux du sinistre au moment de l'allumage du feu. Certes, on ignore à quelle heure l'intéressé a quitté l'immeuble en question. Le recourant s'est cependant de toute manière trouvé sur les lieux avant le départ du feu et a, par ailleurs, déclaré qu'il s'était rendu dans l'immeuble en question pour "finir la soirée" (cf. PV d'audition 7, p. 4), de sorte qu'il s'y est bien trouvé aux alentours de 22 h, ni considérablement plus tôt, ni considérablement plus tard. On ne voit pas davantage en quoi il aurait été insoutenable, pour l'autorité précédente, de retenir que ni A._ ni son voisin L._ n'avait entendu de coups de sonnette avant le sinistre, aucun des deux prénommés ne l'ayant signalé à la police (cf. pièce 11 du dossier cantonal, p. 2). Pour le reste, la cour cantonale pouvait, sans arbitraire, écarter la version des événements du recourant, laquelle ne repose en définitive que sur ses allégations relatives à la présence, sur les lieux, d'un tiers non identifié.
2.3.
2.3.1. Concernant le feu allumé dans la nuit du 6 au 7 février 2013, la cour cantonale a exposé que celui-ci, bouté dans le galetas d'un immeuble de l'avenue E._, s'était produit durant la même nuit et dans les alentours du sinistre dénoncé par A._. Le feu avait été allumé selon le même mode opératoire, puisque le feu avait été mis à des objets situés dans les hauts de l'immeuble. De plus, dans les deux cas, l'auteur avait abandonné un mégot de cigarette sur les lieux. Le mode d'extinction de la cigarette trouvée sur les lieux de ce deuxième sinistre - par séparation du bout incandescent du filtre - correspondait à un geste caractéristique du recourant, selon ses propres déclarations.
2.3.2. Le recourant développe à nouveau une argumentation purement appellatoire et, partant, irrecevable, par laquelle il rediscute librement l'appréciation des preuves à laquelle s'est livrée la cour cantonale, sans démontrer en quoi celle-ci serait arbitraire. Son argumentation est en particulier irrecevable dans la mesure où l'intéressé conteste être l'auteur du feu déclenché devant la porte de A._ - peu auparavant et dans la même rue -, s'écartant ainsi de l'état de fait de l'autorité précédente, dont il n'a pas démontré l'arbitraire (cf. consid. 2.2.2 supra).
2.4.
2.4.1. A propos du sinistre du 1er février 2014, la cour cantonale a indiqué que l'implication du recourant dans le départ du feu était attestée par les traces de son ADN prélevées sur sept allumettes utilisées par l'auteur et retrouvées sur les lieux. Le recourant, qui habitait la région de F._ à l'époque des faits, avait donc manipulé les allumettes en question. Peu importait, pour le reste, que l'intéressé n'eût pas connaissance du digicode commandant l'ouverture de la porte donnant sur la rue, puisqu'il était facile de suivre un ayant droit pour s'introduire dans l'immeuble.
2.4.2. Le recourant développe derechef une argumentation purement appellatoire et, partant, irrecevable, sans démontrer en quoi la cour cantonale aurait versé dans l'arbitraire. Il soutient en particulier que, sur la base des analyses effectuées et selon les déclarations de la scientifique de laboratoire oeuvrant au centre y ayant procédé, l'autorité précédente ne pouvait affirmer que des traces de son ADN avaient été trouvées sur les sept allumettes en question, ni qu'il aurait manipulé celles-ci. On ne voit cependant pas en quoi il aurait été insoutenable de retenir, comme l'a fait la cour cantonale, que le recourant n'avait pas "touché fortuitement" l'une des allumettes avant qu'une "tierce personne" s'en servît pour allumer le feu, une telle version des événements constituant une simple hypothèse formulée par l'intéressé.
2.5. Compte tenu de ce qui précède, le grief doit être rejeté dans la faible mesure de sa recevabilité.
3.
Le recourant reproche à l'autorité précédente d'avoir violé l'art. 221 CP.
3.1. A teneur de l'art. 221 CP, celui qui, intentionnellement, aura causé un incendie et aura ainsi porté préjudice à autrui ou fait naître un danger collectif sera puni d'une peine privative de liberté d'un an au moins (al. 1). Le juge pourra prononcer une peine privative de liberté de trois ans au plus ou une peine pécuniaire si le dommage est de peu d'importance (al. 3).
Pour que l'existence d'un incendie au sens de l'art. 221 CP puisse être retenue, un sinistre de peu d'importance et pouvant être maîtrisé sans danger ne suffit pas (ATF 105 IV 127 consid. 1a p. 129). La notion d'incendie, contenue dans la disposition précitée, vise un feu d'une telle ampleur qu'il ne puisse plus être éteint par celui qui l'a allumé. L'auteur doit ainsi être incapable d'éteindre le feu ou au moins d'éviter que sa propagation porte préjudice à autrui ou fasse naître un danger collectif. Ce critère montre qu'est visé par l'art. 221 CP l'incendie d'une certaine importance (ATF 117 IV 285 consid. 2a p. 285; 105 IV 127 consid. 1a p. 130; arrêts 6B_905/2018 du 7 décembre 2018 consid. 3.2; 6B_725/2017 du 4 avril 2018 consid. 1.3); savoir si le feu a pris une importance suffisante relève des constatations de fait (ATF 117 IV 285 consid. 2a p. 286). Pour que l'infraction prévue par l'art. 221 al. 1 CP soit réalisée, il ne suffit pas que l'auteur ait intentionnellement causé un incendie. Cette disposition prévoit en effet un élément supplémentaire sous une forme alternative : soit l'auteur a causé ainsi un préjudice à autrui, soit il a fait naître un danger collectif (ATF 129 IV 276 consid. 2.2 p. 280 s.; 117 IV 285 consid. 2a p. 286). La notion de danger collectif vise de manière générale une mise en péril, même relativement indéterminée au moment de l'acte, de n'importe quel bien juridiquement protégé, et non pas spécifiquement de la personne humaine (ATF 117 IV 285 consid. 2a p. 286). Il y a danger collectif lorsqu'il existe un risque que le feu se propage (arrêt 6B_834/2008 du 20 janvier 2009 consid. 2.1). Si l'auteur a voulu - au moins sous la forme du dol éventuel - causer un incendie au sens de l'art. 221 CP, mais que le feu n'a pas pris une ampleur suffisante, cela ne signifie pas que l'acte n'est pas punissable, mais seulement que l'infraction n'est pas consommée; le cas doit alors être analysé à la lumière de l'art. 22 CP (ATF 117 IV 285 consid. 2a p. 285 s.). L'infraction requiert l'intention de causer un incendie ainsi qu'un préjudice pour autrui ou de créer un danger collectif, le dol éventuel étant suffisant (cf. ATF 107 IV 182 consid. 2c p. 184; 105 IV 39 consid. 2c p. 40; arrêt 6B_145/2016 du 23 novembre 2016 consid. 2.1).
3.2. Concernant le sinistre du 6 février 2013, la cour cantonale a retenu que le recourant avait bouté le feu à quelques paires de chaussures laissées dans la cage d'escalier de l'immeuble. Les chaussures, un meuble ainsi que la sonnette et la paroi avaient été endommagés par les flammes.
A propos du sinistre causé dans la nuit du 6 au 7 février 2013, l'autorité précédente a retenu que le recourant avait, dans le galetas de l'immeuble, mis le feu à un drap de lit et au panier d'un cycle, que ces deux objets avaient été calcinés et que la charpente avait été noircie, le feu s'étant éteint de lui-même.
Enfin, s'agissant du sinistre du 1er février 2014, la cour cantonale a retenu que le recourant avait bouté le feu à deux caisses en plastique ainsi qu'à une bâche en tissu recouvrant une machine de boucherie. Ces objets avaient été endommagés, tandis que les murs et le plafond avaient été noircis par la fumée.
3.3. En l'espèce, force est de constater, comme le soutient le recourant, que l'état de fait de la cour cantonale ne permet pas de comprendre si les feux allumés dans les trois cas précités pouvaient être - en raison de leur intensité - qualifiés d'incendie au sens de l'art. 221 CP (cf. consid. 3.1 supra). Le jugement attaqué ne comprend en effet aucune appréciation de la violence des feux ou de la possibilité qu'aurait eu le recourant de maîtriser ceux-ci.
Le recours doit ainsi être admis sur ce point, le jugement attaqué annulé et la cause renvoyée à l'autorité cantonale afin qu'elle complète son état de fait relatif à l'importance des trois feux allumés par le recourant (art. 112 al. 3 LTF), avant d'examiner à nouveau si les actes reprochés à ce dernier pouvaient être sanctionnés par l'art. 221 CP. Le cas échéant, la cour cantonale pourra examiner si l'infraction a pu être commise par tentative seulement, voire si les faits reprochés au recourant pouvaient être constitutifs d'une autre infraction, notamment de dommages à la propriété (cf. art. 350 CPP).
4.
Le recourant conteste, au moyen de divers griefs, sa condamnation pour recel.
4.1. Aux termes de l'art. 160 ch. 1 CP, celui qui aura acquis, reçu en don ou en gage, dissimulé ou aidé à négocier une chose dont il savait ou devait présumer qu'un tiers l'avait obtenue au moyen d'une infraction contre le patrimoine sera puni d'une peine privative de liberté de cinq ans au plus ou d'une peine pécuniaire (al. 1). Le receleur encourra la peine prévue pour l'infraction préalable si cette peine est moins sévère (al. 2). Si l'infraction préalable est poursuivie sur plainte, le recel ne sera poursuivi que si cette plainte a été déposée (al. 3).
Selon l'art. 172ter al. 1 CP, si l'acte ne visait qu'un élément patrimonial de faible valeur ou un dommage de moindre importance, l'auteur sera, sur plainte, puni d'une amende. Un élément patrimonial est de faible valeur au sens de cette disposition s'il ne dépasse pas 300 fr. (ATF 142 IV 129 consid. 3.1 p. 133).
4.2. A propos de cette infraction, la cour cantonale a indiqué que le GPS litigieux avait été dérobé par effraction dans un véhicule le 9 juin 2014, puis avait été retrouvé par la police dans la voiture du recourant le 11 mai 2016. Ce dernier avait déclaré avoir acheté ce GPS durant l'été 2014, pour le prix de 100 fr., à un inconnu à F._, aux alentours du jardin japonais.
Selon l'autorité précédente, le contexte de cette vente à la sauvette par un inconnu, à proximité d'un parc public, concernant un objet électronique facile à emporter et à dissimuler, sans fourniture de garantie, imposait à l'esprit de tout honnête homme de s'inquiéter de la provenance de celui-ci, cela d'autant que l'adresse indiquée sur le GPS était celle d'un individu vivant dans une localité constituée de villas, proche de la ville où la transaction avait eu lieu.
L'autorité précédente a ajouté que le recourant avait produit une offre de vente d'un GPS de la marque concernée, publiée sur Internet, mentionnant un prix de 189 fr. 95. Or, il s'agissait d'une annonce publiée en mars 2018, soit près de quatre ans après l'achat litigieux. Le prix de vente d'un GPS de cette marque variait selon les modèles, certains valant près de 600 francs. En 2014, un tel GPS devait donc objectivement valoir plus de 300 fr., de sorte qu'il ne s'agissait pas d'un objet de faible valeur au sens de l'art. 172ter al. 1 CP.
4.3. Le recourant conteste avoir su ou dû présumer que le GPS en question provenait d'un vol. On ne voit pourtant pas en quoi il aurait été arbitraire (cf. art. 97 al. 1 LTF), pour la cour cantonale, de retenir que l'intéressé devait nécessairement, compte tenu du contexte, du lieu de la vente et du type d'objet concerné, savoir ou présumer que le vendeur avait obtenu le GPS au moyen d'une infraction contre le patrimoine.
4.4. Le recourant fait grief à l'autorité précédente d'avoir retenu que le GPS concerné valait, au moment de son vol, plus de 300 francs. Il reproche à la cour cantonale d'avoir violé son droit d'être entendu ainsi que l'art. 345 CPP en trouvant sur Internet, après la clôture de la procédure probatoire, des informations lui ayant permis de retenir que le prix de vente d'un GPS de la marque concernée variait et pouvait atteindre près de 600 francs. Le recourant soutient par ailleurs que l'autorité précédente aurait versé dans l'arbitraire et violé la présomption d'innocence dont il bénéficie en retenant que le GPS litigieux valait effectivement plus de 300 fr. en juin 2014, et non un prix proche de celui ressortant de l'offre de vente produite au dossier.
En l'occurrence, l'état de fait de la cour cantonale ne permet pas de connaître la valeur du GPS recelé. L'offre de vente dont se prévaut le recourant porte sur un GPS de même marque, sans que l'on sache s'il s'agit du même modèle. Le jugement attaqué ne permet par ailleurs pas de comprendre sur quelle base la cour cantonale a fondé sa constatation relative à la valeur des GPS de la marque en question. Il n'en ressort pas qu'elle aurait, sur ce point, administré une quelconque preuve, ni qu'elle estimerait qu'il s'agissait d'un fait notoire accessible sur Internet, ce qui, au demeurant, n'aurait pas été conforme à la jurisprudence en la matière (cf. à cet égard l'arrêt publié aux ATF 143 IV 380 consid. 1.1 p. 382 ss). Quoi qu'il en soit, en admettant que certains modèles de la marque du GPS concerné puissent valoir près de 600 fr., on ne voit pas ce qui permettrait de retenir, par déduction, que l'objet recelé valait nécessairement plus de 300 fr. à l'époque du vol.
En l'état, à défaut de constatation de fait relative à la valeur du GPS concerné, le Tribunal fédéral ne peut donc examiner si l'application de l'art. 172ter al. 1 CP pouvait entrer en ligne de compte et, partant, si l'infraction de recel pouvait être poursuivie au regard de l'art. 160 ch. 1 al. 3 CP, respectivement si l'al. 2 du ch. 1 de la disposition précitée devait être appliqué. Le recours doit ainsi également être admis sur ce point, le jugement attaqué annulé et la cause renvoyée à l'autorité cantonale afin que celle-ci complète son état de fait (art. 112 al. 3 LTF). Il appartiendra à l'autorité cantonale d'examiner à nouveau, le cas échéant, si le recourant pouvait être condamné pour recel et quelle peine il encourait à cet égard.
5.
Dès lors que la cause doit être renvoyée à l'autorité cantonale afin que celle-ci complète son état de fait et examine à nouveau si le recourant doit être condamné pour incendie intentionnel et recel (cf. consid. 3.3 et 4.4 supra), le Tribunal fédéral peut, en l'état, se dispenser d'examiner le grief du recourant portant sur la fixation de la peine.
6.
Il découle de ce qui précède que le recours doit être partiellement admis, le jugement attaqué annulé et la cause renvoyée à l'autorité cantonale pour nouvelle décision (cf. consid. 3.3 et 4.4 supra). Pour le reste, le recours doit être rejeté dans la mesure où il est recevable.
Le recourant, qui n'obtient que partiellement gain de cause, supportera une partie des frais judiciaires (art. 66 al. 1 LTF). Il peut prétendre à des dépens réduits, à la charge du canton de Vaud (art. 68 al. 1 LTF). Sa demande d'assistance judiciaire est sans objet dans la mesure où le recourant a droit à des dépens; elle doit être rejetée pour le reste, dès lors que le recours était dénué de chances de succès s'agissant des aspects sur lesquels le recourant a succombé (art. 64 al. 1 LTF).
Dès lors que l'admission du recours porte sur une insuffisance de l'état de fait, il peut être procédé au renvoi sans ordonner préalablement un échange d'écritures (cf. ATF 133 IV 293 consid. 3.4.2 p. 296). Les intimés, qui n'ont pas été invités à se déterminer, ne sauraient prétendre à des dépens.
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est partiellement admis, le jugement attaqué est annulé et la cause est renvoyée à l'autorité cantonale pour nouvelle décision. Pour le surplus, le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaire est rejetée dans la mesure où elle n'est pas sans objet.
3.
Une partie des frais judiciaires, arrêtée à 400 fr., est mise à la charge du recourant.
4.
Le canton de Vaud versera au recourant une indemnité de 2'000 fr. à titre de dépens réduits pour la procédure devant le Tribunal fédéral.
5.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 20 mars 2019
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Graa