Gander Android 파일 뷰어 – 권한 없는 오프라인 문서 리더

Gander Android 파일 뷰어 – 권한 없는 오프라인 문서 리더

Gander는 15 MB 크기의 오픈소스 Android 앱으로, 사용자가 PDF, Office 파일, 미디어, Markdown 및 코드를 전혀 온라인 연결 없이, INTERNET 권한을 포함한 어떠한 권한도 요청하지 않고 완전히 오프라인으로 볼 수 있게 합니다.

Gander Android 파일 뷰어 – 권한 없는 오프라인 문서 리더

권한 없는 오프라인 뷰잉이 실제 프라이버시 격차를 해결합니다

Gander는 Android에서 PDF, Word, Excel, PowerPoint, 이미지, 비디오, 오디오, Markdown 및 코드를 어떠한 권한, 광고 또는 네트워크 접근 없이 열 수 있는 15 MB 단일 APK를 제공합니다. 이것은 대부분의 Android 기기가 여러 개의 독점 뷰어를 탑재하고 있어 문서를 클라우드 서비스에 업로드하여 사용자 데이터를 노출시키기 때문에 중요합니다.


핵심 기능 세트 (결론 먼저)

  • 올인원 뷰어 – 하나의 앱이 문서, 스프레드시트, 슬라이드, 사진, 비디오, 오디오, Markdown 및 소스 코드를 처리합니다.
  • 권한 없음 – 앱은 INTERNET 또는 저장소 권한을 선언하지 않으며, Storage Access Framework (SAF)와 Open with 인텐트를 통해 파일을 받으므로 다른 파일이나 네트워크에 접근할 수 없음을 보장합니다.
  • 오프라인 렌더링 – 모든 렌더링 라이브러리가 번들되어 로컬에서 실행됩니다: PDF는 Pdfium, 스프레드시트는 SheetJS, Word는 docx‑preview, 슬라이드는 PPTXjs, 미디어는 Media3 ExoPlayer.
  • 모던 UI – Material 3 디자인, 다크 모드, 엣지‑투‑엣지 레이아웃, 핀치‑투‑줌 및 부드러운 스크롤링, 대형 이미지에 대한 타일 딥‑줌 포함.
  • 파일 탐색 – 썸네일 미리보기가 있는 최근 파일과 일회성 폴더 권한을 통해 사용자는 지속적인 저장소 권한 없이 탐색할 수 있습니다.
  • 문서 내부 검색 – 텍스트 검색은 Word, Excel, PowerPoint, Markdown, 일반 텍스트 및 코드 파일에서 작동합니다.
  • 공유 통합 – 파일을 어떤 앱에서든 Gander로 공유할 수 있으며, 열려 있는 파일을 다른 앱으로 보낼 수 있거나 해당 폴더를 파일 관리자에서 열 수 있습니다.

지원 포맷 (결론 먼저)

Gander는 다음 포맷을 직접 열 수 있습니다:

카테고리 포맷 렌더링 엔진
문서 PDF Pdfium (native)
Word .docx docx‑preview in sandboxed WebView
스프레드시트 .xlsx, .xls, .xlsm, .xlsb, .csv, .ods SheetJS (offline)
슬라이드 PowerPoint .pptx PPTXjs (offline)
이미지 JPG, PNG, WebP, BMP, HEIC/HEIF, GIF, SVG, AVIF, ICO Tiled view for raster, WebView for animated/vector
비디오 MP4, M4V, MOV, MKV, WebM, 3GP, AVI, FLV, MPEG‑TS Media3 ExoPlayer
오디오 MP3, M4A, AAC, FLAC, WAV, OGG, Opus, AMR Media3 ExoPlayer
Markdown .md marked + DOMPurify (HTML)
텍스트 & 코드 .txt, .json, .xml, most source extensions Plain text viewer

레거시 바이너리 .doc.ppt는 지원되지 않으며, 앱은 제한 사항을 설명하고 최신 포맷으로 변환할 것을 제안합니다.

권한 없는 트릭이 작동하는 방식 (결론 먼저)

