Fatti:
A.
Con sentenza del 26 gennaio 2016, la Corte di appello e di revisione penale del Cantone Ticino (CARP) ha dichiarato A._ autore colpevole segnatamente di violenza o minaccia contro le autorità e i funzionari. Adito dall'imputato, il Tribunale federale, con sentenza 6B_254/2016 del 12 settembre 2016, ha respinto nella misura della sua ammissibilità il ricorso in materia penale contro il giudizio della Corte cantonale.
B.
Il 19 giugno 2017 A._ ha presentato alla CARP un'istanza di revisione del giudizio del 26 gennaio 2016, adducendo una prova da lui ritenuta nuova e tale da comportare l'assoluzione dal suddetto reato.
C.
Con sentenza del 24 luglio 2017, statuendo nella stessa composizione del giudizio d'appello, la CARP ha respinto l'istanza di revisione. Ha negato che la prova fosse nuova giusta l'art. 410 cpv. 1 lett. a CPP, siccome la sua assunzione era già stata chiesta dall'imputato nella procedura di appello.
D.
A._ impugna questo giudizio con un ricorso del 27 settembre 2017 al Tribunale federale, chiedendone l'annullamento. Il ricorrente lamenta la mancata ricusazione dei membri della CARP che avevano pronunciato la sentenza del 26 gennaio 2016.
E.
La Corte cantonale, pur riconoscendo di avere inavvertitamente omesso di considerare l'art. 21 cpv. 3 CPP, ritiene tardiva la domanda di ricusazione. Il Ministero pubblico non ha presentato una risposta al ricorso.
Diritto:
1.
1.1. La decisione impugnata respinge l'istanza di revisione e pone quindi fine al procedimento penale. Si tratta di una decisione finale pronunciata in materia penale da un'autorità cantonale di ultima istanza, contro la quale è ammissibile il ricorso in materia penale (art. 78 cpv. 1, 80 cpv. 1 e 90 LTF). Il ricorso è tempestivo (art. 100 cpv. 1 LTF). La legittimazione del ricorrente giusta l'art. 81 LTF è data.
1.2. Il Tribunale federale applica d'ufficio il diritto (art. 106 cpv. 1 LTF). Non è quindi vincolato né agli argomenti sollevati nel gravame né ai considerandi della precedente istanza. Esso può accogliere il ricorso sulla base di un motivo non invocato, rispettivamente respingerlo con una motivazione diversa da quella addotta dalla precedente istanza (DTF 141 V 605 consid. 1 e rinvio).
2.
2.1. Richiamando gli art. 56 segg. CPP, il ricorrente sostiene che i membri della CARP che si sono pronunciati sull'istanza di revisione avrebbero dovuto ricusarsi, siccome avevano precedentemente statuito, nella stessa composizione, nella procedura d'appello. Adduce di non avere potuto presentare prima una domanda di ricusazione, non conoscendo la composizione del collegio giudicante.
2.2. La garanzia di un giudice indipendente e imparziale, sancita dagli art. 30 cpv. 1 Cost. e 6 n. 1 CEDU e concretizzata dall'art. 56 CPP, non consente di massima di ricusare un giudice per il semplice fatto che in un procedimento anteriore ha deciso a sfavore del ricorrente (DTF 143 IV 69 consid. 3.1-3.3; 129 III 445 consid. 4.2.2.2 pag. 466; 114 Ia 278 consid. 1). Il Tribunale federale ha in particolare avuto modo di precisare che la partecipazione dello stesso giudice alla decisione di merito e in seguito alla procedura della sua revisione non è di per sé contraria alla citata garanzia costituzionale (DTF 113 Ia 62 consid. 3b; 107 Ia 15 consid. 3b; sentenza 1P.252/2004 del 10 giugno 2004 consid. 2). Nondimeno, l'art. 21 cpv. 3 CPP prevede che i membri del tribunale d'appello non possono essere giudici della revisione nella medesima causa. Il legislatore ha infatti scelto di separare rigorosamente le diverse funzioni, segnatamente in materia di appello, di reclamo e di revisione (cfr. pure l'art. 21 cpv. 2 CPP). L'art. 21 cpv. 3 CPP ha quindi una portata più estesa della garanzia costituzionale del giudice indipendente e imparziale ed esige che i membri del tribunale d'appello che hanno partecipato alla decisione di cui è chiesta la revisione non possono prendere parte al giudizio sulla stessa (cfr. sentenza 6B_427/2012 del 18 aprile 2013 consid. 2.2; K IPFER, in: Basler Kommentar, Schweizerische Strafprozessordnung, 2aed., 2014, n. 2 all'art. 21; HENZELIN/MAEDER, in: Commentaire romand, Code de procédure pénale suisse, 2011, n. 10 all'art. 21).
2.3. In concreto, i tre giudici (tra i quali la Presidente della Corte) e il vicecancelliere che hanno statuito nella procedura d'appello con sentenza del 26 gennaio 2016 hanno anche partecipato al giudizio del 24 luglio 2017 sull'istanza di revisione. La decisione impugnata, emanata dalla CARP nella medesima composizione di quella precedente, disattende pertanto l'art. 21 cpv. 3 CPP.
2.4. Nella risposta al gravame, la Corte cantonale adduce che la trattazione dell'istanza di revisione da parte della CARP nella sua composizione ordinaria sarebbe stata nota al ricorrente perlomeno a partire dal 4 luglio 2017, quando ha ricevuto atti procedurali della Presidente della Corte. Non risulta tuttavia che la composizione personale del collegio che avrebbe statuito sull'istanza di revisione gli sia stata comunicata preventivamente. Nella risposta al ricorso, la CARP rileva infatti unicamente che non gli è stata comunicata una composizione diversa da quella ordinaria. Certo, le intimazioni relative allo scambio degli allegati sono state ordinate dalla Presidente della CARP. Sulla base di questo solo fatto, il ricorrente non doveva però attendersi che sull'istanza di revisione statuissero, in violazione dell'art. 21 cpv. 3 CPP, i membri della Corte che avevano già partecipato alla sentenza di appello. La censura sollevata in questa sede relativamente alla mancata ricusazione dei membri della Corte cantonale che hanno partecipato al giudizio del 24 luglio 2017 è pertanto tempestiva e, nel risultato, fondata (cfr. sentenza 6B_427/2012, citata, consid. 2.3).
3.
Ne segue che il ricorso deve essere accolto e la sentenza impugnata annullata. La causa è pertanto rinviata alla Corte cantonale, affinché statuisca nuovamente sul gravame. Non si prelevano spese giudiziarie (art. 66 cpv. 4 LTF), né si assegnano ripetibili al ricorrente, che non ha fatto capo al patrocinio di un avvocato (cfr. art. 68 cpv. 1 e 2 LTF).
Per questi motivi, il Tribunale federale pronuncia:
1.
Il ricorso è accolto. La sentenza emanata il 24 luglio 2017 dalla Corte di appello e di revisione penale è annullata e la causa le è rinviata per un nuovo giudizio.
2.
Non si prelevano spese giudiziarie.
3.
Comunicazione al ricorrente, al Ministero pubblico e alla Corte di appello e di revisione penale del Cantone Ticino.