Faits :
A.
Par jugement du 17 juin 2014, le Tribunal de police de la République et canton de Genève a acquitté X._ des chefs de prévention de viol, de séquestration et de contrainte et l'a condamné, pour lésions corporelles simples qualifiées, menaces qualifiées, infractions à la LStup, infraction à la LEtr et infraction à la LCR, à une peine privative de liberté de 6 mois, sous déduction de 389 jours de détention avant jugement, ainsi qu'à une amende de 300 francs. Le tribunal a ordonné la libération immédiate de X._ ainsi qu'un traitement ambulatoire dans une consultation spécialisée dans les addictions. Il a en outre condamné l'Etat de Genève à verser au prénommé un montant de 20'900 fr., avec intérêts, à titre de réparation du tort moral. Le tribunal a enfin mis la moitié des frais de procédure à la charge de X._.
B.
Par arrêt du 31 août 2015, la Chambre pénale d'appel et de révision de la Cour de justice genevoise a partiellement admis l'appel formé par X._ contre ce jugement et a rejeté l'appel joint du ministère public. Elle a réformé le jugement en ce sens que l'Etat de Genève est condamné à payer au prénommé les sommes de 31'350 fr., avec intérêts, à titre de réparation du tort moral pour la détention injustifiée, de 3'000 fr., avec intérêts, à titre de réparation du tort moral pour ses conditions de détention illicites, et de 1'100 fr., avec intérêts, pour ses frais de défense en appel. La cour cantonale a, en outre, mis la moitié des frais d'appel à la charge de X._.
C.
Par arrêt du 25 mai 2016 (6B_1057/2015), le Tribunal fédéral a partiellement admis le recours formé par X._ contre cet arrêt, a annulé celui-ci et a renvoyé la cause à l'autorité cantonale pour nouvelle décision.
En substance, le Tribunal fédéral a considéré que X._ devait être libéré des chefs de prévention de lésions corporelles simples qualifiées et de menaces qualifiées. Il a par ailleurs indiqué que la cour cantonale avait valablement fixé l'indemnité pour tort moral ensuite de la détention injustifiée en appliquant un montant de 150 fr. par jour. Enfin, le Tribunal fédéral a considéré que X._ pouvait prétendre à la réparation de son tort moral pour les 339 jours effectués dans des conditions de détention illicites, tout en précisant que le montant journalier retenu par la cour cantonale ne prêtait pas le flanc à la critique.
D.
Par arrêt du 13 février 2017 rendu à la suite de l'arrêt de renvoi précité, la Chambre pénale d'appel et de révision a condamné X._, pour infractions à la LStup, infraction à la LEtr et infraction à la LCR, à une peine pécuniaire de 90 jours-amende - avec sursis pendant deux ans, entièrement compensée par la détention subie avant jugement -, ainsi qu'à une amende de 300 francs. Elle l'a libéré des fins de la poursuite pénale pour le surplus. La cour cantonale a condamné l'Etat de Genève à payer au prénommé les sommes de 31'350 fr., avec intérêts, à titre de réparation du tort moral pour sa détention injustifiée, de 6'800 fr., avec intérêts, à titre de réparation du tort moral pour ses conditions de détention illicites, de 1'100 fr., avec intérêts, et de 1'300 fr., avec intérêts, pour ses frais de défense en appel. Elle a mis la moitié des frais de la procédure de première instance ainsi que la moitié des frais de la procédure d'appel antérieure à l'arrêt du 25 mai 2016 à la charge de X._ et a compensé ceux-ci avec les indemnités dues à ce dernier pour ses frais de défense.
E.
X._ forme un recours en matière pénale au Tribunal fédéral contre l'arrêt du 13 février 2017, en concluant principalement à sa réforme en ce sens que l'Etat de Genève doit lui payer la somme de 13'500 fr., en plus des 31'350 fr., à titre de l'art. 429 al. 1 let. c CPP, la somme de 16'950 fr., avec intérêts, à titre de l'art. 431 al. 1 CPP, ainsi que celle de 3'564 fr., avec intérêts, à titre d'indemnité pour ses frais de défense pour la procédure d'appel postérieure à l'arrêt de renvoi, et en ce sens que les frais de première instance et d'appel ne sont pas mis à sa charge et qu'ils ne sont pas compensés avec ses indemnités de défense. 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.
F.
Invités à se déterminer, la cour cantonale a déclaré persister dans les termes de son arrêt, tandis que le ministère public a conclu au rejet du recours. Ces prises de position ont été communiquées au recourant.
Considérant en droit :
1.
Aux termes de l'art. 107 al. 2 1ère phrase LTF, si le Tribunal fédéral admet un recours, il statue lui-même sur le fond ou renvoie l'affaire à l'autorité précédente pour qu'elle prenne une nouvelle décision. Le principe de l'autorité de l'arrêt de renvoi découle du droit fédéral non écrit (ATF 143 IV 214 consid. 5.3.3 p. 222; 135 III 334 consid. 2.1 p. 335). Conformément à ce principe, l'autorité cantonale à laquelle la cause est renvoyée par le Tribunal fédéral est tenue de fonder sa nouvelle décision sur les considérants de droit de l'arrêt du Tribunal fédéral. Elle est ainsi liée par ce qui a déjà été définitivement tranché par le Tribunal fédéral et par les constatations de fait qui n'ont pas été attaquées devant lui ou l'ont été sans succès (ATF 131 III 91 consid. 5.2 p. 94; 104 IV 276 consid. 3d p. 277 s.; cf. aussi arrêt 6B_111/2017 du 17 octobre 2017 consid. 2.1). La motivation de l'arrêt de renvoi détermine dans quelle mesure la cour cantonale est liée à la première décision, décision de renvoi qui fixe aussi bien le cadre du nouvel état de fait que celui de la nouvelle motivation juridique (ATF 135 III 334 consid. 2 p. 335).
2.
Le recourant reproche à la cour cantonale d'avoir violé l'art. 426 CPP en mettant à sa charge les frais de procédure relatifs aux infractions de lésions corporelles simples qualifiées et de menaces qualifiées, nonobstant l'acquittement dont il a bénéficié à cet égard.
Il lui fait en outre grief d'avoir enfreint les art. 429 al. 1 let. c et 430 al. 1 let. a CPP, en refusant de lui accorder une indemnité supérieure à celle de 31'350 fr., qui lui avait été octroyée par l'arrêt du 31 août 2015 à titre de réparation du tort moral pour la détention injustifiée.
2.1. Selon l'art. 426 al. 2 CPP, lorsque la procédure fait l'objet d'une ordonnance de classement ou que le prévenu est acquitté, tout ou partie des frais de procédure peuvent être mis à sa charge s'il a, de manière illicite et fautive, provoqué l'ouverture de la procédure ou rendu plus difficile sa conduite. La condamnation d'un prévenu acquitté à supporter tout ou partie des frais doit respecter la présomption d'innocence, consacrée par les art. 32 al. 1 Cst. et 6 par. 2 CEDH. Celle-ci interdit de rendre une décision défavorable au prévenu libéré en laissant entendre que ce dernier serait néanmoins coupable des infractions qui lui étaient reprochées. Une condamnation aux frais n'est ainsi admissible que si le prévenu a provoqué l'ouverture de la procédure pénale dirigée contre lui ou s'il en a entravé le cours. A cet égard, seul un comportement fautif et contraire à une règle juridique, qui soit en relation de causalité avec les frais imputés, entre en ligne de compte (ATF 119 Ia 332 consid. 1b p. 334; 116 Ia 162 consid. 2c p. 168; arrêts 6B_1382/2016 du 16 octobre 2017 consid. 1.2.2; 6B_1191/2016 du 12 octobre 2017 consid. 2.4). Pour déterminer si le comportement en cause est propre à justifier l'imputation des frais, le juge peut prendre en considération toute norme de comportement écrite ou non écrite résultant de l'ordre juridique suisse pris dans son ensemble, dans le sens d'une application par analogie des principes découlant de l'art. 41 CO. Le fait reproché doit constituer une violation claire de la norme de comportement (ATF 119 la 332 consid. 1b p. 334; arrêt 6B_1191 précité consid. 2.4). Une condamnation aux frais ne peut se justifier que si, en raison du comportement illicite du prévenu, l'autorité était légitimement en droit d'ouvrir une enquête. Elle est en tout cas exclue lorsque l'autorité est intervenue par excès de zèle, ensuite d'une mauvaise analyse de la situation ou par précipitation (ATF 116 Ia 162 consid. 2c p. 170 s.; arrêt 6B_1191/2016 précité consid. 2.4; cf. art. 426 al. 3 let. a CPP). La mise des frais à la charge du prévenu en cas d'acquittement ou de classement de la procédure doit en effet rester l'exception (ATF 116 Ia 162 consid. 2c p. 171).
L'art. 429 al. 1 let. c CPP prévoit que si le prévenu est acquitté totalement ou en partie, il a droit à une réparation du tort moral subi en raison d'une atteinte particulièrement grave à sa personnalité, notamment en cas de privation de liberté. En vertu de l'art. 430 al. 1 let. a CPP, l'autorité pénale peut réduire ou refuser l'indemnité ou la réparation du tort moral lorsque le prévenu a provoqué illicitement et fautivement l'ouverture de la procédure ou a rendu plus difficile la conduite de celle-ci. Cette disposition est le pendant de l'art. 426 al. 2 CPP en matière de frais. Une mise à charge des frais selon l'art. 426 al. 1 et 2 CPP exclut en principe le droit à une indemnisation. La question de l'indemnisation doit être tranchée après la question des frais. Dans cette mesure, la décision sur les frais préjuge de la question de l'indemnisation. Il en résulte qu'en cas de condamnation aux frais, il n'y a pas lieu d'octroyer de dépens ou de réparer le tort moral (ATF 137 IV 352 consid. 2.4.2 p. 357). Lorsque la condamnation aux frais n'est que partielle, la réduction de l'indemnité devrait s'opérer dans la même mesure (arrêt 6B_1191/2016 précité consid. 2.1). En revanche, si l'Etat supporte les frais de la procédure pénale, le prévenu dispose d'un droit à une indemnité pour ses frais de défense et son dommage économique ou à la réparation de son tort moral selon l'art. 429 CPP; dans ce cas, il ne peut être dérogé au principe du droit à l'indemnisation qu'à titre exceptionnel (ATF 137 IV 352 consid. 2.4.2 p. 357; arrêt 6B_1191/2016 précité consid. 2.1).
2.2. Contrairement aux prescriptions de la jurisprudence précitée, la cour cantonale a traité la question de l'indemnisation du recourant préalablement à celle des frais de procédure. L'autorité précédente a considéré que le recourant n'avait pas pris de conclusions et n'avait émis aucune critique "quant aux frais de procédure mis à sa charge en première instance et précédemment en appel". Il ne se justifiait pas de modifier cette répartition. Ces frais devaient être mis à la charge du recourant en application de l'art. 430 al. 1 let. a CPP, pour les mêmes motifs qui permettaient de refuser à celui-ci une indemnité fondée sur l'art. 429 al. 1 let. c CPP.
A ce propos, la cour cantonale a considéré que le recourant avait été incarcéré durant 389 jours. Dans la mesure où la peine privative de liberté avait été fixée à 6 mois - soit 180 jours - dans l'arrêt du 31 août 2015 et qu'elle avait été entièrement compensée par la détention subie avant jugement, la cour cantonale avait alloué à l'intéressé une indemnité de 31'350 fr. pour réparer le tort moral relatif aux 209 jours de détention qui s'étaient révélés injustifiés ensuite des acquittements partiels obtenus. Le recourant ayant été condamné à une peine pécuniaire de 90 jours-amende à la suite de l'arrêt de renvoi du 25 mai 2016, il restait à déterminer s'il se justifiait de lui allouer une indemnité portant sur les 90 jours de détention injustifiée qui n'étaient pas compensés par cette peine pécuniaire. A cet égard, l'autorité précédente a estimé que le recourant avait menacé et violenté sa compagne de l'époque, en lui occasionnant des lésions corporelles simples, faits que l'intéressé avait, pour l'essentiel, admis en instance d'appel et n'avait pas contesté dans le cadre de son recours au Tribunal fédéral. Il s'était ainsi rendu coupable d'un comportement civilement répréhensible, constitutif d'actes illicites au sens de l'art. 41 CO et portant atteinte à la personnalité de la victime selon l'art. 28 CC, ce qui avait justifié l'ouverture d'une procédure pénale à son encontre pour ces faits et avait nécessité de déterminer leur étendue ainsi que les circonstances qui les avaient entourés. Le recourant n'avait pas été condamné pénalement pour ces actes en raison du retrait de la plainte par la victime et car la relation que tous deux entretenaient ne pouvait par ailleurs être assimilée à un mariage. La poursuite d'infractions poursuivies d'office ne paraissait cependant pas vouée à l'échec, la défense elle-même ayant admis, au stade de l'appel, que la situation était "plus délicate" à partir de juillet 2012, soit lorsque le recourant avait emménagé avec l'intéressée. Les prétentions émises à ce titre par le recourant devaient ainsi être rejetées.
2.3. Le recourant considère que les conditions d'application de l'art. 426 al. 2 CPP, respectivement de l'art. 430 al. 1 let. a CPP, ne sont pas réalisées. Il soutient que la plainte pénale déposée par A._ a été retirée deux jours après son arrestation et que le ministère public aurait dès lors dû considérer que la poursuite des infractions de lésions corporelles simples qualifiées et de menaces qualifiées ne pouvait avoir lieu d'office, puisque les intéressés ne faisaient pas ménage commun au sens des art. 123 ch. 2 al. 6 et 180 al. 2 let. b CP.
Le fait que le Tribunal fédéral ait, dans son arrêt du 25 mai 2016, considéré que le recourant n'avait pas fait ménage commun avec A._ au sens des dispositions précitées, ne permet pas en soi de retenir que l'instruction aurait dû cesser sitôt le retrait de plainte survenu. En revanche, lors de l'audition tenue par le ministère public le 11 juin 2013, la prénommée a déclaré qu'elle avait déposé puis retiré sa plainte car elle voulait faire comprendre au recourant qu'elle désirait vivre seule (art. 105 al. 2 LTF; pièce A 91 du dossier cantonal, p. 2). Depuis lors, le ministère public savait que les intéressés avaient vécu ensemble durant moins d'une année et que leur relation était terminée, puisque A._ voulait désormais demeurer loin du recourant. Il apparaissait alors clairement - au vu de la jurisprudence en la matière (cf. ATF 138 III 157 consid. 2.3.3 p. 160 s.) - qu'une poursuite d'office, sur la base des art. 123 ch. 2 al. 6 et 180 al. 2 let. b CP, n'était plus envisageable. Il ressort d'ailleurs du dossier que l'instruction n'a plus, dès ce moment, porté sur les infractions de lésions corporelles simples qualifiées et de menaces qualifiées. En outre, on ne voit pas quel lien de causalité existerait entre le comportement illicite et fautif du recourant - que ce dernier ne conteste pas - et la moitié des frais de la procédure de première instance mis à sa charge.
C'est en vain que la cour cantonale tente, dans ses déterminations du 13 novembre 2017, d'établir un parallèle entre la présente cause et l'arrêt 6B_1191/2016 du 12 octobre 2017, dès lors que, dans cette dernière affaire, le Tribunal fédéral n'avait précisément pas examiné le principe de l'application de l'art. 426 al. 2 CPP, que la cour cantonale n'avait pas retenu.
La cour cantonale a ainsi violé le droit fédéral en condamnant le recourant à payer la moitié des frais de première instance sur la base de l'art. 426 al. 2 CPP. Le recours doit être admis sur ce point et la cause renvoyée à l'autorité précédente afin qu'elle répartisse derechef les frais concernés.
Il appartiendra par ailleurs à la cour cantonale d'allouer au recourant une indemnité fondée sur l'art. 429 al. 1 let. c CPP, concernant le solde de 90 jours de détention injustifiée non compensés par une peine, dans une proportion identique à celle des frais de première instance qui seront laissés à la charge de l'Etat.
3.
Le recourant fait grief à la cour cantonale d'avoir violé les art. 3 CEDH, 7 Cst., 3 al. 1 et 431 al. 1 CPP, en fixant son indemnité pour tort moral ensuite de la détention dans des conditions illicites subie sur la base d'un montant journalier inférieur à 50 francs.
Ce grief procède d'une lecture biaisée de l'arrêt de renvoi du 25 mai 2016. Dans cette décision, le Tribunal fédéral a en effet constaté que l'indemnité litigieuse devait porter sur une durée de détention effectuée dans des conditions illicites de 339 jours, et non de quatre à cinq moins, comme l'avait retenu la cour cantonale dans son arrêt du 31 août 2015. Il a par ailleurs constaté que le mode de fixation de l'indemnité, qui impliquait un montant journalier de 20 à 25 fr. par jour de détention, ne prêtait pas le flanc à la critique. Il a précisé que la référence de la cour cantonale au montant de 50 fr. par jour de détention illicite subi, lequel avait été admis par le Tribunal fédéral dans un cas où les conditions de la détention apparaissaient plus pénibles, était appropriée pour servir de base de calcul (cf. arrêt 6B_1057/2015 consid. 5.3.3).
Dans son arrêt du 13 février 2017, la cour cantonale a tenu compte d'un montant légèrement supérieur à 20 fr. par jour de détention (6'800 fr. / 339 jours). Ce faisant, elle ne s'est nullement écartée des considérants de droit de l'arrêt de renvoi du 25 mai 2016. Le recourant ne développe, pour le reste, aucune argumentation spécifique concernant le montant de l'indemnité litigieuse. Mal fondé, le grief doit être rejeté.
4.
Le recourant conclut à l'annulation de l'arrêt attaqué dans la mesure où les frais de la procédure d'appel antérieurs à l'arrêt de renvoi du 25 mai 2016 ont été mis pour moitié à sa charge, ainsi que dans la mesure où il ne lui a été octroyé qu'une indemnité de 1'100 fr. pour ses frais de défense relatifs à cette partie de la procédure.
La cour cantonale a, dans l'arrêt attaqué, indiqué que le recourant n'avait émis aucune critique relative à ces frais de procédure, et a mis ceux-ci à sa charge dans une mesure identique à celle retenue dans l'arrêt du 31 août 2015. Or, postérieurement à ce dernier arrêt, le recourant a obtenu gain de cause sur divers points, en étant notamment acquitté des chefs de prévention de lésions corporelles simples qualifiées et de menaces qualifiées. La cour cantonale aurait ainsi dû répartir à nouveau les frais d'appel antérieurs à l'arrêt de renvoi du 25 mai 2016, en tenant compte des succès obtenus par le recourant devant le Tribunal fédéral. En s'abstenant d'examiner cette question, la cour cantonale a violé l'art. 426 al. 1 CPP. Il lui appartiendra de fixer à nouveau la part des frais de procédure d'appel antérieurs à l'arrêt de renvoi du 25 mai 2016 mis à la charge du recourant.
L'autorité précédente devra en conséquence fixer derechef l'indemnité à titre de l'art. 429 al. 1 let. a CPP due au recourant, dans une proportion identique à celle des frais de procédure qui seront laissés à la charge de l'Etat et en s'abstenant de se fonder sur un taux horaire applicable aux défenseurs d'office (cf. consid. 5.3 infra).
5.
Le recourant reproche à la cour cantonale d'avoir violé l'art. 429 al. 1 let. a CPP en fixant son indemnité pour les dépenses occasionnées par l'exercice raisonnable de ses droits dans la procédure d'appel postérieure à l'arrêt de renvoi du 25 mai 2016.
5.1. Selon l'art. 429 al. 1 let. a CPP, le prévenu acquitté totalement ou en partie ou au bénéfice d'un classement a droit à une indemnité pour les dépenses occasionnées par l'exercice raisonnable de ses droits de procédure. L'indemnité couvre en particulier les honoraires d'avocat, à condition que le recours à celui-ci procède d'un exercice raisonnable des droits de procédure. L'Etat ne prend en charge les frais de défense que si l'assistance d'un avocat était nécessaire compte tenu de la complexité de l'affaire en fait ou en droit et que le volume de travail et donc les honoraires étaient ainsi justifiés (ATF 142 IV 45 consid. 2.1 p. 47).
5.2. La cour cantonale a considéré que l'indemnité réclamée par le recourant à titre de l'art. 429 al. 1 let. a CPP pour ses dépenses postérieures à l'arrêt de renvoi du 25 mai 2016 devait être réduite "d'approximativement un tiers", dans la mesure, d'une part, où l'intéressé avait persisté à "solliciter des indemnisations excessives en dépit des termes clairs de l'arrêt précité" et, d'autre part, où il convenait d'utiliser le tarif horaire applicable à un défenseur d'office. A cet égard, elle a indiqué que le recourant était pourvu d'un défenseur d'office dans le cadre de la procédure de première instance, mais avait souhaité confier sa défense à un avocat de choix pour la procédure d'appel, bien que ne disposant pas des moyens financiers nécessaires pour le rémunérer. Il convenait ainsi de retenir une "faute concomitante" de l'intéressé et de réduire son indemnité à celle qui aurait été allouée à un défenseur d'office. Ainsi, en faisant application de l'art. 16 al. 1 du règlement sur l'assistance juridique et l'indemnisation des conseils juridiques et défenseurs d'office en matière civile, administrative et pénale (RAJ/GE; RS/GE E 2 05.04) l'autorité précédente a admis partiellement les prétentions du recourant, à concurrence de trois heures d'activité de chef d'étude au tarif horaire de 200 fr. et de six heures d'activité d'avocat stagiaire au taux horaire de 65 fr., d'une majoration forfaitaire de 20% et de la TVA, le tout arrondi à 1'300 francs.
5.3. Le recourant se contente de soutenir que s'il n'a pas "eu les montants sollicités, il a obtenu en particulier plusieurs acquittements, des jours-amende au lieu d'une peine privative de liberté, une réduction de la peine, le sursis". Sa motivation ne répond pas, à cet égard, aux exigences découlant de l'art. 42 al. 2 LTF. On ignore en effet dans quelle mesure il conteste la réduction des heures de travail de son défenseur opérée par la cour cantonale. En outre, les acquittements dont fait état le recourant ont été obtenus dans le cadre de la procédure devant le Tribunal fédéral et non postérieurement à l'arrêt de renvoi du 25 mai 2016. Partant, il n'apparaît pas que la cour cantonale aurait violé l'art. 429 al. 1 let. a CPP en fixant l'indemnité sur la base de trois heures d'activité d'avocat et de six heures d'activité d'avocat stagiaire.
En revanche, le grief du recourant est bien fondé en tant qu'il porte sur l'utilisation, par l'autorité précédente, du tarif horaire applicable en cas de défense d'office. En effet, l'indemnité selon l'art. 429 al. 1 let. a CPP concerne uniquement les frais de défense relatifs à un avocat de choix. Le Tribunal fédéral a déjà eu l'occasion d'indiquer qu'une réduction de l'indemnité fondée sur l'art. 429 al. 1 let. a CPP au motif qu'une partie pouvant prétendre à des dépens n'avait pas, alors qu'elle eût été en droit de le faire, demandé l'assistance judiciaire, était exclue (cf. arrêt 6B_1078/2014 du 9 février 2016 consid. 4.2). Il s'ensuit que la cour cantonale n'a pas appliqué un tarif horaire approprié. Le recours doit être admis sur ce point, l'arrêt attaqué annulé et la cause renvoyée à l'autorité précédente afin qu'elle fixe à nouveau l'indemnité litigieuse.
6.
Le recourant soutient que la cour cantonale n'aurait pas "compétence" pour compenser les frais de procédure mis à sa charge avec les indemnités allouées pour les dépenses occasionnées par l'exercice raisonnable de ses droits de procédure.
L'intéressé ne formule à cet égard aucun grief répondant aux exigences de motivation de l'art. 42 al. 2 LTF. Au demeurant, si une compensation opérée sur la base de l'art. 442 al. 4 CPP est exclue avec une indemnité pour tort moral fondée sur l'art. 429 al. 1 let. c CPP, elle est admissible avec des indemnités à titre de l'art. 429 al. 1 let. a et b CPP. L'autorité de jugement est par ailleurs compétente pour prononcer une telle compensation (cf. ATF 143 IV 293 consid. 1 p. 294 s.; arrêt 6B_111/2017 du 17 octobre 2017 consid. 3.1). Le grief doit être rejeté.
7.
Le recours doit être partiellement admis (cf. consid. 2.3, 4 et 5.3 supra). 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 Genève (art. 68 al. 1 LTF). Sa requête 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).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est partiellement admis. L'arrêt attaqué est annulé et la cause est renvoyée à l'autorité cantonale pour nouvelle décision. Pour le surplus, le recours est rejeté.
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 Genève 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 de justice de la République et canton de Genève, Chambre pénale d'appel et de révision.
Lausanne, le 5 décembre 2017
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Graa