PC 에 설치되어 작동하는 안드로이드

오늘 소개해드릴 내용은 '내 PC 에 직접 안드로이드 OS 를 설치하여, 안드로이드폰 없이 안드로

이드를 
즐기는 방법' 입니다.


가능하냐구요???

이것이 오픈 소스의 위력입니다.

직접 체험해 보세요. 아래 몇 가지만 따라하시면, PC 로 안드로이드 앱을 다운받고, 스카이프로 전화도 

하고, 여러가지를 즐길 수 있답니다. 노트북이나 넷북에 깔아서 사용하시면 더더욱 좋으실듯.


그럼 시작 합니다.

준비물 : 512 MB 이상의 플래쉬 메모리


1. 아래 두 사이트를 방문하여, 설치 파일을 다운로드 받습니다.

http://www.android-x86.org/download


http://unetbootin.sourceforge.net/



2. 다운받은 파일 중 먼저 'UNetbootin' 를 실행 합니다.


플래쉬 메모리를 꽂은 다음, 'UNetbootin' 을 실행 시키고, 'Diskimage' 를 클릭하여 주시고, 

앞서 다운받은 'android-x86-1.6-r2.iso' 파일을 
지정합니다.

밑의 Type 란은 'USB Drive' 를 지정해 주시고, USB 의 드라이브를 설정한 다음 'OK' 버튼을 

누릅니다.


* 물론 USB 드라이브가 아닌, CD or DVD 를 사용하셔도 됩니다. *

3. 자동으로 부팅 디스크를 만듭니다.



완료가 되었으면, 'Reboot Now' 버튼을 눌러서 컴퓨터를 재부팅 합니다.

4. PC를 재부팅할 때 앞서만든 USB 드라이브나, CD or DVD 를 이용하여 부팅을 합니다. 


바이오스에 들어가서, 부팅을 USB 나 CD-ROM 드라이브를 우선 선택 하여 줍니다.


Live CD - Run Android-x86 without installation 을 선택하여 줍니다.


5.  자신의 PC 에 'Android' 글자가 보이며, Android OS 로 부팅이 됩니다.



6. PC 에 안드로이드 OS 가 보이시면, 성공!!



7. 이제 뭘 하면 되나구요?

안드로이드 OS 를 마음껏 즐기시면 됩니다.

안드로이드용 앱도 마음껏 다운로드 해보시고, 앱 사용도 하면서, 즐겨보세요.

노트북을 Wireless 연결하시고, 마이크와 헤드폰이 있으면, 스카이프를 통해 전화도 가능 

하답니다.





* 주의점 *

자신의 노트북이나 PC 가 'AMD' 계열 CPU 면 에러가 상당히 자주 발생하거나, 설치가 되지 

않을수도 있습니다. 그리고, 개발자가 많은 컴퓨터를 테스트 해보았지만, 그래도 몇 가지 기종

에서는 정상작동 하지 않을 수 도 있다고하니, 참고하세요.


http://www.android-x86.org/#Tested_platforms

출처


WRITTEN BY
정현석
이것저것 끄적끄적....

,

1. SDK 빌드 후 Windows용 Binary 적용

2. 우분투에 ARM Compile 및 Lib 설치

3. Android 소스 다운로드 받기 
curl 설치 및 repo 설치

4. java 설치 및 compile 하기

5. ADT Update

6. Andorid 개발 환경 구축(고포릿 노트)

7. 안드로이드 내장 APKs 개발방법 

8. Android Full source compile error일때
(API 수정 후에 해야 하는 작업들)

9. 전체 소스에서 일부만 다시 빌드하는 - mmm command



WRITTEN BY
정현석
이것저것 끄적끄적....

,
사용하고 싶은가? ㅋㅋㅋㅋ

젝일... 이 생각은 왜 못했는지...

Full Build를 하고 sdk build를 하게 되면 AVD를 만들 수 있는 SDK가 생겨난다. 이때!! 기존의 사용하고 있는 SDK의 Path를 새로 생성한 SDK의 Path로 변경해야만!! 아무 이상없이 사용 할 수 있다. 경로변경은 아래와 같이 안내해주는 대로 하면 된다.

