리눅스로 Nexus 기기의 안드로이드 버전 다운그레이드 하기

안드로이드/프레임워크 2015. 1. 22. 19:52

 안드로이드 프레임워크에 대해 공부하게 되면서 안드로이드의 다양한 버전들을 기기에 설치하면서 동작시켜보는 일을 하고 있습니다. 지금 시점에서 가장 최신 버전인 Lollipop까지 실행을 해보면서 말이지요.

 물론 Lollipop를 사용한 프레임워크 작업도 참으로 할 만 하다고 생각합니다만 그래도 아직은 최신버전이다 보니 구글링을 해서 구할 수 있는 정보가 한정되어 있다 보니 바로 이전 버전인 Kitkat을 사용해서 작업을 해보기로 하였습니다. 그런데 여기서 문제가 발생하고 말았습니다.



 보시는 바와 같이 Lollipop에서 하위 버전인 Kitkat을 새로 설치해서 실행해보니 이렇게 로딩 화면만 주구장창 뜨기만 하고 다음 다음 화면으로 넘어갈 생각조차 하고 있지 않는 겁니다. 혹시나 해서 다시 이미지를 씌어서 입력해도 전혀 작동이 되지 않더군요. 이거 휴대폰 하나 날려먹는거 아닌가 하고 걱정했는데 다행히도 방법을 알아낼 수 있었습니다.


그렇다면 이제 안드로이드 버전의 다운그레이드 방법에 대해 살펴보도록 하겠습니다.


1. fastboot를 이용해 자신이 설치하고자 하는 버전의 이전 버전을 휴대폰에 설치합니다.

이 과정은 이전에 작성한 포스팅을 참고해 주시기 바랍니다.


http://elecs.tistory.com/59


위 링크에서 "fastboot flashall" 까지 진행하신 후 돌아오시면 되겠습니다.


2. fastboot 모드에서 Recovery Mode로 진입합니다.



fastboot 모드에 진입하신 후 휴대폰으 음량 버튼을 조작하시면 모드를 선택하실 수 있습니다.

자신이 원하는 모드를 선택하신 후 전원 버튼을 눌러 Recovery mode에 진입합니다.



 처음 진입하시면 다음과 같이 안드로이드가 배째고 있는 모습 위에 느낌표가 써진 붉은 삼각형만 덩그러니 보이실 겁니다. 여기서 당황하지 마시고 바로 음량 Up 버튼을 누르시면



 보시는 바와 같이 설정 메뉴들이 나타납니다.


 


 여기서 볼륨 Down 버튼을 눌러 "wipe data/factory reset"를 선택한 후 전원 버튼을 누릅니다.

 이제 기기가 스스로 공장 초기화에 들어간 후 리셋되는데 다시 다운그레이드된 버전이 정상적으로 동작하는 것을 확인하실 수 있을 겁니다.

300x250

error: neither -p product specified nor ANDROID_PRODUCT_OUT set

안드로이드/프레임워크 2015. 1. 21. 23:44

안드로이드를 빌드한 후 이를 안드로이드 기기에 적용하려 할 때 이러한 오류가 발생하는 경우가 있습니다.


# fastboot flashall
error: neither -p product specified nor ANDROID_PRODUCT_OUT set


이는 아직 root 의 bash 파일에 환경변수를 새로 적용하지 않을 경우 발생합니다. 따라서 root의 bashrc를 수정함으로서 이를 해결합니다.


# vi ~/.bashrc


다음으로 아래 내용을 추가합니다.



export ANDROID_TOOLS=안드로이드 소스코드가 설치된 폴더/out/host/linux-x86
export PATH=$ANDROID_TOOLS/bin:$JAVA_HOME/bin:$PATH
export ANDROID_PRODUCT_OUT=안드로이드 소스코드가 설치된 폴더/out/target/product/컴파일 형식(에뮬의 경우 generic)





안드로이드 컴파일 형식에 관해 알고 싶으신 분은 이전에 작성된 포스팅을 참고해 주시기 바랍니다.

http://elecs.tistory.com/59


위 과정까지 완료하셨다면 새로 수정한 bash를 적용한 후 실행해봅니다.

# source ~/.bashrc

# fastboot flashall


실행시 컴파일된 이미지가 안드로이드 기기에 적용되는 것을 확인하실 수 있습니다.

300x250

make: *** [out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes.jar] error 41

안드로이드/프레임워크 2015. 1. 20. 00:58

안드로이드 코드를 빌드하던 도중 다음과 같은 오류를 맞닥트리는 경우가 있습니다.


Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
2 errors
6 warnings
make: *** [out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes.jar] 오류 41
make: *** 끝나지 않은 작업을 기다리고 있습니다....


이 경우 자신의 컴퓨터 환경이 다음에 해당되는지 확인합니다.


1.자신이 Build 하는 JDK의 버전이 해당 안드로이드 버전에 맞는지 확인합니다.

(GingerBread에서 Kitkat 사이에 해당되는 버전은 JDK 6을, lollipop 이후의 버전은 JDK 7을 사용해야 합니다.)


2. 컴파일 옵션을 사용하였을 경우 컴파일 도중 오작동으로 인해 위와 같은 오류가 발생하는 경우가 있습니다. 이 경우 컴파일 시간이 느려지는 것을 감수하고 옵션 없이 컴파일을 수행합니다.


$ make


만약 다음 과정을 수행해도 같은 오류가 발생시 컴파일을 처음부터 다시 수행해야 합니다.


$ make clean

$ make

300x250