Faits :
A.
A._, né en 1966, travaillait comme employé de production au service de l'entreprise B._ SA. Il était occupé sur une chaîne de production et d'empaquetage de poudre lait qui nécessitait le port régulier de sacs à 25 kg. A ce titre, il était obligatoirement assuré contre le risque d'accident auprès de la Caisse nationale suisse d'assurance en cas d'accidents (ci-après: la CNA).
Le 30 octobre 2009, A._ a subi une déchirure tendineuse du muscle sous-scapulaire ainsi qu'une rupture partielle du tendon du long chef du côté droit après avoir chuté de sa hauteur à son lieu de travail. La CNA a pris en charge le cas. L'assuré a été opéré le 2 février 2010 par le docteur C._ qui a procédé à une reconstruction de la coiffe des rotateurs. L'évolution a été lente mais plutôt favorable. L'assuré a repris son travail le 4 octobre 2010.
Le 27 janvier 2012, l'employeur a annoncé une rechute survenue le 18 janvier en relation avec l'atteinte à l'épaule droite. Le docteur D._ a fait état d'une suspicion de subluxation antérieure récidivante. Les examens d'imagerie ont montré un impingement sous-acromial avec une arthrose acromio-claviculaire marquée. La CNA a repris le versement des indemnités journalières.
Le 19 mars 2012, A._ a déposé une demande de prestations de l'assurance-invalidité. Dans l'intervalle, le prénommé a également été victime d'un accident de la circulation au Kosovo qui n'a pas laissé de séquelles.
A partir de février 2013, le docteur E._, de l'Hôpital F._, a pris en charge le suivi médical de l'assuré. Il a pratiqué le 19 mars suivant une libération du canal carpien droit, puis le 16 avril une réinsertion du tendon du muscle sus-épineux et une résection de l'articulation acromio-claviculaire droite par arthroscopie. La situation s'étant révélée moins bonne qu'avant cette dernière intervention, le docteur G._, de la Clinique H._, a été consulté pour un deuxième avis. Constat ant un conflit sous-acromial persistant sur une lésion du sus-épineux, ce médecin a réalisé le 16 juin 2015 une nouvelle réinsertion et un complément d'acromioplastie. Après cette opération, le docteur G._ a fait état d'une évolution correcte avec des signes de conflit en régression; il subsistait des douleurs irradiant dans la nuque (rapport du 3 décembre 2015).
Le 29 février 2016, la doctoresse I._, médecin d'arrondissement de la CNA, a procédé à un examen final de l'assuré. Elle a retenu que la capacité de travail de A._ dans son ancienne activité était nulle, mais entière et sans baisse de rendement dans une activité adaptée épargnant le membre supérieur droit. Le prénommé devait éviter les travaux répétitifs au niveau des épaules ou au-dessus de la tête, ainsi qu'un travail avec des machines générant des vibrations, l'utilisation de gros marteaux, masses, massettes et clés anglaises pour serrer ou desserrer, de même que l'utilisation d'échelles et échafaudages. Le port de charges était limité à 10 kg maximum jusqu'à hauteur des hanches, respectivement 5 kg à hauteur du thorax et 1 kg à hauteur des épaules. Le taux d'atteinte à l'intégrité était de 15 %. Une dernière consultation a eu lieu le 20 mai 2016 à l'Hôpital J._ (rapport du 27 mai 2016 du docteur K._).
Sur cette base, la CNA a informé l'assuré qu'elle mettait fin aux indemnités journalières avec effet au 31 octobre 2016 tout en continuant à prendre en charge un traitement de physiothérapie en piscine de 2 à 3 séries à 9 séances par année ainsi que les médicaments antalgiques pour l'épaule. Par décision du 14 novembre 2016, confirmée sur opposition le 19 décembre 2016, elle lui a alloué une indemnité pour atteinte à l'intégrité d'un taux de 15 %, mais refusé de verser une rente d'invalidité au motif que la perte de gain présentée était inférieure à 10 %.
De son côté, l'Office AI a reconnu à A._ le droit à une rente d'invalidité du 1er janvier 2013 au 30 juin 2016 (décision du 22 décembre 2016).
B.
L'assuré a déféré la décision sur opposition de la CNA à la Cour des assurances du Tribunal cantonal fribourgeois. En cours de procédure, il a produit deux rapports médicaux (des docteurs L._, de la Clinique de réhabilitation de l'Hôpital F._, et M._, de la Clinique N._). A._ a également recouru contre la décision rendue par l'Office AI.
Statuant le 29 juin 2018, la cour cantonale a rejeté le recours de l'assuré contre la décision sur opposition de la CNA (cause 605 2017 8). Par jugement du même jour, elle a également rejeté celui dirigé contre la décision de l'office AI du 22 décembre 2016 (cause 605 2017 9).
C.
A._ interjette un recours en matière de droit public contre ces deux jugements. En matière d'assurance-accidents, il conclut, principalement, au maintien du versement des indemnités journalières et de la prise en charge du traitement médical au-delà du 31 octobre 2016; subsidiairement, à l'octroi d'une rente d'invalidité LAA d'au moins 51 %, ou sinon de 13 %, dès le 1er novembre 2016. Plus subsidiairement encore, il demande le renvoi de la cause à l'instance précédente pour instruction complémentaire.
La CNA conclut au rejet du recours sans déposer de réponse. De son côté, l'Office fédéral de la santé publique a renoncé à se déterminer.
D.
Par arrêt de ce jour, le Tribunal fédéral a rejeté le recours dirigé contre le jugement du 29 juin 2018 en matière d'assurance-invalidité (cause 8C_590/2018).

