Faits :
A.
Par jugement du 16 novembre 2016, le Tribunal de police de la République et canton de Genève a condamné X._, pour infraction à l'art. 19a LStup et infractions à la LEtr, à une peine pécuniaire de 20 jours-amende à 10 fr. le jour, sous déduction de 2 jours-amende correspondant à 2 jours de détention avant jugement, a dit que cette peine est partiellement complémentaire à celle prononcée le 2 décembre 2015 par le Tribunal de police genevois, a renoncé à révoquer la libération conditionnelle accordée au prénommé le 29 octobre 2014, et a en outre condamné celui-ci à une amende de 100 francs.
B.
Par arrêt du 6 avril 2017, la Chambre pénale d'appel et de révision de la Cour de justice genevoise a admis l'appel formé par le Ministère public contre ce jugement et l'a réformé en ce sens que X._ est reconnu coupable d'infractions à l'art. 19 al. 1 LStup et d'infractions à la LEtr, que la libération conditionnelle accordée le 29 octobre 2014 est révoquée et que le prénommé est condamné à une peine privative de liberté d'ensemble de 7 mois, sous déduction de 4 jours de détention avant jugement.
En substance, la cour cantonale a retenu les faits suivants.
B.a. X._, de nationalité algérienne, est né en 1965. Il est arrivé en Suisse en 2010. Sans domicile fixe, il ne travaille pas et dit vivre de l'aide d'amis et de la communauté arabe à Genève. Son casier judiciaire suisse fait état d'une condamnation, en 2011, pour entrée et séjour illégaux, d'une condamnation, en 2013, pour délit et contravention à la LStup et séjour illégal, d'une condamnation, la même année, pour séjour illégal, délit et contravention à la LStup, d'une condamnation, toujours en 2013, pour séjour illégal et activité lucrative sans autorisation, ainsi que d'une condamnation, en 2014, pour séjour illégal, activité lucrative sans autorisation et contravention à la LStup. X._ a bénéficié d'une libération conditionnelle dès le 29 octobre 2014, avec délai d'épreuve d'un an, le solde de la peine étant de 101 jours. Le casier judiciaire de l'intéressé fait encore état d'une condamnation, en 2015, pour séjour illégal et contravention à la LStup, ainsi que d'une condamnation, en 2016, pour infractions à la LEtr et contravention à la LStup.
B.b. Le 5 mai 2016, X._ a été surpris par la police en possession de 27 g de haschich destinés à la vente.
Le 3 juin 2016, le prénommé a été surpris en possession de 30,3 g de cannabis destinés à la vente.
Du 28 septembre 2015, lendemain de sa dernière audition par la police, au 5 mai 2016, jour de son arrestation, puis du 6 mai 2016, jour suivant sa dernière condamnation, au 4 juin 2016, date de sa nouvelle interpellation, X._ a séjourné sur le territoire suisse sans être titulaire des autorisations nécessaires, sans disposer de moyens de subsistance et sans être porteur d'un document d'identité valable.
Le 4 mai et le 4 juin 2016, le prénommé a pénétré au centre-ville de Genève, notamment dans le quartier d'A._, alors qu'il faisait l'objet d'une interdiction d'accès au centre-ville valable jusqu'au 28 juillet 2016.
C.
X._ forme un recours en matière pénale contre l'arrêt du 6 avril 2017, en concluant, avec suite de frais et dépens, principalement à sa réforme en ce sens que le jugement du 16 novembre 2016 est intégralement confirmé et, subsidiairement, à 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 conteste l'établissement des faits et l'appréciation des preuves à laquelle s'est livrée l'autorité précédente. Il se plaint en outre, à cet égard, d'une violation du principe in dubio pro reo.
1.1. Le Tribunal fédéral est lié par les constatations de fait de la décision entreprise (art. 105 al. 1 LTF), à moins que celles-ci 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. La notion d'arbitraire a été rappelée récemment dans l'arrêt publié aux ATF 142 II 369, auquel on peut se référer. En bref, 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 142 II 369 consid. 4.3 p. 380). 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 en tire des constatations insoutenables (ATF 140 III 264 consid. 2.3 p. 266 et les références citées). Le Tribunal fédéral n'entre en matière sur les moyens fondés sur la violation de droits fondamentaux, dont l'interdiction de l'arbitraire, que s'ils ont été invoqués et motivés de manière précise (art. 106 al. 2 LTF; ATF 142 III 364 consid. 2.4 p. 368). Les critiques de nature appellatoire sont irrecevables (ATF 142 III 364 consid. 2.4 p. 368 et les références citées). Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence à la présomption d'innocence (art. 6 par. 2 CEDH, 32 al. 1 Cst. et 10 CPP), le principe "in dubio pro reo" n'a pas de portée plus large que l'interdiction de l'arbitraire (ATF 138 V 74 consid. 7 p. 82).
1.2. La cour cantonale a considéré que, selon les observations des policiers ayant procédé à l'interpellation du recourant, ce dernier avait, le 5 mai 2016, jeté - en un endroit distinct de celui visé par un tiers interpellé en même temps que celui-ci et ayant eu la même réaction à la vue des forces de l'ordre - 27 g de haschich en plusieurs morceaux. Le recourant avait concédé avoir alors fait un geste de la main.
Le recourant avait eu la même réaction, le 3 juin 2016, lorsque, à l'occasion d'un contrôle dans les Transports publics genevois, il s'était débarrassé de la drogue qu'il détenait dans la poubelle d'un commerce.
A un mois d'intervalle, le recourant avait ainsi détenu près de 30 g, respectivement plus de 30 g de drogue, à l'exclusion de tout autre matériel permettant de fumer celle-ci, soit de papier à cigarette ou d'un outil pour réduire le haschich en poudre. L'intéressé avait, de manière peu convaincante, expliqué qu'il consommait exclusivement ces substances "à la maison", à raison de 6 à 8 joints quotidiens. Devant le tribunal de première instance, le recourant avait en revanche déclaré qu'il ne fumait plus de haschich depuis 5 mois. C'était également en fonction de ce qu'il estimait le mieux servir sa cause qu'il avait tantôt prétendu dépendre entièrement de structures d'aide et d'amis pour survivre, pour ensuite affirmer qu'il se livrait à des "petits boulots" afin d'assouvir son vice. Autrement dit, le recourant n'avait pas les moyens, sans se livrer au trafic, d'assumer une consommation de haschich à hauteur de 120 fr. tous les 20 à 25 jours, en s'en tenant à la version des faits qui lui était la plus favorable.
Ces circonstances constituaient un faisceau d'indices pointant un trafic de drogue auquel s'était livré le recourant le 5 mai puis le 3 juin 2016, à l'exclusion d'une détention de telles quantités de haschich, en morceaux, pour sa seule consommation. Il ne tenait nullement au hasard que l'intéressé eût été interpellé par deux fois, dans des circonstances identiques et à un mois d'intervalle, en possession de plusieurs grammes de drogue.
1.3. 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 l'autorité précédente, sans démontrer en quoi celle-ci serait arbitraire. Il en va ainsi lorsqu'il tente de pointer de supposées incohérences entre le rapport d'arrestation du 5 mai 2016 et le témoignage de l'agent de police B._ devant le ministère public, sans démontrer en quoi la cour cantonale en aurait tiré des constatations insoutenables.
Le recourant déplore le fait que diverses preuves - soit l'audition d'un témoin, une analyse ADN ou l'obtention d'images de vidéo-surveillance - n'auraient pas été administrées, malgré ses demandes en ce sens auprès du ministère public puis du tribunal de première instance. L'arrêt attaqué ne traite pas de cet aspect et le recourant ne prétend pas qu'il aurait valablement saisi l'autorité précédente de telles mesures d'instruction, ni que celle-ci aurait commis un déni de justice en ne les examinant pas. Le grief est ainsi irrecevable, faute d'épuisement des instances cantonales (art. 80 al. 1 LTF). Au demeurant, en fondant sa solution sur les déclarations claires des policiers, l'autorité précédente pouvait sans arbitraire écarter les preuves requises par une appréciation anticipée.
Le recourant soutient que, même en admettant qu'il eût détenu 27 g de haschich le 5 mai 2016, rien ne prouvait que cette drogue fût destinée à la vente. Son argumentation est également appellatoire sur ce point, dès lors que l'intéressé se contente, d'une part, d'affirmer être un consommateur de cannabis et, d'autre part, d'indiquer qu'il ne lui appartient pas de prouver son innocence. Ce faisant, il ne démontre aucunement en quoi la cour cantonale aurait versé dans l'arbitraire en retenant que la drogue qu'il détenait ne pouvait servir à sa seule consommation et devait au contraire être destinée au trafic.
Le grief doit ainsi être rejeté dans la mesure où il est recevable.
2.
Le recourant reproche à la cour cantonale d'avoir violé l'art. 89 al. 2 CP en révoquant la libération conditionnelle dont il bénéficiait depuis le 29 octobre 2014.
2.1. Si, durant le délai d'épreuve, le détenu libéré conditionnellement commet un crime ou un délit, le juge qui connaît de la nouvelle infraction ordonne sa réintégration dans l'établissement (art. 89 al. 1 CP). Si, malgré le crime ou le délit commis pendant le délai d'épreuve, il n'y a pas lieu de craindre que le condamné ne commette de nouvelles infractions, le juge renonce à la réintégration (art. 89 al. 2 1ère phrase CP). La nouvelle infraction doit revêtir une certaine gravité, à savoir être passible d'une peine privative de liberté ou d'une peine pécuniaire (cf. art. 10 CP). La commission d'un crime ou d'un délit n'entraîne toutefois pas obligatoirement la révocation de la libération conditionnelle. Selon l'art. 89 al. 2 CP, le juge renoncera à la réintégration s'il n'y a pas lieu de craindre que le condamné ne commette de nouvelles infractions. Par sa nature même, le pronostic à émettre ne saurait être tout à fait sûr; il doit suffire de pouvoir raisonnablement admettre que le détenu ne commettra pas de nouvelles infractions (ATF 98 Ib 106 consid. 1b p. 107; arrêts 6B_715/2015 du 21 mars 2016 consid. 2.1; 6B_1085/2013 du 22 octobre 2014 consid. 4.2.1).
2.2. La cour cantonale a exposé que le recourant avait récidivé à quatre reprises depuis sa libération conditionnelle, la première fois dès sa sortie de prison en octobre 2014, alors que l'intéressé avait indiqué, dans sa demande de libération conditionnelle, vouloir retourner en Algérie. Ces récidives ne pouvaient être considérées comme des bagatelles, mais démontraient au contraire le mépris, par le recourant, de la législation suisse. Celui-ci ne s'en était d'ailleurs pas tenu au seul séjour illégal dans ce pays ou aux deux violations de périmètre, mais s'était rendu coupable d'infraction à l'art. 19 al. 1 LStup. Les jours de détention avant jugement, non plus que les peines privatives de liberté précédemment subies, n'avaient eu un quelconque effet dissuasif sur lui, pas davantage que la chance qui lui avait été donnée par l'octroi d'une libération conditionnelle.
2.3. L'argumentation du recourant est irrecevable dans la mesure où elle s'écarte de l'état de fait de la cour cantonale, dont l'intéressé n'a pas démontré l'arbitraire (cf. consid. 1.3 supra). Il en va ainsi lorsqu'il prétend ne pas avoir commis une infraction à l'art. 19 al. 1 LStup.
Le recourant prétend qu'il n'aurait pas récidivé en matière d'infractions à la LEtr, car l'art. 115 al. 1 let. b LEtr constitue un délit continu. Cet argument tombe à faux, dès lors que si la disposition précitée consacre bien un délit continu, la condamnation en raison de ce délit opère une césure, de sorte que le fait de perpétuer la situation irrégulière après le jugement constitue un acte indépendant permettant une nouvelle condamnation à raison des faits non couverts par le premier jugement, en conformité avec le principe ne bis in idem (cf. ATF 135 IV 6 consid. 3.2 p. 9; arrêt 6B_715/2015 du 21 mars 2016 consid. 2.4). Le recourant, qui a été condamné pour séjour illégal en 2015 et 2016, avant de commettre les faits dont il a été reconnu coupable par l'arrêt attaqué, a donc bien récidivé à réitérées reprises en la matière.
Enfin, le recourant soutient qu'une nouvelle infraction à l'art. 119 LEtr serait exclue, dès lors que l'interdiction de périmètre dont il faisait l'objet lors de ses interpellations en 2016 a expiré. La cour cantonale n'a cependant pas fondé son pronostic sur les seules infractions à l'art. 119 LEtr commises depuis la libération conditionnelle du recourant, mais essentiellement sur les infractions à la LStup et celles de séjour illégal dont l'intéressé s'est rendu coupable entre 2015 et 2016. On ne voit pas, dès lors, qu'une éventuelle impossibilité de commettre à l'heure actuelle une infraction à l'art. 119 LEtr soit propre à fonder un pronostic favorable.
Au vu de ce qui précède, la cour cantonale n'a pas violé le droit fédéral en révoquant la libération conditionnelle dont bénéficiait le recourant sur la base de l'art. 89 al. 1 CP. Le grief doit être rejeté dans la mesure où il est recevable.
3.
Le recourant reproche à la cour cantonale d'avoir violé l'art. 41 CP en lui infligeant une peine privative de liberté et non une peine pécuniaire.
3.1. La cour cantonale a prononcé une peine d'ensemble.
Selon l'art. 89 al. 6 1ère phrase CP, si en raison d'une nouvelle infraction, les conditions d'une peine de liberté ferme sont réunies et que celle-ci entre en concours avec le solde d'une peine devenu exécutoire à la suite de la révocation de la libération conditionnelle, le juge prononce, en vertu de l'art. 49 CP, une peine d'ensemble. Une peine d'ensemble ne peut être prononcée, sur la base de la disposition précitée, que si les conditions d'une peine ferme sont réalisées tant pour la nouvelle sanction que pour le solde de l'ancienne. Les deux peines devant être exécutées ensemble, la durée globale de la privation de liberté est déterminante. Lorsque la durée de la peine d'ensemble atteint 6 mois au moins, l'art. 41 CP, qui institue un ordre légal de priorité en faveur des sanctions non privatives de liberté, ne s'applique pas (ATF 137 IV 312 consid. 2.4 p. 313).
3.2. S'agissant de la nouvelle sanction, la cour cantonale a considéré que les peines pécuniaires infligées en 2011 et en 2015 n'avaient eu aucun effet dissuasif sur le recourant, ce qui avait amené au prononcé de courtes peines privatives de liberté pour quatre autres condamnations. Les multiples récidives de l'intéressé montraient que celui-ci ne faisait aucun cas des décisions des autorités. Vu ses nombreux antécédents spécifiques, le pronostic se présentait sous un jour fort défavorable, ce qui excluait le prononcé du sursis. Pour des motifs de prévention spéciale, seule une peine privative de liberté entrait en ligne de compte.
Concernant le solde de la peine à exécuter en raison de la révocation de la libération conditionnelle, la cour cantonale a estimé, au vu des multiples récidives du recourant depuis sa libération et de l'absence d'effet des peines privatives de liberté précédemment subies, qu'une réintégration en établissement de détention se justifiait (cf. consid. 2.2 supra).
Dans ces circonstances, l'autorité précédente a considéré qu'une peine d'ensemble de 7 mois, y compris le solde de peine de 101 jours relatif à la révocation de la libération conditionnelle, devait être prononcée.
3.3. Le recourant ne conteste pas que les conditions d'une peine ferme soient réunies pour la nouvelle sanction. Il a par ailleurs échoué à contester le pronostic défavorable formulé par la cour cantonale s'agissant du solde de la sanction pour laquelle la libération conditionnelle a été révoquée (cf. consid. 2.3 supra). Il ne conteste pas que les conditions au prononcé d'une peine d'ensemble, au sens de l'art. 89 al. 6 CP, soient remplies.
Son argumentation tombe à faux, dès lors qu'elle s'attache uniquement à démontrer une violation de l'art. 41 CP, alors même que cette disposition n'a nullement été appliquée par la cour cantonale et qu'elle n'entre pas en ligne de compte eu égard à la durée de la peine d'ensemble (cf. consid. 3.1 supra). Mal fondé, le grief doit être rejeté.
4.
Il découle de ce qui précède que le recours doit être rejeté dans la mesure où il est recevable. Comme il était dénué de chances de succès, la requête d'assistance judiciaire doit également être rejetée (art. 64 al. 1 LTF). Le recourant devra donc supporter les frais judiciaires (art. 66 al. 1 LTF), dont le montant sera toutefois fixé en tenant compte de sa situation financière, laquelle n'apparaît pas favorable (art. 65 al. 2 LTF).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La requête d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué aux parties et à la Cour de justice de la République et canton de Genève, Chambre pénale d'appel et de révision.
Lausanne, le 28 novembre 2017
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Graa