1) Eclipse의 Window -> Preferences 선택
2) Android 선택
3) SDK Location 변경


WRITTEN BY
정현석
이것저것 끄적끄적....

,
ㅠㅠ 정말 울고 싶었다... 장작 몇시간을 삽질했는지 모르겠다.... 정동우 대리는 알고 있었다.. 이 방법을....

Android Full source는 다 받아놓고 make 명령만으로도 Build가 가능하다.
Full Build를 하게 되면 out/host/linux-x86/sdk/android-sdk_eng.username_linux-x86/paltforms/android-2.1-update1/ 에 SDK 압축파일이 생성된다.

실제 Android SDK를 설치해주고 AVD에 그곳의 Path를 연결해 주는데 이때 platforms에 
Install했던 Platform Version들이 있을 것이다. 이것들 대신 내가 생성한 android.jar를 사용하기 위해서는 link를 걸어주어야 한다.

ln -s 링크할경로 링크할이름

이렇게 링크를 해주어야 한다. 링크를 해주지 않으면 빌드가 되지 않는다... 젝일... ㅠㅠ 진짜 울고싶다...


WRITTEN BY
정현석
이것저것 끄적끄적....

,
아.. 오늘 정말 개 삽질의 최고봉이였다... Java API를 조금 수정해서 테스트만 해보면 되는 건데 그걸 가지고 13시간을 수정하고 빌드하고 수정하고 빌드하고 왜 안되나 삽질하고 있었다...

java api를 추가하거나 수정한 경우 그냥 make를 하게 되면  아래와 같은 Error Message가 나오게 된다.

You have tried to change the API from what has been previously approved.

To make these errors go away, you have two choices:
   1) You can add "@hide" javadoc comments to the methods, etc. listed in the
      errors above.

   2) You can update current.xml by executing the following commands:

         p4 edit config/api/current.xml
         make update-api

      To check in the revised current.xml, you will need OWNERS approval.

이럴때는 아래와 같이 한다.
$make update-api 
$make

WRITTEN BY
정현석
이것저것 끄적끄적....

,
google Android kernel MS-Windows에서 다운로드 받기

google Android는 현재 MAC OS X 또는 Ubuntu Linux 에서만 컴파일이 가능합니다만, 소스 코드만을 보기위해서면 MS-Windows에서 다운로드하는 것이 좋겠죠. 
문제는 sourceforge.net의 일반적인 프로젝트와는 달리 압축된 파일로 다운로드를 제공하는 것이 아니므로, 별도의 프로그램이 필요합니다. 
일반적인 소스코드관리도구인 CVS나 SVN이 아닌, GIT를 사용하고 있습니다. 
구글에서 한참 찾았는데 의외로 쉬운 곳에 있었습니다. 원래는 첫 화면에 보여주었는데 blog검색에 있어서리 처음에는 찾지 못했습니다.

Android 프로젝트 위치
http://android.git.kernel.org/

GIT 프로그램 위치 
http://code.google.com/p/msysgit/

블로그 위치 
http://bradchow.wordpress.com/2009/01/20/get-android-source-code-in-m-windows/ 

자동으로 download하는 bash shell script 를 소개하고 있습니다.  


WRITTEN BY
정현석
이것저것 끄적끄적....

,
아... 젠장... 정말 케 삽질 했다....

포인터가 없으니 자꾸 C++문법이랑 해깔린다...

뭐냐고? ㅋㅋ 기가차서 어이가 없다. 아래처럼 선언하고서는 사용하고 있었다...

private Map<String, String> m_stMap;

public void setPreferenceForKey(String a_strValue, String a_strKey)
{
m_stMap.put(a_strKey, a_strValue);
}

계속해서 NullPointerException이 일어났고.. 난 문자열이 인자값으로 제대로 들어왔다고 한참 외치고 있었다.... 이게 뭐냐고?? 그래.. 난 저 m_stMap이 그냥 선언했기 때문에 생성되었다고 생각했던 거다.... char* pTest;  pTest->put(A,B); 이렇게 사용한거와 마찬가지인거지...