Considérant en droit :
1.
Le recours est dirigé contre un arrêt final (<ref-law>) rendu en matière de droit public (<ref-law>) par une autorité cantonale de dernière instance (art. 86 al. 1 let. d LTF). Il a été déposé dans le délai (<ref-law>) et la forme (<ref-law>) prévus par la loi. Il est donc recevable.
2.
Lorsque le litige porte sur des prestations en espèces et en nature de l'assurance-accidents, comme c'est le cas ici, le Tribunal fédéral dispose d'un pouvoir d'examen étendu en ce qui concerne les faits communs aux deux types de prestations (voir arrêt 8C_890/2012 du 15 novembre 2013 consid. 2).
3.
Le jugement entrepris expose correctement les dispositions légales et les principes jurisprudentiels applicables au présent litige, de sorte qu'il suffit d'y renvoyer.
4.
4.1. Le recourant reproche tout d'abord à la cour cantonale d'avoir confirmé, malgré les rapports qu'il a produits en procédure cantonale, la stabilisation de son état de santé. Le docteur M._ avait constaté l'existence d'une nouvelle rupture du sus-épineux sur la base d'une arthro-CT de l'épaule droite qu'il avait fait réaliser le 27 octobre 2017 et préconisé la continuation d'un traitement symptomatique et antalgique. Quant au docteur L._, il recommandait aussi la poursuite du traitement médical sous la forme d'un programme multimodal pour améliorer les douleurs et la fonction de l'épaule. Même le docteur K._ suggérait une prise en charge médicale pour reconditionnement. Par conséquent, la cour cantonale aurait dû condamner l'intimée à reprendre la prise en charge du traitement médical et le versement des indemnités journalières dès le 1er novembre 2016.
4.2. On rappellera qu'en vertu de l'<ref-law>, le droit à la rente prend naissance lorsqu'il n'y a plus lieu d'attendre de la continuation du traitement médical une sensible amélioration de l'état de l'assuré. Autrement dit, l'assureur-accidents est tenu d'octroyer une indemnité journalière et de prendre en charge le traitement médical aussi longtemps qu'il y a lieu d'attendre une amélioration notable de l'état de santé. Si une telle amélioration ne peut plus être envisagée, il doit clore le cas (voir JEAN-MAURICE FRÉSARD/MARGIT MOSER-SZELESS, L'assurance-accidents obligatoire, in: Schweizerisches Bundesverwaltungsrecht [SBVR], Soziale Sicherheit, 3e éd., n. 222 p. 975). Par ailleurs, de jurisprudence constante, le juge des assurances sociales apprécie la légalité des décisions attaquées, en règle générale, d'après l'état de fait existant au moment où la décision litigieuse a été rendue (<ref-ruling> consid. 3.1.1 p. 220, 121 V 362 consid. 1b p. 366 et les arrêts cités).
4.3. En l'espèce, au moment où l'intimée a pris la décision de mettre fin aux indemnités journalières, il ressortait des rapports médicaux des chirurgiens traitants à sa disposition qu'il n'y avait plus de traitement médical susceptible d'améliorer l'état de l'assuré. En particulier, le docteur K._, de l'Hôpital J._, indiquait, après un dernier contrôle du 20 mai 2016, que l'IRM récente de l'épaule droite montrait une intégrité des tendons suturés avec la présence d'une excellente trophicité musculaire de tous les muscles de la coiffe, et qu'il n'avait plus aucune proposition chirurgicale à faire bien que l'assuré continuât à se plaindre de douleurs en abduction. On notera au demeurant que même à prendre en considération l'évolution de l'épaule droite constatée par le docteur M._ en octobre 2017, ce médecin a aussi déconseillé la réalisation d'une quatrième opération, l'état du sus-épineux, fortement remanié, ne se prêtant pas à une intervention de réparation correcte. Il était d'avis que le patient était par ailleurs trop jeune pour une mise en place d'une prothèse inversée et qu'il n'y avait pas d'autre solution que de continuer un traitement symptomatique, antalgique et peut-être une physiothérapie espacée, ce que l'intimée a du reste accordé au recourant après la clôture du cas. Quant au rapport du docteur L._, il est trop vague sur les mesures thérapeutiques encore envisageables. En outre, une hypothétique amélioration des douleurs et de la fonction de l'épaule n'est pas suffisante. Dans ces conditions, le jugement attaqué n'est pas critiquable en tant qu'il confirme que l'intimée était fondée à clore le cas, comme décidé, au 31 octobre 2016.
5.
5.1. Le recourant fait ensuite grief à la cour cantonale d'avoir retenu qu'il était apte à exercer une activité adaptée à plein temps et sans diminution de rendement à partir du 1er novembre 2016. Il s'appuie essentiellement sur un rapport du docteur O._ du 15 juin 2018 faisant état de douleurs fortes et continues lors de mouvements simples avec son épaule droite, même sans port de charges. A tout le moins la cour cantonale aurait dû retenir que ce rapport était de nature à un doute quant à la fiabilité des conclusions du médecin d'arrondissement de la CNA.
5.2. Dans un recours au Tribunal fédéral, aucun fait nouveau ni preuve nouvelle ne peut être présenté à moins de résulter de la décision de l'autorité précédente (<ref-law>). En l'occurrence, le rapport du docteur O._ a été envoyé à la cour cantonale par lettre du 29 juin 2018 (timbre postal) et lui est parvenu le 2 juillet suivant, soit postérieurement au prononcé de son jugement. Ce rapport ne peut donc être pris en considération par la Cour de céans.
5.3. Cela étant, en ce qui concerne l'évaluation de la capacité de travail résiduelle de l'assuré au plan somatique, il n'existe aucun motif de s'écarter de l'exigibilité fixée par la doctoresse I._, ni d'ordonner une expertise. En effet, le dossier ne contient aucun avis médical dont il faudrait inférer que les limitations fonctionnelles qu'elle a déterminées ne tiendraient pas suffisamment compte du status objectif observé ou que le recourant ne serait pas en mesure d'assumer une quelconque activité au-delà de 50 % comme il le prétend. On relèvera que le docteur G._ a émis l'opinion que dans une activité légère, l'assuré serait en mesure "d'exprimer une capacité résiduelle significative" (rapport du 21 mars 2016). De la même manière, le docteur M._ a encouragé l'assuré "à utiliser son bras le mieux possible et essayer de retrouver une activité professionnelle correspondant à ses limitations" (rapport du 11 janvier 2018). Enfin, il est significatif que le docteur L._ ne critique pas concrètement l'appréciation qu'a faite le médecin d'arrondissement de la CNA des tâches exigibles. On ne voit donc pas qu'il subsiste un doute suffisant quant à la pertinence des conclusions de ce dernier.
6.
6.1. Enfin, le recourant critique le revenu sans invalidité fixé par la CNA et la cour cantonale, essentiellement le montant 8'600 fr. retenu au titre des heures supplémentaires. Il soutient qu'aucune pièce au dossier ne permet de vérifier si ce montant correspond bien à la rémunération qu'il aurait obtenue à ce titre en 2016 sans son atteinte à la santé. Il fait remarquer que pour la période du 1er novembre 2008 au 29 octobre 2009, il avait reçu une somme brute de 11'122 fr. 40 pour les heures supplémentaires effectuées ce qui, ajouté au revenu annuel brut de base qu'il aurait réalisé en 2016 (4'810 fr. x 12 = 57'720 fr.), donne un revenu de valide de 68'842 fr. 40. Comparé au revenu d'invalide fixé par la cour cantonale à 60'187 fr., il en résulte un taux d'invalidité de 13 %, suffisant pour ouvrir le droit à une rente LAA.
6.2. Pour fixer le revenu sans invalidité, il faut établir ce que l'assuré aurait, au degré de la vraisemblance prépondérante, réellement pu obtenir au moment déterminant s'il n'était pas invalide. Le revenu sans invalidité doit être évalué de la manière la plus concrète possible. C'est pourquoi il se déduit en principe du salaire réalisé en dernier lieu par l'assuré avant l'atteinte à la santé, en tenant compte de l'évolution des salaires (<ref-ruling> consid. 4.3.1 p. 224 et la référence). Le salaire réalisé en dernier lieu par l'assuré comprend tous les revenus d'une activité lucrative (y compris les gains accessoires, la rémunération des heures supplémentaires effectuées de manière régulière) soumis aux cotisations AVS (<ref-ruling> consid. 3.3.2 p. 30; <ref-ruling> consid. 5.1 p. 300; <ref-ruling> consid. 4.1 p. 325).
6.3. En l'occurrence, contrairement à ce que prétend le recourant, on peut déduire des pièces au dossier qu'il n'aurait pas obtenu en 2016 une somme supérieure à 8'600 fr. pour des heures supplémentaires. Il ressort d'un compte-rendu d'entretien téléphonique du 16 mars 2015 entre la CNA et l'ancien employeur que ce dernier a versé en moyenne 8'600 fr. représentant 200 heures supplémentaires par année à ses employés. Ultérieurement, en réponse à une demande par courriel du 9 septembre 2016 de la CNA, l'entreprise B._ SA a précisé que si A._ travaillait toujours à leur service en 2016, "il aurait en moyenne des heures supplémentaires (à 125 %) et indemnités de dimanche (à 40 %) de 160 heures par année payées (soit environ 20 dimanches par année, ou un dimanche sur trois) ". L'ancien employeur a également souligné que les rubriques "heures supplémentaires" et "indemnités de dimanche" étaient liées, et qu'en 2016, les heures à effectuer les week-ends avaient diminué sur le site de P._ (voir sa lettre du 13 octobre 2016). On peut donc en conclure que les heures supplémentaires s'effectuent le dimanche et qu'elles sont rémunérées au total à raison de 165 % du salaire horaire. Si la réalisation de 200 heures supplémentaires ont été rémunérées en moyenne à hauteur 8'600 fr., le recourant n'aurait certainement pas obtenu un montant annuel supérieur pour effectuer les 160 heures supplémentaires qu'il aurait pu faire au maximum en 2016.
6.4. Vu ce qui précède, il n'y a pas lieu de s'écarter du revenu sans invalidité de 66'320 fr. retenu par l'intimée et confirmé par la cour cantonale. Pour le surplus, le recourant ne critique pas le revenu d'invalide de 60'187 fr. (déterminé en application des salaires statistiques avec un abattement de 10 % dans le jugement entrepris), ni le calcul proprement dit du taux d'invalidité (9 %), lequel est insuffisant pour ouvrir le droit à une rente d'invalidité (cf. <ref-law>).
7.
Le recours doit donc être rejeté.
Le recourant, qui succombe, supportera les frais judiciaires (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
Les frais judiciaires, arrêtés à 800 fr., sont mis à la charge du recourant.
3.
Le présent arrêt est communiqué aux parties, à la I e Cour des assurances sociales du Tribunal cantonal fribourgeois et à l'Office fédéral de la santé publique.
Lucerne, le 4 juillet 2019
Au nom de la Ire Cour de droit social
du Tribunal fédéral suisse
La Juge présidant : Heine
La Greffière : von Zwehl