Gander는 Android의 Storage Access Framework와 **ACTION_OPEN_DOCUMENT_TREE**를 활용하여 사용자가 선택한 정확한 파일이나 폴더에 대해 일회성 URI 권한을 얻습니다. 앱이 READ_EXTERNAL_STORAGEINTERNET을 선언하지 않기 때문에 시스템은 더 넓은 파일 시스템이나 네트워크 접근을 부여하지 않습니다. Office 문서는 WebViewAssetLoader를 통해 리소스를 제공하는 잠금된 WebView 내부에서 렌더링되어, 모든 JavaScript 라이브러리가 앱의 assets에서 로드되고 네트워크 요청이 이루어지지 않도록 보장합니다.

설치 및 업데이트 (결론 먼저)

  • 설치: GitHub 릴리스 페이지에서 최신 APK를 다운로드합니다(예: Gander‑x.y‑arm64.apk). “알 수 없는 앱 설치”를 활성화하고 사이드로드합니다.
  • 자동 업데이트: 오픈소스 업데이트 도구 Obtainium을 사용합니다(https://github.com/mokshablr/gander를 소스로 추가)하여 Play Store 없이 새로운 릴리스를 받을 수 있습니다.
  • 호환성: Android 8.0 (API 26) 이상에서 실행되며, 매우 오래된 기기나 x86 기기를 위한 범용 APK가 제공됩니다.

커뮤니티 피드백 하이라이트 (결론 먼저)

  • 사용자들은 프라이버시 우선 설계와 무거운 스위트나 트래커 없이 파일을 열 수 있는 점을 칭찬합니다.

    "멋집니다. 실제 문제를 해결하는 훌륭한 도구를 만들었습니다: 인터넷 접근 권한을 부여하지 않고, 모든 것을 추적하는 400 MB 무거운 스위트를 설치하지 않아도 파일을 즉시 열 수 있습니다." – chesscoachx

  • 여러 댓글 작성자는 F‑Droid 배포추가 포맷 지원(예: ODT, ODS, RTF)을 요청합니다.

    "Obtainium으로 설치하기 전에 사용자가 검증할 수 있도록 README에 서명을 추가해 주세요…" – aand16

  • 절대적 격리에 대한 우려가 제기됩니다: INTERNET 권한이 없는 앱은 자체적으로 소켓을 열 수 없지만, 다른 앱(예: 브라우저)을 실행해 데이터를 전송할 수 있습니다.

    "INTERNET 권한이 없는 Android 앱이 외부 세계와 격리된다는 보장은 없습니다…" – TekMol

  • 성능 피드백에서는 PDF 렌더링의 반응성Markdown 미리보기일반 텍스트 자동 줄바꿈의 유용성을 언급합니다.

    "제가 정말 좋아하는 두 가지: 1. Markdown이 미리보기로 로드됨 2. 일반 텍스트 파일이 오른쪽으로 스크롤되는 대신 자동 줄바꿈됨" – collabs

소스에서 빌드하기 (결론 먼저)

Gander를 직접 컴파일하려면 **JDK 17+**와 Android SDK platform 35를 설치한 뒤, 다음을 실행합니다:

./gradlew assembleRelease   # produces an unsigned APK

릴리스를 서명하기 위해 로컬 키스토어(keystore/gander.jks)가 필요합니다; 저장소에서는 의도적으로 이를 제외했습니다.

로드맵 및 기여 (결론 먼저)

예정된 개선 사항에는 F‑Droid 등록, 문서 내용에 대한 선택적 다크 모드 렌더링, 그리고 iOS QuickLook 동반 앱이 포함됩니다. 기여는 GitHub 이슈와 풀 리퀘스트를 통해 환영합니다; 저장소에 별표를 달면 가시성을 높일 수 있습니다.

라이선스 (결론 먼저)

Gander는 MIT 라이선스 하에 배포됩니다. 번들된 모든 JavaScript 라이브러리는 MIT, Apache‑2.0, BSD와 같은 관용적인 라이선스를 사용하며 MIT와 호환됩니다.

Sources