C++을 계속하다보니 Java를 홀랑 다 까먹는....

그래서 Map을 상속받아 만들어진 HashMap을 사용했다. 사용방법은 거의 동일하다
단, 생성자에서 HashMap에 대한 Instance를 생성해주었다. 

private HashMap<String, String> m_stHashMap;

public wafWidgetControl(){
m_stHashMap = new HashMap<String, String>();
}

public void setPreferenceForKey(String a_strValue, String a_strKey)
{
m_stHashMap.put(a_strKey, a_strValue);
}

이런 실수가 비일비재 할거다.... Java를 너무 오랫동안 안했으니...


WRITTEN BY
정현석
이것저것 끄적끄적....

,
이클립스를 이용하여 Project를 생성 할 때 입력해주어야 하는 것중에

Create Activity 가 있었다... ㅡㅡㅋ 난 이게 뭔가 하고 항상 생각했었는데

이런... 기초적인걸... 알고보니 초기 생성되는 Class 이름이었다...

그러므로 당연히 파일명이 되는것이다... Activity를 상속받는 Class의 이름... 

난 이걸 왜 몰랐을까....

WRITTEN BY
정현석
이것저것 끄적끄적....

,
안드로이드에서의 서비스란?
1) 일정한 간격으로 어떤 유용한 일을 배경에서 수행하는 배경 프로세스
2) 원격 객체에 대한 인터페이스(응용프로그램 안에서 사용 가능)

Service class를 확장하여 사용 함.

서비스 클래스는 onCreate()메서드와 onStart() Method, onDestroy() Method 등의 Method들을 재정의한다. 그리고 AndroidManifest.xml에서 다른 응용프로그램이 서비스를 시작하거나 배경에서 실행 중인 서비스를 중지하는 데 사용할 서비스 이름을 정의한다.

서비스의 수명주기
어떤 응용프로그램이 Context.StartService() 메서드를 호출하면 System은 Service의 onCreate()를 호출하고 onStart()를 호출한다. 
Context.StartService() -> onCreate() -> onStart()

그러나 Service가 Context.bindService() 메서드를 통해서 어떤 프로세스에 묶여 실행되는 경우에는 시스템이 onCreate()를 호출한 후에 onBind() 메서드를 호출한다. 이 경우에는 onStart()가 호출되지 않음을 기억해야 한다.
Context.bindService() -> onCreate() -> onBind()

서비스의 작업이 끝나면(서비스가 중단되었으면 어떠한 프로세스에도 묶이지 않았으면) 시스템은 onDestroy() 메서드를 호출한다. 서비스는 이 메서드에서 자신이 사용하던 모든 자원을 해제해야 한다.

------------------------------------------------------------------------------------
기타.
AIDL(Android Interface Definition Language)을 통한 원격 인터페이스 정의 방법 및 AIDL을 통해서 정의한 Interface로 객체들을 넘겨주는데 필요한 Parcelable Interface 구현


WRITTEN BY
정현석
이것저것 끄적끄적....

,

이클립스로 작업을 하다가 보면 assets의 라는 폴더가 보인다 해당 폴더에는 파일들을 넣을 수 가 있는데 apk를 설치해 보면 실제 asset의 위치는 보이지 않는다.

그럼 도대체 asset의 위치는 어디일까???
asset에 넣은 파일들은 어떻게 사용해야 하는 걸까?

라는 궁금증이 있다.

예를들어 index.html 을 asset폴더에 넣은채로 apk를 만들어 배포를 한다고 했을때
WebView.loadurl( )에서 사용하는 방법은 아래와 같다.

testView.LoadUrl("file://android_asset/index.html"); 

android_asset 이란 것이 매크로가 아닐까 의심이 된다.
아직 정확히는 모르겠지만 ㅋㅋㅋ



WRITTEN BY
정현석
이것저것 끄적끄적....

,