이 영역을 누르면 첫 페이지로 이동
종이상자의 작은일기장 블로그의 첫 페이지로 이동

종이상자의 작은일기장

페이지 맨 위로 올라가기

종이상자의 작은일기장

알아둬도 쓸모없는 신비한 잡학블로그

부가 기능, 그리고 부가 기능 ID

  • 2021.01.23 17:49
  • 개발이야기/Web
반응형
본 글은 Mozilla 재단에서 제공하는 Firefox Extension Workshop 웹 사이트의 게시글을 번역한 것입니다. 원 게시글의 라이선스는 CC-BY-SA 3.0 Unported이며, Mozilla.org 라이선스 정책 상 CC-BY-SA 3.0 Unported 혹은 이후 버전을 사용할 수 있으므로 이 글은 하단 라이선스 표기와 관계 없이 CC-BY-SA 3.0 Unported로 배포됩니다.
전체 기여자 및 원본 글은 여기에서 확인하실 수 있습니다.

Firefox 부가 기능은 다른 Firefox 부가 기능과 구별하기 위한 각각의 ID가 있습니다. 이 글은 WebExtension API를 이용하여 제작된 부가 기능에 add-on ID가 어떻게 작동하는지에 대한 내용을 설명합니다.

Firefox에서 사용하는 부가 기능은 모두 Firefox 내부 및 addons.mozilla.org (AMO) 웹사이트에서 사용하는 고유한 식별자를 가지고 있습니다. 예를 들어, Firefox는 설치된 부가 기능에 업데이트가 있는지 확인하거나 어떤 항목(예를 들면 저장된 데이터)을 해당 부가 기능으로 제어하고 있는지 확인하기 위해 사용합니다.

오래된 형태의 Firefox 부가 기능은 개발자가 반드시 부가 기능의 ID를 명시적으로 설정해두어야만 했습니다. XUL/XPCOM 부가 기능은 설치 용도의 manifest 파일[각주:1]에 ID를 설정해야 했으며, SDK 부가기능은 package.json 파일[각주:2]에 명시해야 했습니다.

그러나, Firefox 버전 48부터는 이렇게 ID를 명시하지 않아도 개발, 버그 수정, 배포 및 업데이트를 할 수 있도록 변경되었습니다.

주의: ID를 넣지 않고도 WebExtension 부가기능을 개발하거나 버그를 수정하는 기능은 Firefox 48부터 도입되었습니다. 이전 버전을 사용할 필요가 있다면, 반드시 browser_specific_settings 키를 사용하여 ID를 명시해야 합니다.

부가 기능 ID가 없을 때의 기본 작업 흐름

부가 기능은 manifest.json 내의 browser_specific_settings 키를 사용하여 부가 기능 ID를 명시적으로 설정합니다. 그러나, 이 키는 보통 선택 옵션입니다. 설정하지 않기를 원한다고 해도 일반적으로 ID 없이 개발, 버그 수정, 배포, 업데이트하는 것이 가능합니다. 이렇게 했을 때 한 가지 장점은 바로 Google Chrome이 browser_specific_settings 키를 인식하지 못하며 넣게 되면 경고를 띄울 것이라는 점입니다.

그러나, 이런 이점에도 불구하고 몇몇 WebExtension API는 부가기능 ID를 사용하며 다음 브라우저 세션까지 동일할 것입니다.[각주:3] 이런 API를 Firefox에서 사용할 필요가 있을 때에는, 반드시 browser_specific_settings 키를 사용하여 부가 기능 ID를 명시적으로 설정해야 합니다. 좀 더 자세히 알고 싶다면 아래 '부가 기능 ID가 필요할 때'를 참고하세요.

개발 및 버그 수정

Firefox 버전 48부터, manifest.json 내에 ID가 명시되어 있지 않다면 about:debugging 페이지에서 부가 기능을 설치할 때 랜덤으로 생성된 임시 ID를 부여합니다. "새로 고침" 버튼을 눌러 부가 기능을 다시 불러온다면, 같은 ID가 사용됩니다. 그러나 Firefox를 재시작하고 부가 기능을 다시 불러온다면, 새로운 ID를 부여받을 것입니다.

만약 부가 기능을 .xpi 혹은 .zip 파일 형태로 about:addons 페이지에서 설치한다면, 작동하지 않을 것입니다. 이런 상황에서는 manifest.json 파일 내에 browser_specific_settings 키를 추가하세요.

배포하기

부가 기능을 완성한 후에는, 부가 기능을 패키지로 묶어서 검토 및 서명 작업을 위해 AMO에 제출할 수 있습니다. 만약 올린 부가 기능이 고유한 ID를 가지고 있지 않다면, AMO는 고유한 값을 부여해 줄 것입니다. 이 과정은 제출 후 부가 기능이 영구적인 ID를 할당받는 시점에서만 이뤄지며, 추후 ID는 서명된 부가 기능 패키지에 포함됩니다.

