Redex

F8이 한참이라 facebook 프로젝트가 올라왔습니다. 작년 react-native를 발표할 때의 분위기와는 한층 다른 거 같지만 재미있는 오픈 소스 프로젝트가 github 의 수위권을 차지했습니다.

2014/04/14 Editor’s choice

facebook/redex
_redex - A bytecode optimizer for Android apps_github.com

바로 redex - 안드로이드 bytecode 최적화 도구입니다.

설치

설치 전 의존성 있는 모듈들을 먼저 설치 합니다.

Mac 기준으로는

brew install autoconf automake libtool python3  
brew install boost double-conversion gflags glog libevent

repository를 직접 다운 받은 후에

submodule 이 존재하네요

git submodule update --init

autoreconf -ivf && ./configure && make && make install

실행

redex path/to/your.apk -o path/to/output.apk

어떻게 가능해 졌을까?

관련해서 잘 설명되어져 있는 블로그를 소개합니다.

Optimizing Android bytecode with ReDex
_As more and more people around the world start logging on to Facebook, we have an increasingly large responsibility to…_code.facebook.com

간단하게만 설명드리면

안드로이드는 Java 아키텍쳐를 가져가기 때문에 다음 그림의 bytecode를 먼저 생성하게 됩니다.

하지만 .class 파일을 그대로 쓰는게 아니라 dex 파일을 거쳐 apk파일로 변경하게 됩니다.

dex는 dalvik 에서 이해하는 executable format 입니다. 말하자면 Java class 파일들을 dalvik의 실행환경으로 변환 및 압축한 뒤에 안드로이드용 패키지 파일로 묶어주는 일을 일반적인 안드로이드 컴파일 환경이 실행해 주고 있었다. 라고 이해 하시면 됩니다.

여기서 dex파일을 최적화 하는 일을 하는 프로그램을 오픈소스로 풀었다는 것입니다.

https://code.facebook.com/posts/1480969635539475/optimizing-android-bytecode-with-redex

transform 세가지는 다음과 같습니다.

  1. Minification and compression
  2. Inlining
  3. Dead code elimination

https://code.facebook.com/posts/1480969635539475/optimizing-android-bytecode-with-redex

https://code.facebook.com/posts/1480969635539475/optimizing-android-bytecode-with-redex

https://code.facebook.com/posts/1480969635539475/optimizing-android-bytecode-with-redex

모든 좋은 코드를 위한 노력은 대강 비슷한데 줄이고, 줄이고 또 줄이고 네요.

현장에서 개발을 할때 1번의 경우는 소스코드 난독화 툴들을 사용하니까 그다지 쓸모 있을까 싶은데, 2번 3번은 매우 유용할 거 같다는 생각이 듭니다.

반대로 apk파일 사이즈에 직접 영향을 주는 건 1번일 확률이 높으니까 잘 만들어진 코드들에서는 크게 의미가 없을 수도 있다는 생각도 드는군요.

By Keen Dev on April 13, 2016.

Exported from Medium on May 31, 2017.

DevopsWiki

https://en.wikipedia.org/wiki/DevOps

A wiki of Guides, Scripts, Tutorials related to devops

devops에 관련된 가이드와 스크립트 및 튜토리얼을 모아둔 프로젝트입니다.

데브옵스, 디밥스 뭐 어쨌든… 재미 있는 것은 시작을 vim으로 하고 있네요.

Vim

Tmux

Git

의 순서로 시작이 됩니다.

C, Javascript는 들어갔는데 Java가 빠진 것은 의외로군요.

Docker 는 당연히 들어갈 거라고 생각했는데 13번 부터는 이전 Sysadmin역할이 devops 의 중요 영역이 되었습니다. 국내 실정과는 약간 다른게 아닌가 생각을 해 봅니다.

22번 Devops Interview Questions에 눈이 가는 것은 왜일까요?

한번 살펴 볼까요?

>What is Continuous Integration?

CI는 무엇입니까? 요즘은 CD로 바꿔도 될거 같은데, 질문이 꽤나 철학적이네요. 참고하시면 좋을 듯 합니다.

By Keen Dev on April 13, 2016.

Exported from Medium on May 31, 2017.