IT 주제, 특히 리눅스를 다룹니다.

Posted
Filed under Android

안드로이드 7.0 업데이트의 시혜를 받는 첫 넥서스 기기는 Nexus 5X 였다. 며칠 전 Google 서버에 Factory image가 올라와서, 심심하던 찰나에 업데이트를 진행했다.

Android 7.0 Nougat 소개 홈페이지

여러가지 새로운 기능이 탑재되었는데, 흥미로운 것만 꼽아보자면...

  • 72개의 새로운 이모지
  • 스플릿 스크린: 2개 앱을 한 화면에 보여주기
  • Vulkan API: 고성능 3D 게임에 특화
  • VR 모드
  • Doze: 주머니 속 폰의 배터리 절약
  • Quick Setting 사용자 정의
  • Data Saver: 백그라이드 앱의 데이터 사용 중지
  • 텍스트 및 아이콘 사이즈 변경
  • 파일 기반 암호화 지원 (현재 알파 버전)

이전부터 Cyagnogenmod 골수 사용자인 내 경우에는 크게 와닿는 기능은 없지만 그래도 업데이트가 나쁘진 않겠지.


현재 구글의 베타 프로그램에 등록해야만 업데이트 할 수 있는 것으로 알고 있으나, 나의 Nexus 5X는 서브폰일 뿐. 팩토리 이미지로 깔끔(?)하게 업데이트하는 것이 좋아서 아래와 같이 진행해 보았다.

이제 업데이트 방법을 간단히 정리해 보겠다. 텍스트 기반이니 적당히 이해하시고 따라오시라.

부트로더가 변경되기 때문에, 부트로더 언락이 필수적이다. 아래 과정을 따라하면, 장치가 완전히 초기화된다. 데이터 삭제되니, 필수적으로 백업을 해두기 바란다.

  1. Factory image 다운로드
  2. Google USB Driver 다운로드
  3. 반디집 등으로 .tgz 파일을 압축 해제
  4. 개발자 옵션 활성화: 설정 > 휴대전화 정보 > 빌드 번호 7회 터치
  5. 개발자 옵션 진입: 설정 > 개발자 옵션
  6. OEM 잠금 해제 활성화
  7. fastboot 모드 진입: 전원 종료 후 Power + Volume down 키 약 2초간 누름
  8. DEVICE STATE - locked 확인
  9. cmd 창을 열어 압축 해제된 폴더로 이동
  10. OEM 잠금 해제 명령 실행: fastboot oem unlock
  11. 폰에서 YES 로 이동(볼륨 업/다운키)하여 선택(파워키)
  12. Factory image update 명령 실행: flash-all.bat

이후 정상적인 부팅 과정을 거쳐 설정을 진행하게 된다.


부트로더 락을 하실 분은 아래 순서를 진행한다. 장치가 완전히 초기화되기 때문에, 설정 진행하기 전 바로 따라하는 것이 좋다.

  1. fastboot 모드 진입: 전원 종료 후 Power + Volume down 키 약 2초간 누름
  2. cmd 창을 열어 압축 해제된 폴더로 이동
  3. OEM 잠금 명령 실행: fastboot oem lock
  4. 폰에서 YES 로 이동(볼륨 업/다운키)하여 선택(파워키)
  5. 재부팅: (상단 START 선택 상태) 파워키 1회 누르기

모든 과정이 완료되었다. 몇장의 스크린샷으로 마무리를 대신한다.

업데이트 후 메인 화면

변경된 Quick Setting

Quick Setting 사용자 설정하기

새로운 알림창

변경된 설정창의 정보

휴대전화 정보

2016/08/28 09:17 2016/08/28 09:17
Posted
Filed under Android

최근 OnePlus 3 를 구입하여 사용중이며, 어제 좀 더 최적화된 OS를 만끽하기 위해 cm13 을 올렸다. 계속 사용해오던 ROM이지만, 한가지 눈에 띄는 변화가 있었다. 블루투스 이어셋 아이콘 옆에 왠 세로줄이 하나 있었다. 감(?)을 잡고 정보를 찾아봤다. (참고 링크 이동)

안정화 브랜치 cm-13.0-ZNH5Y 를 토대로 스냅샷이 릴리즈 되었다. 드디어 안드로이드에도 블루투스 장치의 배터리 미터가 추가된 것이다.

중요 변경점은 다음과 같다.

  • Wi-Fi Tethering – automatically turn off hotspot after X minutes of inactivity
  • Profiles – add notification light controls
  • Do Not Disturb/Priority Mode – add notification light controls
  • Privacy Guard/App data usage – Restrict apps to Wi-Fi or Cellular data only or block all internet access, per app
  • Bluetooth Devices battery support – For compatible devices, a new battery icon will appear in the status bar to show the paired devices’ battery level
  • Lockscreen Wallpaper picker makes its return
  • Lockscreen Weather and new Weather plug in support – see weather blog post
  • Lockscreen Blur support (on a per device basis) and the ability to disable the effect
  • Live Lockscreen support
  • New LiveDisplay hardware enhancements and API
  • Snap Camera (per device basis)
  • Gello Browser (per device basis)
  • Lots of translations – shout out to the CM translations team on CrowdIn
  • Cyanogen Apps support (see blog post, x86 is not supported yet)
  • Additional CM SDK APIs
  • Security fixes galore