주의하실 점은 이렇게 영구적으로 ID가 할당되고 나면, 과거의 Add-on SDK나 XUL/XPCOM 형태로 업데이트할 수 없다는 것입니다.[각주:4] Add-on SDK, XUL/XPCOM 플랫폼으로 전환을 원하신다면, 반드시 새로운 ID로 새로운 부가 기능을 제출해야 합니다.

업데이트

업데이트 작업을 하는 시점에서도, 일반적으로 ID를 가지고 무언가를 할 필요는 없습니다. ID 없이 개발을 지속하실 수 있으며, 업데이트가 필요할 때에는 부가 기능의 AMO 페이지에 접속하여 새로운 버전을 올리시면 됩니다. 이는 그 페이지로 부가 기능을 올렸을 때, ID가 없어도 AMO는 그 부가 기능의 업데이트 버전이라는 것을 알기 때문입니다.

부가 기능을 수동으로 AMO에서 제공하는 각 부가 기능의 페이지를 사용하여 업데이트하는 경우, 이 작업은 필수적입니다. 만약 다른 방법으로 제출하게 되면, AMO가 제출된 부가 기능이 기존에 존재하는 부가 기능의 업데이트라는 것을 알지 못해 새로운 부가 기능으로 간주할 것입니다.

이런 방식으로 업데이트하는 것은 XUL/XPCOM과 같은 옛날 형식의 부가 기능을 WebExtension API로 업데이트할 때에도 사용하실 수 있습니다. AMO에서 제공하는 구형 부가 기능의 페이지에 접속하신 후, 새 부가 기능을 올리시면 구 버전의 업데이트로 인식할 것입니다.

부가 기능 ID가 필요할 때

  • 부가 기능을 XPI 파일로 로딩할 때, 그리고 임시로 로드하는 것임에도 about:debugging 페이지를 사용하지 않으면서 서명도 되어 있지 않을 때 필요합니다.
  • AMO의 각 부가 기능 페이지에서 수동으로 올리는 것이 아닌, AMO의 API를 사용하여 업로드하려고 할 때에는 요청을 넣을 때 부가 기능의 ID가 필요합니다.
  • 몇몇 WebExtension API는 부가 기능 ID를 사용하며 다음 브라우저 세션까지 동일할 것입니다. 만약 이런 API를 사용하려고 하실 때에는 browser_specific_settings 키를 사용하셔서 ID를 명시해야 합니다. 아래 API에 적용됩니다.
    • storage.managed
    • storage.sync
    • identity.getRedirectURL
    • Native messaging
    • pkcs11
    • runtime.onMessageExternal
    • runtime.onConnectExternal
  • Android용 Firefox에서 사용하실 때에도 필요합니다. manifest.json 내의 browser_specific_settings 페이지를 참고하세요.
  • manifest.json 내에서 dictionaries 키를 사용하실 때도 필요합니다.

 

  1. 역자 주: 현재는 삭제된 문서입니다. [본문으로]
  2. 역자 주: 현재는 삭제된 문서입니다. [본문으로]
  3. 역자 주: expect it to be the same from one browser session to the next가 원문이며, 브라우저를 재실행하더라도 다음 세션까지 ID가 동일할 것이라는 내용인 것 같습니다. [본문으로]
  4. 역자 주: ID를 명시하지 않는 방법은 WebExtension API라는 최신 기술에서만 지원되므로, 한 번 ID가 할당되면 그 ID로는 과거 사용했던 다른 기술로 만든 부가 기능을 올릴 수 없다는 의미입니다. 더 쉽게는, 업데이트라는 형태로 '바꿔치기' 할 수 없다는 뜻이라고 볼 수 있겠습니다. [본문으로]
반응형
저작자표시동일조건

'개발이야기 > Web' 카테고리의 다른 글

Firefox의 Project Fission이란?  (0) 2021.04.03
browser_specific_settings  (0) 2021.01.23
부가 기능, 그리고 부가 기능 ID  (0) 2021.01.23
[Apache 2.4/PHP 7.2] 파일 업로드 크기 늘이기  (0) 2018.11.12
[Apache 2.4/PHP 7.2] Opcache 활성화하기  (0) 2018.11.11
pbSpace 웹 페이지 개설:PureCSS 일부 버그 수정  (0) 2018.07.26
Firefox Tools, FirefoxExtensionWorkshop, Mozilla.org

댓글

방문자 정보

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • Firefox의 Project Fission이란?

    Firefox의 Project Fission이란?

    2021.04.03
  • browser_specific_settings

    browser_specific_settings

    2021.01.23
  • [Apache 2.4/PHP 7.2] 파일 업로드 크기 늘이기

    [Apache 2.4/PHP 7.2] 파일 업로드 크기 늘이기

    2018.11.12
  • [Apache 2.4/PHP 7.2] Opcache 활성화하기

    [Apache 2.4/PHP 7.2] Opcache 활성화하기

    2018.11.11