2016/08/21 10:47 2016/08/21 10:47
Posted
Filed under Android

4월 1일은 만우절이다. 뭐 별 느낌이야 없었으나 엉뚱한 곳에서 황당함을 느낄 줄이야...

매주 토요일마다 넥서스6의 cm-13 nightly 버전 업데이트를 하고 있고, 오늘도 여느 때와 마찬가지였다. 그런데 dalvik cache가 재생성되는 화면이 뭔가 좀 이상했다. cm-13 외계인 마스코트가 나오면서.

부팅하니 시스템에서 표현되는 단어 앞에 MOD가 붙어있다. 어딜 가든 붙어있다. 카톡 표현 하나하나에도.

잠금화면 퀵메뉴 다운로드페이지

관련 정보를 찾아보니, cm 포럼에 사용자들의 불만이 빗발치는 중.

MOD What is this?

  • 하나도 안웃기다.
  • 내 폰은 당신들의 장난감이 아니다.

해결책은, 4월 1일자 롬을 올리지 않으면 된다. 이미 올렸다면(그러니 이 글을 보고 계실듯) 3월 30일자 이전으로 back 하던지, 4월 2일자 nightly 를 기다리자.

2016/04/02 12:51 2016/04/02 12:51
Posted
Filed under Android

간단히 적어 놓고, 나중에 다듬도록 하겠다. 우선 target에 맞는 android ndk의 standalone toolchain 이 가장 간편한 듯 하다. 현재 ndk는 r11b 버전까지 릴리즈 되어 있다. 다운로드 후 아래 가이드의 Advanced method를 참고하자.

http://developer.android.com/ndk/guides/standalone_toolchain.html

난 Android 6.0.1 x86용 Native compiler를 생성하고 싶기 때문에, API level 23을 옵션으로 줘야한다.

$NDK/build/tools/make-standalone-toolchain.sh \ --arch=x86 --platform=android-23 --install-dir=/tmp/my-android-toolchain \ --toolchain=x86-linux-android-4.9

지정된 설치 디렉토리에 standalone toolchain이 복사되었을 것이다. 해당 디렉토리를 편의 상 $NDK 변수로, 그 아래의 sysroot 디렉토리를 편의 상 $SYSROOT 로 지정한다.

export NDK=/tmp/my-android-toolchain export SYSROOT=$NDK/sysroot

Native compiler를 빌드하는 작업은 기본적으로 Cross-compile 이다. 아래 가이드를 참고하면 비교적 쉽게 진행할 수 있다.

http://wiki.osdev.org/GCC_Cross-Compiler

가이드를 따라 gcc 빌드에 필요한 mpc, mpfr, gmp 소스를 받아 gcc 디렉토리에 넣어주어야 한다.

빌드하기 전 아래 변수들도 설정한다. Android 6.0 이상에서는 PIE binary만 실행 가능하기 때문에, 관련 -fPIE, -pie 등의 CFLAGS, CXXFLAGS, LDFLAGS를 설정해야 한다.

export PREFIX=$HOME/android-x86/build_toolchain/out export TARGET=i686-linux-android export PATH=$PREFIX/bin:$NDK/bin:$PATH export CC=i686-linux-android-gcc export CFLAGS="-fPIE" export CXX=i686-linux-android-g++ export CXXFLAGS="$CFLAGS" export LDFLAGS="-pie"

이제 standalone toolchain을 사용하여 빌드를 시작한다.

  1. binutils 빌드하기

mkdir build-binutils cd build-binutils ../binutils-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror make make install

  1. gcc 빌드하기

mkdir build-gcc cd build-gcc ../gcc-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ --without-headers --with-sysroot=$SYSROOT make all-gcc make all-target-libgcc make install-gcc make install-target-libgcc

이제 $PREFIX 디렉토리에 빌드 완료된 파일들을 tar 로 묶어 안드로이드로 옮겨보자. $SYSROOT 디렉토리의 파일들도 함께 묶는다.

결과는???

안드로이드 내에서 Hello World 코드를 작성해서 아래와 같이 빌드해보았다. 간단히 alias 를 잡아준다. (gcc 설치 경로는 /system/gcc 이다) alias cc='/system/gcc/bin/gcc -I/system/gcc/include -fPIE -pie' cc hello.c -o hello

자.. 실행해보면,

Hello World

잘 출력된다.

다만.. 아직 bionic 이 뭔지도 감이 안잡히고. 이렇게 해봤자 관련 라이브러리가 모두 포팅되어있지 않으면 내가 원하는 바는 이룰 수 없을 듯.

2016/03/20 20:06 2016/03/20 20:06

IT 주제, 특히 리눅스를 다룹니다.

IT 주제, 특히 리눅스를 다룹니다.

IT 주제, 특히 리눅스를 다룹니다.

IT 주제, 특히 리눅스를 다룹니다.