다른 글 더 둘러보기
  • 최신
    • 1
    • ···
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • ···
    • 399
  • 다음

정보

종이상자의 작은일기장 블로그의 첫 페이지로 이동

종이상자의 작은일기장

  • 종이상자의 작은일기장의 첫 페이지로 이동

검색

메뉴

  • 태그
  • 방명록
  • 관리자
  • 종이상자는?
  • MCPE 맵:하늘도시

카테고리

  • 분류 전체보기 (399)
    • 생활과 생각 (38)
      • 매해 블로그 결산 (5)
      • 여행 (9)
    • 공지사항 (22)
    • 팁과 자료모음 (8)
    • OS 관련 글 (29)
      • Android (11)
      • Windows (4)
      • ArchLinux 계열 (2)
      • Debian 계열 (6)
      • RedHat 계열 (4)
      • 기타 리눅스 (2)
    • SW 관련 글 (111)
      • 보안 소식 (8)
      • 앱 리뷰 (42)
      • 앱 한글화 프로젝트 (8)
      • 웹 서비스 리뷰 (5)
      • 서비스 소식 (29)
      • 디지털 기기 소식 (10)
      • 티스토리 관련 이야기 (7)
      • 기타 소식 (2)
    • HW 관련 글 (80)
      • Google (17)
      • LG (27)
      • 전자책 단말기 (7)
      • 기타 안드로이드 기기 (3)
      • 노트북 (1)
      • 음향기기 (0)
      • 주변기기 (21)
      • 아이리버 폰 (1)
    • Minecraft (41)
      • PE 도시맵 (30)
      • PE 업데이트 및 팁 (5)
      • [보관용]생존기 (3)
    • 개발이야기 (26)
      • Android (8)
      • Java (0)
      • Raspberry Pi (8)
      • Web (7)
    • 특집 글 (35)
      • [2017]클라우드 소개 (1)
      • [2017]신년특집 (27)
      • [2020] LG 스마트폰 활용팁.. (7)
    • 보관함 (7)
      • 세월호 (7)

최근 글

  • [Git 기반 서버 맵 관리] 맵 파일 클라⋯

    [Git 기반 서버 맵 관리] 맵 파일 클라⋯

    2022.07.30
  • LG VELVET, LG G8 ThinQ 안드로이드 12⋯

    LG VELVET, LG G8 ThinQ 안드로이드 12⋯

    2022.07.27
  • 시작은 도피, 그러나 결국 책임감 - 오⋯

    시작은 도피, 그러나 결국 책임감 - 오⋯

    2022.07.18
  • 새로운 경험, 바빠진 생활 그리고 행복⋯

    새로운 경험, 바빠진 생활 그리고 행복⋯

    2022.05.04

인기 글

  • LG 스마트폰 기초 설정하기

    LG 스마트폰 기초 설정하기

    2020.12.31
  • LG 키보드의 이런저런 기능들

    LG 키보드의 이런저런 기능들

    2020.12.29
  • 퀵 헬프와 친해지기

    퀵 헬프와 친해지기

    2020.12.26
  • '편리한 기능' 사용하기

    '편리한 기능' 사용하기

    2020.12.31

댓글

  • 그러게요 ㅠㅠ 안드로이드 13 하나만 올⋯
  • 이제 정말 마지막이 다가오네요😭
  • https://1drv.ms/u/s!ApTHjpL68BZ9goU5Y⋯
  • 안녕하세요, 외장하드에 있을 것 같은데⋯

공지사항

  • 공지 - 라이선스 안내
  • 공지 - 애드센스 관련 안내

아카이브

  • 2022/07
  • 2022/05
  • 2022/02
  • 2021/06
  • 2021/04

태그

  • 티스토리
  • HanuelCity
  • 마을맵
  • Minecraft UWP
  • MCPE
  • Nexus 5X
  • 안드로이드
  • 도시맵
  • LGFandom
  • lg전자

나의 외부 링크

  • 심플정보
  • 시이린의 얼음상자
  • 책과 함께 하는 삶은 지루하⋯
  • SONYLOVE
  • GeniusJW
  • 흉내지빠귀 보안블로그
  • LatiosOSC
  • pbSpace
  • 블랙쥬스의 취미생활

정보

paperbox_turtle의 종이상자의 작은일기장

종이상자의 작은일기장

paperbox_turtle

블로그 구독하기

  • 구독하기
  • 네이버 이웃 맺기
  • RSS 피드

방문자

  • 전체 방문자 350,882
  • 오늘 11
  • 어제 43

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © paperbox_turtle. Designed by Fraccino.

티스토리툴바