[용어] 풀 브라우징(Full Browsing)

Posted in SW개발 // Posted at 2010. 7. 14. 15:43
728x90
글 작성일: 2010/02/04 . 옮긴 날: 2010/07/14

요즘 스마트 폰은 모두 풀 브라우징(Full Browsing)을 지원합니다

풀 브라우징의 정확한 뜻은 무엇일까요?

사전적으로만 봐도, 뭔가 완전하게(Fully) 읽혀내는(Browsing) 능력을 말하는 것 같은데요
실제 그 의미도 사전적 의미와 동일합니다

풀 브라우저는 '풀 인터넷 브라우저' 를 약어로써,
모바일 기기에서도 일반 PC에서와 같이 웹 사이트를 동일하게 이용할 수 있는 서비스를 말합니다

이는 예전 WAP(Wireless Application Protocol) 환경의 왑 브라우징(WAP Browsing)
비교되는데요.

과거 휴대폰으로 접속했던 '매직엔'을 모두 기억하실 겁니다
매직엔은 이동통신 사업자가 구축한 대표적인 무선 인터넷 사이트로 WAP 규격에 맞게 제작되었죠
풀브라우징 이전 시대에는 이렇듯 WAP 규격에 맞춘 제한 된 사이트만 이용가능했습니다

당시 WAP 기반 마크업 언어로는 대표적으로 WML(wireless markup language)이 있었고,  mHtml, Hdml 등이 있었습니다. 저도 한 때 이러한 마크업 언어로 무선 인터넷 서비스를 개발해 본 경험이
있는데요 휴대 단말기의 특성으로 제한된 정보만 표현할 수 있었습니다

반면 풀브라우징은 WAP 규격뿐만 아니라, HTML, CSS, Script 등 일반 PC 기반 웹 기술을 지원하게
되어 PC에서 보던 웹 사이트들을 그 크기 그대로 , 그리고 선명하게 브라우징하는 능력을 갖추게
되었습니다

결론적으로 모바일 기기에서도 일반 웹 사이트를 풀리 브라우징 할 수 있다.. 가 되겠습니다

'SW개발' 카테고리의 다른 글

HTTP/2 (고성능 HTTP)  (0) 2016.12.05
아키텍처의 출발점  (0) 2016.09.05
SW 아키텍처 마인드맵  (0) 2016.09.01
[용어] Wi-Fi  (0) 2010.07.14
[용어] 3G, 4G?  (0) 2010.07.14

[용어] Wi-Fi

Posted in SW개발 // Posted at 2010. 7. 14. 15:42
728x90
글 작성일: 2010/02/02 . 옮긴 날: 2010/07/14

'와이파이'라고 발음하는 Wi-Fi 는 무슨 뜻일까요?

아이폰으로 무선 통신을 할 경우 3G 혹은 Wi-Fi로 하게 됩니다
3G 통신일 경우 화면에 3G, WI-FI 통신일 경우 화면에 부채꼴 모양이 나타납니다
또한 보통 3G는 유료, WI-FI는 무료.. 라고 알고 있습니다

WI-FI를 위키백과에서 찾아보니,
'Wi-Fi(와이파이)는 홈 네트워킹, 휴대전화, 비디오 게임 등에 쓰이는 유명한 무선 기술의 상표 이름이다' 라고 되어 있습니다

뭔 말인지 정확히 와 닿지는 않네요?. 대략 무선 인터넷 기술 명칭이다.. 정도로 파악됩니다
사실 이 내용이 전부 이기도 합니다

WI-FI는 무선 인터넷의 한 방식으로,
1999년 미국 무선 랜 협회인 WECA(2002년 Wi-Fi로 변경) 가 표준으로 정한 IEEE802.11b 방식의 별칭
이라 합니다. 무선 랜을 하이파이 오디오처럼 편리하게 쓸 수 있다 는 뜻에서 '와이파이(Wi-Fi)' 라는
별칭으로 쓰기에 되었습니다

보통 유선 인터넷 회선이 있는 상태에서 무선접속장치(AP) 나 유무선공유기를 통해 유선신호를
무선신호로 변환하며 이를 무선랜카드(아이폰 내장)를 통해 데이터를 송수신 하게 됩니다

즉 기존 유선 인터넷 회선을 사용함으로 추가적인 비용이 들지 않는 것입니다

Wi-Fi의 단점으로는 이동 중 사용이 불가능하며 장치에 의한 전파의 송수신 거리가 짧아 특정 범위
내에서만 사용가능하다는 것입니다. 이러한 단점을 보완한 기술이 바로 와이브로(Wibro)인데,
시속 100km 속도로 이동중에도 사용이 가능하며 전파의 송수신 거리가 굉장히 늘어나 반면 Wi-Fi에
비해 통신속도가 느리다는 단점이 있습니다


Wi-Fi 와 WIPI
Wi-Fi는 '와이파이', WIPI는 '위피' 라 발음합니다
간혹 Wi-Fi를 '위피' 라고 발음하시는 분들이 있는데요

Wi-Fi와 WIPI는 완전 다른 개념입니다
Wi-Fi는 위의 설명처럼 무선 통신의 한 방식을 말하며 WIPI는 대한민국 표준 모바일 플랫폼을 말합니다

즉 통신사간 서로 다른 모바일 플랫폼의 표준화를 위해 프로그래밍 모델과 API에 대한 표준을 제공하는
모바일 개발 플랫폼을 WIPI 라 합니다

'SW개발' 카테고리의 다른 글

HTTP/2 (고성능 HTTP)  (0) 2016.12.05
아키텍처의 출발점  (0) 2016.09.05
SW 아키텍처 마인드맵  (0) 2016.09.01
[용어] 풀 브라우징(Full Browsing)  (0) 2010.07.14
[용어] 3G, 4G?  (0) 2010.07.14

[용어] 3G, 4G?

Posted in SW개발 // Posted at 2010. 7. 14. 15:40
728x90

글 작성일: 2010/02/02 . 옮긴 날: 2010/07/14

애플 아이폰에 보면 무선 통신에 3G 라고 표시되어 있습니다.
그리고 곧 애플에서 4G 아이폰을 출시한다고 하죠

그런데 3G, 4G 과연 무슨 뜻일까요?

3G의 G는 Generation 의 약자이며, 이동통신기술을 위한 국제전기통신연합의 규격을 말합니다
최대 2Mbps 전송속도를 지원하며, 걷을 때 384Kbps, 달리는 자동차 안에서는 128Kbps를
지원한다고 하네요

bps는 1,000씩 증가하는데요,
1Kbps = 1,000bps 이며 1Mbps = 1,000,000bps 가 되니, 2Mbps 는 초당 2백반 비트를 전송할 수
있다는 것입니다 (384Kbps = 초당 384,000비트 전송 가능)

참고로 14.4 ~ 28.8Kbps 정도는 문자열을 주고 받기에 적당하며,
이전에 사용했던 가정용 ISDN은 128Kbps 까지 지원했다고 합니다

이러한 통신속도 지원은 1G, 2G에서는 불가능 했던 동영상을 주고 받을 수 속도라 합니다
참고로 1G(1세대) 아날로그 셀룰러폰은 1984년, 2G(2세대) 디지털 PCS폰은 1996년 부터
시작되었으며 3G(3세대)는 2002년 부터 본격화되었다고 합니다

국내에서 3G를 지원하는 통신사는 KTF의 SHOW, SK의 T가 대표적입니다

그럼 4G는 더욱 향상된 통신 속도를 지원하겠네요?
4G는 최대 1Gbps 전송속도를 지원하며 유선과 무선의 차이를 없앨 새로운 시대를 개척할 수준이라 합니다. 또한 4G는 'IP기반 통신' 기술이라는 특징이 있다고 한네요.

2G와 3G의 경우 음성을 제외한 데이터 통신 일부만 IP를 부여해 서비스를 운용했지만, 4G는 음성을 포함한 모든 서비스를 IP기반으로 진행한다고 합니다

4G에 대해 살펴보니 굉장하네요. 현재 표준 및 인프라 구축이 아직 진행중이라 합니다

아래는 ITU가 제시한 4G 통신의 기본 요건입니다

4G 통신의 기본요건

ITU는 4G 통신 표준을 위해 사용자, 통신사업자, 단말기 제조사들의 의견을 종합해
‘IMT-Advanced’의 기본요건을 제정했다. 자세한 내용은 아래와 같다.

1. 고속 무선환경의 경우 100Mbps, 정지 또는 저속 무선환경의 경우 1Gbps의
    데이터 전송 속도 구현.
2. IP 기반의 다양한 네트워크간의 끊김없는 서비스와 이동성 지원(글로벌 로밍 포함).
3. 무선랜 기술과 달리 항상 네트워크에 접속 가능한 상태 유지.
4. 기존 2G, 3G 시스템과의 연동과 타 4G 기술과의 상호 연동성.
5. 개방형, 표준형 구조 및 인터페이스. 6. 보안과 최소 네트워크 운용 유지 비용.
7. 무선 접속 및 핸드 오프 시의 최소 지연 시간

'SW개발' 카테고리의 다른 글

HTTP/2 (고성능 HTTP)  (0) 2016.12.05
아키텍처의 출발점  (0) 2016.09.05
SW 아키텍처 마인드맵  (0) 2016.09.01
[용어] 풀 브라우징(Full Browsing)  (0) 2010.07.14
[용어] Wi-Fi  (0) 2010.07.14

안드로이드 App 에 브라우저 삽입하기

Posted in 모바일 // Posted at 2010. 7. 14. 15:00
728x90

윈폼 닷넷(Windows Form .NET)  응용프로그램 개발 할 때 폼(Form) 안에 웹브라우저 컨트롤을
삽입하여 윈폼에서 웹 브라우징 프로그램을 만들 수 있었다

안드로이드 역시 프로그램 안에 웹 브라우징을 할 수 있는 일종의 컨트롤이 제공된다
닷넷에서는 컨트롤이라고 표현하지만 안드로이드에서는 위젯이라고 표현한다

바로 WebView 위젯이다

안드로이드 OS의 웹 브라우저는 웹킷(WebKit) 엔진에 기반을 두고 있다
웹 킷은 안드로이드 뿐만 아니라 애플의 사파리 브라우저의 기반이기도 하다

WebView 위젯 역시 안드로이드 라이브러리에서 제공하는 웹킷 기반 브라우저 위젯이다
이 웹뷰를 이용해 안드로이드 앱 안에 브라우저를 내장해서 사이트를 탐색해 보자

다음과 같이 main.xml 파일에 WebView 위젯을 정의한다

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
 
     <WebView android:id="@+id/webkit"
            android:layout_height="fill_parent"
            android:layout_width="fill_parent" /> 
                
</LinearLayout>


그리고 자바소스 파일에서 다음과 같이 WebView 를 통해 특정 사이트를 검색해 본다

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);                       
        setContentView(R.layout.main);
       
        WebView browser;
        browser=(WebView)findViewById(R.id.webkit);                     
        browser.loadUrl("http://mkexdev.net");
        browser.getSettings().setJavaScriptEnabled(true);            
    }


주의할 것은 권한문제이다
웹 뷰를 통해 인터넷 사이트를 탐색하기 위해서는 인터넷 접근 권한이 요구된다
메니페스트파일에 권한 정보를 명시해야 하는데 그렇지 않다면 프로그램 실행 시 다음과 같은
오류를 만나게 될 것이다



다음과 같이 메니페스트파일에 권한을 명시하도록 하자

<uses-permission android:name="android.permission.INTERNET" />

WebView 위젯을 이용하면 LoadUrl을 통한 사이트 랜더링과 goBack, goForward, reload
등의 멤버를 이용해 사이트 탐색의 기본적인 동작을 수행할 수 있다

 

'모바일' 카테고리의 다른 글

뷰 포트(Viewport)  (8) 2010.07.14
모바일 웹, 유효성 검사  (0) 2010.07.14
PhoneGap, 결국은 네이티브 앱인가?  (1) 2010.07.13
PhoneGap 코드구성 살펴보기  (0) 2010.07.13
Hello World 분석하기  (1) 2010.07.13

아놔.. JQTouch, iUI 도 있구먼..

Posted in 모바일/Javascript // Posted at 2010. 7. 13. 18:34
728x90
모바일 웹, 표준 웹 구현 등에 관심을 두면서 이전엔 듣고 흘렸던(?) 기술들과 새로운 기술들이
눈에 마구마구 들어오기 시작한다

폰갭 관련 자료들을 탐색하다 JQTouch, iUI 같은 라이브러리도 알게 되었다
모바일 웹 구현 시 참조하면 유용한 UI 라이브러리라고 한다
JQTouch 는 JQuery 기반의 UI 라이브러리.

음.. 모든 기술을 프로젝트에 다 적용 할 필요는 없지만,
최적의 선택, 적용을 위해서는 모든 기술의 장/단점을 면밀히 파악해야 하기에,
이 역시 연구 대상일 수 밖에 없다

아.. 웹이여.. 표준과 모바일 대세에 힘 입어 춘추전국시대와 같은 라이브러리의 탄생이구나!!

PhoneGap, 결국은 네이티브 앱인가?

Posted in 모바일 // Posted at 2010. 7. 13. 15:56
728x90

음.. 뭔가 개인적인 오해가 있는 듯 하다

폰갭이라는 프레임워크를 접한지 채 이틀이 되지 않은 이 시점, 나의 착각이 하나 있는 듯 하다

처음 폰갭 컨셉을 접했을 때는 순수 웹 환경인 줄 알았다
즉 단순히 폰갭 스크립트 파일을 참조하여 일반적인 웹 페이지를 개발해서 웹 서버에 올려 두면
폰에 내장된 (사파리와 같은) 웹 브라우저를 통해 서비스 되는 방식인 줄 알았다

그런데 프로그램의 구조를 살펴 보니,
안드로이드 네이티브 앱 환경에 포함되어 웹 페이지가 실행되는 구조인 듯 하다
다시말해, 안드로이드 마켓에 앱을 등록하는 네이티브 환경인 것 같다

물론 한번 등록하면 웹 리소스만 변경하면 되기 때문에 업데이트는 웹 환경인 것은 맞는 것 같지만..

결국 폰갭은 웹 리소스를 포함하는 컨테이너 역할을 하는 네이티브 앱 인가 ???

만일 그렇다면 초기 나의 생각과는 다르지만,
결국 각 환경에 맞는 컨테이너만 (아이폰, 안드로이드, 심비안 등) 따로 만들고 내부 웹 리소스는 
HTML, JavaScript, CSS 등을 이용하여 동일하게 개발할 수 있는, 웹의 장치 독립성의 장점은
그대로 일 것이다

'모바일' 카테고리의 다른 글

모바일 웹, 유효성 검사  (0) 2010.07.14
안드로이드 App 에 브라우저 삽입하기  (0) 2010.07.14
PhoneGap 코드구성 살펴보기  (0) 2010.07.13
Hello World 분석하기  (1) 2010.07.13
안드로이드 샘플 훓어보기  (0) 2010.07.13

PhoneGap 코드구성 살펴보기

Posted in 모바일 // Posted at 2010. 7. 13. 15:36
728x90

PhoneGap 개발환경을 구축하고 샘플 프로젝트를 생성하여 시뮬레이터에서 띄워 보았다
또한 이클립스를 이용해 안드로이드 프로젝트로 불러와서 실행해 보았다

자동으로 생성된 샘플 프로젝트이 코드 구조를 대략 살펴 보았다

phonegap.jar 라이브러리
폰갭 프로젝트는 phonegap.jar 라는 압축 형태의 클래스 모음인 라이브러리가 포함된다
안드로이드 프로젝트가 각 버전에 맞는 android.jar 가 필요하듯이 미리 정의된 폰갭 클래스들을
위한 라이브러리가 필요하다



phonegap.jar 에는 com.phonegap 패키지로 묶여 있는 많은 클래스가 정의되어 있다
여기에 폰갭 프로그램 구성을 위한 각종 클래스와 Device 고유 기능을 이용하기 위한
일종의 랩퍼 클래스들이 정의되어 있는 듯 하다

메인 클래스 구성
일반적인 안드로이드 어플리케이션의 경우 메인 클래스는 Activity 로부터 상속받는다
그리고 setContentView 메서드를 통해 View를 Activity 에 바인딩하는 구조이다

하지만 폰갭 어플의 경우 phonegap.jar 에 있는 DroidGap 클래스로부터 상속을 받도록 되어있다
그리고 이 DroidGap 클래스에 정의된 loadUri 메서드를 통해 html과 같은 웹 리소스를 바인딩 하는
구조이다. 다음 코드는 자동으로 생성된 폰갭 프로그램의 메인 클래스 전체 코드이다
라이브러리로 추가된 com.phonegap 패키지를 import 하고 DroidGap를 상속받으며
loadUrl 을 통해 html 파일을 화면에 바인딩하고 있다

package my.phonegap.demo;

import android.app.Activity;
import android.os.Bundle;
import com.phonegap.*;

public class Demo extends DroidGap
{
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
 super.onCreate(savedInstanceState);
 super.loadUrl("file:///android_asset/www/index.html");
 }
}


웹 리소스
폰갭 프로젝트를 만들면 index.html 파일과 css, js 파일 등의 웹 리소스가 자동 생성 되는데,
이 파일들은 프로젝트의 assets 폴더에 위치하게 된다

보통 안드로이드 프로젝트의 경우 assets 폴더의 역할은 컴파일 되지 않는 큰 리소스를 담는 용도이다
프로그램은 코드와 리소스로 구분되는데 리소스는 또 컴파일 되는 경량의 리소스와 원본 그대로 저장하는 큰 리소스로 구분된다

안드로이드 프로젝트이 res 폴더는 경량의 리소스를 위한 폴더이며 assets 는 큰 리소스를 위한 폴더이다. HTML 파일이나 동영상과 같은 큰 데이터를 위한 공간이 assets 인 셈이다

폰갭 프로그램의 사용자 화면에 해당하는 html 파일과 Device 기능 호출을 위한 js 파일 등 웹 리소스가assets 폴더에 위치하고 있다



이후부터는 일반적인 웹 개발을 진행 하듯 웹 리소스들을 추가, 수정 하면 될 듯 하다
물론 폰갭이 제공하는 각종 디바이스 접근 기능을 사용하려면 폰갭 스크립트에 대한 학습이 있어야 할 것 같고...

Hello World 분석하기

Posted in 모바일 // Posted at 2010. 7. 13. 10:47
728x90
글 작성일: 2010/02/12 , 옮긴 날: 2010/07/13

Hello World 프로젝트를 통해 안드로이드 기본 구조에 대해 이해해 보기로 했습니다

Hello World 프로젝트는 모든 프로그램 공부를 시작할 때 제일 처음 접하게 되는 데모로써
기본적인 동작 방식 이해, 실행 코드 이해, 프로그래밍 모델 이해를 목적으로 합니다
따라서 우선 이 프로젝트를 분석하여 안드로이드 어플의 기본 구조에 대해 알아 보기로 했습니다

Hello World 프로젝트에 보면 src -> package명 -> MyActivity.java 파일이 있네요
까 보겠습니다

package my.androiddemo;

import android.app.Activity;
import android.os.Bundle;

public class MyActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}


package는 프로젝트 만들 때 제가 지정한 이름이고...

안드로이드 SDK가 제공해 주는 API를 사용하기 위해 두 개 import 하네요
자세한 건 담에 알아보기로 하구....

다음으로 Activity 란게 있네요. 안드로이드는 기본 단위는 Activity 인가 봅니다
(음.. 문득.. UML 의 액티비티가 떠오르네요 ㅋ)

닷넷환경에서 윈도우 응용프로그램은 폼(Form) , 웹은 페이지(Page) 가 기본 실행단위입니다
즉 Form 클래스 , Page 클래스를 상속받아서 구현하도록 되어 있죠

이와 유사한 구조로, 안드로이드에서는 Activity 라는 클래스를 상속받아야 하는군요

그리고 onCreate 를 부모 Activity 로부터 오버라이딩 하는구요
Activity 가 생성될 때 호출되는 이벤트 메서드 인가 봅니다
부모 클래스의 onCreate 호출해 주고, 안드로이드 화면에 Activity의 컨트롤들이 표시되록 해 주는군요

간단하네요
근데 이 파일에는 UI 와 관련된 내용이 없네요
Hello World 라는 문자가 어딘가에 있어야 하는데 말이죠...

역시 생산성과 유지보수설을 좋게 하기 위해 UI 파일과 로직파일을 분리하고 있군요
프로젝트에서 res -> layout -> main.xml 파일이 있네요
이 넘이 UI 구성을 위한 파일이네요
(실버라이트 응용프로그램과 굉장히 유사한 구조이네요. 실버라이트의 경우 UI코드는 xaml 파일에,
 로직은 .xaml.cs 파일에 있죠)

- UI 정의파일    : res->layout->xxx.xml
- 로직 정의파일 :  src -> package명 -> xxx.java


main.xml 파일을 열어 보면, 아래처럼 UI 구성을 할 수 있는 창이 뜹니다
왼쪽에는 각종 컨트롤들이 있고 오른쪽에는 작업하는 화면이군요



그리고 이클립스 오른쪽 Outline에 보니 이 Activity에는 총 두개의 컨트롤이 올라가 있는 것을 보여줍니다
LinearLayout 와 TextView 컨트롤.
즉 화면의 배치를 위한 레이아웃 컨트롤과 Hello World 문자를 위한 TextView 군요


이 main.xml 코드를 보면 아래와 같습니다
LinearLayout 컨트롤이 TextView 컨트롤을 포함하고 있네요.

LinearLayout 의 속성에는 수직분할(vertical)을 하고 크기와 높이가 화면 전체를 꽉 차지하도록(fill_parent)
설정했네요.

그리고 TextView 의 속성에는 넓이는 역시 부모 컨트롤 크기에 차도록(fill_parent) 하고 높이는 이 컨트롤의 내용에 맞도록 구성하고(wrap_content) 있네요

그리고 표시될 텍스트(text)는 Hello World 라는 예약 문자인가 봅니다(@string/hello) .. 친절하군요.
이런문자까지 예약해 두다니...

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />
</LinearLayout>

안드로이드 샘플 훓어보기

Posted in 모바일 // Posted at 2010. 7. 13. 10:46
728x90

글 작성일: 2010/02/10 , 옮긴 날: 2010/07/13

안드로이드 SDK를 설치하면 샘플 프로젝트가 같이 설치되는데요

아래 위치에 샘플이 있습니다
안드로이드 SDK 설치폴더 -> platforms -> 각 버전별 폴더(ex: android-2.1) -> samples

android2.1의 샘플은 총 16개 있네요
이 샘플 프로젝트 중 하나를 이클립스에 불러와 보겠습니다
이클립스의 상단 메뉴에서  File -> New -> Project 선택한 후, Android Project 타입을 선택합니다
그리고 Next를 하면 아래 창이 나오는데요

이미 만들어진 샘플 프로젝트를 불러오는 것이니까, Create project from existing source
선택합니다. 그리고 Location 에 샘플 프로젝트 중 하나를 지정해 주는데요, 저는 ApiDemos 라는 샘플을 지정했습니다. 그러면 나머지는 자동으로 입력되구요.. Next->Finish 하면 완료됩니다



프로젝트가 정상적으로 생성되었으면, 이클립스 좌측에 프로젝트 파일 리스트가 나옵니다


자.. 이제.. 샘플을 실행해 볼께요
에뮬레이터에 아래 그림과 같이 나오는데요, ApiDemos 샘플 프로젝트는 안드로이드 개발을 돕기 위해 학습용으로 만들어 진듯 하네요. 각 메뉴를 들어가보면 안드로이드에서 사용되는 각종 개체 및 컨트롤들의 샘플이 나타납니다. 좋네요.. 이 샘플을 기반으로 공부 좀 해야 것습니다



'모바일' 카테고리의 다른 글

PhoneGap 코드구성 살펴보기  (0) 2010.07.13
Hello World 분석하기  (1) 2010.07.13
첫 번째 안드로이드 데모 만들기  (0) 2010.07.13
안드로이드 소프트웨어 스택  (0) 2010.07.13
안드로이드의 특징  (0) 2010.07.13

첫 번째 안드로이드 데모 만들기

Posted in 모바일 // Posted at 2010. 7. 13. 10:45
728x90
글 작성일: 2010/02/09 , 옮긴 날: 2010/07/13

Hello World 프로그램이 완성되는 과정을 간단히 정리 합니다
모든 프로그램의 시작은 Hello World 이죠 ㅎㅎ

이클립스 실행합니다
상단 메뉴에서 File->New->Project 를 순서대로 실행하면 아래 그림처럼 New Project 를 위한 창이
뜹니다. Android Project 선택하고 Next 합니다




그러면 아래 그림처럼 안드로이드 프로젝트를 설정하는 창이 뜹니다
아래와 같이 입력 했는데요, 기존에 이클립스를 통해 자바개발 경험이 있는 경우 아래 내용들이
익숙할 것입니다. Application Name 은 안드로이드에 표현될 이 응용프로그램 이름이 됩니다

그리고 중요한 것은 Build Target인데요. 
이 프로그램이 안드로이드 SDK의 어느 버전으로 빌드 할지 선택해 주는 것입니다
전 현재 최신 버전인 2.1 선택했습니다

그리고 Activity 란게 있네요. 안드로이드 프로그램이 이 Activity 단위로 이루어 지나봐요
Class하고 유사하다고 일단 보고 있습니다. 저는...
그리고 Next->Finish 합니다




프로젝트 생성이 완료되었으면 이클립스의 좌측에 아래와 같이 프로젝트 파일들이 나타납니다


여기까지 프로젝트 생성이 완료되었습니다
이제 실행환경을 설정해야 하는데요

이클립스 상단 메뉴에서 Run->Run Configurations 선택합니다
왼쪽 리스트에서 Android Application 에서 마우스 우클릭 -> New 해서 새로운 빌드 환경을 만듭니다
오른쪽 설정화면에서 Project 를 선택하고 Launch를 선택해 줍니다



그리고 Target 탭으로 가서 AVD를 선택해 줍니다


설정이 완료되었으므로 Apply 하고 Run 합니다

실행을 하면 안드로이드 에뮬레이트가 뜨고 우리가 작성한 Hello World 가 화면에 나타납니다


이후 부터는 이 설정을 이용해서 계속 실행하면 됩니다

'모바일' 카테고리의 다른 글

Hello World 분석하기  (1) 2010.07.13
안드로이드 샘플 훓어보기  (0) 2010.07.13
안드로이드 소프트웨어 스택  (0) 2010.07.13
안드로이드의 특징  (0) 2010.07.13
안드로이드(Android)?  (0) 2010.07.13

안드로이드 소프트웨어 스택

Posted in 모바일 // Posted at 2010. 7. 13. 10:43
728x90
글 작성일: 2010/01/21 , 옮긴 날: 2010/07/13

안드로이드 OS의 내부 계층 구조를 안드로이드 소프트웨어 스택이라 합니다
개발을 함에 있어 그 기반이 되는 플랫폼의 내부 아키텍처를 잘 알고 있어야 하겠죠

닷넷과 자바등 모든 개발 플랫폼들은 그들만의 내부 아키텍처를 가지고 있습니다
이에 대한 이해가 개발을 첫 걸음이라 하겠네요

아래는 구글 doc에서 그대로 가져온 내용입니다
원문: http://docs.google.com/Doc?docid=0AfEORS6TAXtKZGQ5ZnN6MjhfMjNmOWo3cjZoYw&hl=ko&pli=1
-----------------------------------------------------------------------------------------

What is Android?
Android는 OS, 미들웨어, 중요 어플리케이션을 포함하는 모바일 플랫폼. Android 상에서 작동하는 어플리케이션을 위한 툴과 API를 Android SDK가 제공하고 JAVA 언어를 사용함
 
Android Architecture (software stack)
 

특징
  • Application framework: 소프트웨어 컴포넌트의 재사용과 재배치를 가능하게 함
  • Dalvik virtual machine: 모바일 장치에 최적화된 자바 가상 머신. 구글에서 Sun과의 지적재산권
    문제를 피하기 위해 개발
  • Integrated browser: WebKit 엔진 기반의 브라우저 제공
  • Optimized graphics: SGL기반의 2D, OpenGL ES 1.0기반의 3D 그래픽 라이브러리
  • SQLite: 모바일 장치를 위한 데이터 저장 장치
  • Media support: 오디오, 비디오, 이미지 포맷 지원
  • GSM Telephony (hardware dependent)
  • Bluetooth, EDGE, 3G, and WiFi (hardware dependent)
  • Camera, GPS, compass, and accelerometer (hardware dependent)
  • Rich development environment: 장치 에뮬레이터, 디버깅 툴, 메모리, 성능 프로파일링,
    이클립스 플러그인 제공
 
Applications
Android는 email 클라이언트, SMS program, calendar, maps, browser, contacts 등의 핵심
어플리케이션을 포함하고 있다.
 
Application Framwork
  • 컴포넌트의 재사용을 간단하게 하기 위한 역할. 어플리케이션이 자신의 기능을 공개하면 다른
    어플리케이션에서 해당 기능을 사용할 수 있게 함
  • Content Providers: 다른 어플리케이션의 데이터에 접근할 수 있는 방법을 제공
  • Resource Manager: 스트링, 그래픽, layout 파일등 코드가 아닌 파일에 접근할 수 있게 함
  • Notification Manager: 어플리케이션이 사용자에게 경고를 할 수 있게 함
  • Activity Manager: 어플리케이션의 lifecycle을 관리하고 어플리케이션의 네이게이션을 backstack을 관리
 
Libraries
  • C/C++ 기반의 라이브러리를 포함하고 있고, 이는 application framework를 통해 제공
  • System C library: 리눅스 기반의 임베디드 장치에 특화된 표준 C 라이브러리
  • Media Libraries: PacketVideo's OpenCORE기반의 비디오, 오디오, 이미지 라이브러리
  • Surface Manager: 디스플레이 접근 관리 라이브러리
  • LibWebCore: 웹 브라우저 엔진
  • SGL: 2D 그래픽 엔진
  • 3D libraries: OpenGL ES 1.0 API기반의 라이브러리, 3D 하드웨어 가속또는 최적화된 3D
    소프트웨어 래스터라이저를 사용
  • FreeType: 비트맵과 벡터 폰트 렌더링 엔진
  • SQLite: 가볍고 강력한 관계형 데이터베이스 엔진
 
Android Runtime
Android는 Java 언어의 핵심 라이브러리를 포함하고 있음
모든 어플리케이션은 각각의 프로세스를 가지고 Dalvik 가상 머신에서 동작
Dalvik 가상 머신은 리눅스 커널에 의존함
 
Linux Kernel
Linux 2.6 버젼을 기반으로 보안, 메모리 관리, 프로세스 관리, 네트워크 스택과 드라이버를 제공
또한 커널은 하드웨어와 나머지 소프트웨어 스택 사이의 추상화된 레이어의 역할을 함
 
Reference

안드로이드의 특징

Posted in 모바일 // Posted at 2010. 7. 13. 10:40
728x90

글 작성일: 2010/01/21 , 옮긴 날: 2010/07/13

어제 구입한 책 프로페셔널 안드로이드 애플리케이션 개발 을 저녁에 집에서 한 챕처 훓어 봤습니다
안드로이드 소개와 비전 그리고 개발 프레임워크, 특징 등을 개괄적으로 기술하고 있더군요

물론 안드로이드가 주제인 책인만큼, 좋은 글.. 상당히 많죠
살짝 홍보성 느낌이 있을지언정, 아주 매력적입니다

많은 내용 중 안드로이드의 특징에 대해 요약해 봅니다
일단 안드로이드 폰에 탑재되는 기본 기능에 대한 차별성은 역시 구글 자체 컨텐츠와의 긴밀한
통합입니다. 예를 들어 G메일 호환, 구글 캘린더, 연락처 등의 개인 온라인 서비스, 구글 검색등을
들 수 있습니다

개발환경의 특징으로 보면,
자바 기반 개발 환경을 지원하며 기존 자바가상머신(JVM)이 아닌 모바일 전용 자바가상머신인 Dalvik
위에서 된다고 하네요. 물론 자바통합개발환경인 이클립스와의 연동도 가능하구요

참고로 전 닷넷 개발자인데요, 자바개발자들이 부럽군요. 익숙한 개발 환경으로 인한 진입장벽이 저 보다는 낮을테니깐요. 그러나 뭐 자바면 어떻습니까? 개발이야 다 비슷하죠

마지막으로 책에 기술된 내용중, 안드로이드에만 있는 것이 소개되어 있군요

- 구글 맵 어플리케이션
구글 맵은 유명하죠. 우리가 만드는 어플리케이션에서 사용할 수 있도록 컨트롤 형태로 제공된다고 합니다. 구글 맵을 응용한 다양한 컨텐츠를 개발할 수 있겠네요

- 백그라운드 서비스
폰에서 다른 기능을 이용하고 있는 중에도 이벤트를 발생시켜 백그라운드에서 돌아가는 어플리케이션을 만들 수 있습니다

- 공유 데이터와 프로세스 간 통신
안드로이드에 기본 탑재되는 네이티브 어플리케이션의 데이터를 공유할 수 있고 그 기능을 이용할 수 있다고 하네요

- 네이티브 플랫폼에 대한 접근 허용
안드로이드는 네이티브 어플리케이션과 서드파티 어플리케이션을 차별하지 않는다고 합니다
이는 폰에 기본 제공되는 기능을 서드파티 대체물로 전부 교체할 수 있도록 허용한다고 하네요
장치가 가진 룩앤필을 바꾸는 전례없는 능력이 제공됩니다

- P2P 메시징
폰 대 폰, 어플 대 어플간 P2P 메시징을 지원하다고 합니다


이러한 특징들을 조합하면 다앙한 컨텐츠가 개발될 수 있겠네요
책에도 언급되어 있는 것 처럼, 친한 친구가 몇 m내에 있으면 알림을 한다던가 근처 주요 장소를 알려
준다던가..

생각만 해도 재미있네요...

안드로이드(Android)?

Posted in 모바일 // Posted at 2010. 7. 13. 10:37
728x90
글 작성일: 2010/01/20 , 옮긴 날: 2010/07/13

안드로이드: 인간의 모습을 한 로봇

안드로이드는, '인간을 닮은 것' 이라는 그리스 말에서 유래된 SF용어로서 인간의 모습을 한 로봇을
뜻한다고 합니다.

그리고 또 하나의 의미가 더 생겼죠. 바로 구글이 만든 모바일용 운영체제(OS)의 이름이기도 하죠

그런데, 구글은 왜 이름을 안드로이드라고 했을까요?

보통 제품의 이름은 그 제품 자체를 추상화하고 이념화하여 짓게 마련인데요
그래서 제품 이름의 뜻을 알면 제품의 특징은 물론이고 추구하는 이상도 엿 볼수 있는 경우가 많죠

SF적인 느낌이 물씬 풍기는 미래지향적 이름이 필요했던걸까요?
간혹 그리스 신화에 나오는 신들의 이름이 채택되는 경우는 몇 번 봤는데, 그러한 산물의 일종으로
보이기도 하네요. 스마트 폰, 말 그대로 로봇처럼 지능적인 모바일 환경의 총칭.. 뭐 그건거겠죠?

  구글 안드로이드의 아이콘 입니다. 확실히 원 뜻인 로봇을 직설적으로(?) 상징하네요

아이폰의 깨물다 만 사과 아이콘 보다는 조금 장난스런 느낌이지만 귀엽네요 ^^;

안드로이드라는 이름이 결정된 구체적인 구글의 과정이 궁금하네요. 관련해서 자료를 좀 찾아봐야
겠네요. 뭐... 이유야 어떻게 되었건 .. 안드로이드.. 괜찮네요 ㅎㅎ

제일 처음 이 이름을 접했을 때, 안드로메다가 먼저 생각난 저는 뭐일까요???

추가>> 2009.01.21 오전 10:30
이름 유래에 대한 다음 기사를 우연히 봤네요

역시 예상대로,
"인간의 두뇌에 버금가는 안드로이드의 똑똑한 업무처리와 빠른 속도를 강조하기 위한 작명인 셈" 이라고 하네요

PhoneGap 개발 환경 구축 (안드로이드 기반)

Posted in 모바일 // Posted at 2010. 7. 12. 18:21
728x90

PhoneGap 이라는 것이 도대체 어떤 식으로 구성되고 어떤 식으로 개발되는지 알아보기 위해 환경 구추을 해보기로 했다

오늘 환경 구축을 하고 샘플 프로젝트도 돌려 봤지만.... 음.. 여전히 낯설다
일단 PhoneGap 개발 환경을 셋팅하는 것을 정리 해 본다

1. 안드로이드 개발 환경 구축
PhoneGap 는 각 모바일 플랫폼 별로 개발환경이 셋팅되는 듯 하다
음.. 이건 좀 의외다. 단순히 기본 웹 개발 환경에서 적당히 갖다 붙이기만 하면 될 줄 알았는데,
각 개발환경과 유기적으로 결합된 느낌이다. 물론 설치 후에는 웹 개발 하듯 하면 되는 것 같다

안드로이드 기반 PhoneGap 를 설치하기 위해서 먼저 안드로이드 개발환경이 구축되어 있어야 한다
다음 글을 참고해서 안드로이드 개발 환경을 구축한다

http://mobilepp.tistory.com/18

2. Apach ANT 설치
이것은 뭣에 쓰는 물건인고? 음.. 필요 하다고 하니, 일단 설치 해 보자
다음 사이트로 이동해서 압축파일을 다운 받아서 압축해제 한다

http://ant.apache.org/bindownload.cgi




3. Ruby 설치
이건 또 뭣에 쓰는 물건인고.. 음.. 아파치 안트에 이어 루비까지.. 도대체 폰갭은 어떤 환경이길래,
이름만 들어 본 이것들을 요구하는가? 역시 필요하다고 하니 설치 해 보자
다음 사이트에서 다운받아서 설치 파일을 실행해서 설치를 완료한다

http://www.ruby-lang.org/en/downloads/




4. 안드로이드용 폰갭 설치
다음 사이트에서 압축파일을 다운로드 하여 압추 해제 한다
http://github.com/phonegap/phonegap-android

5. 윈도우 환경 변수 등록
앞 두 과정에서 설치한 Apach ANT 와 Ruby 의 환경변수를 등록한다
시스템 환경변수 Path 에 다음 두 경로를 추가하자

- Apche ANT 의 bin 폴더 등록
D:\MobileWeb\PhoneGap\apache-ant-1.8.1-bin\apache-ant-1.8.1\bin;

- Ruby 의 bin 폴더 등록
D:\MobileWeb\PhoneGap\Ruby191\bin;

- 그리고 안드로이드 개발 환경에서 설치했던 Android SDK 의 tools 폴더도 path로 등록한다
D:\Android\android-sdk-windows\tools

마지막으로 JAVA_HOME 환경변수를 새로 추가 해야 한다
만일 이 변수가 추가되어 있지 않다면 폰갭 프로젝트 빌드 시 아래와 같은 오류를 만나게 된다


이것 때문에 한참을 해맸다. 폰갭에서 JAVA_HOME 이라는 환경변수를 참조해서 JDK의 위치를
참조하나 보다. 어쨋던 아래와 같이 JAVA_HOME 라는 변수 명으로 JDK 위치를 등록해 주자



이제 기본적인 설치는 완료 되었다

다음으로 폰갭 프로젝트를 하나 생성해 보도록 하자
안드로이드용 폰갭 프로젝트를 만들고 빌드 하려면 명령프롬프트를 사용해야 하나보다

명령프롬프트를 띄워서 4 과정에서 설치한 안드로이드 용 폰갭 압축 해제한 폴더로 이동하여 다음
명령을 수행하자

CMD>Ruby droidgap <android_sdk_path> <name> <package_name> <www> <path>

<android_sdk_path>: Android SDK 폴더 위치
<name>: 프로젝트 명
<package_name> : 패키지 명
<www> : 웹 파일(html, js, css) 등이 위치할 폴더 지정
<path> : 이 프로젝트가 생성될 위치 지정

현재 나의 환경에서는 다음과 같은 CMD 명령을 수행했다
그리고 Complete! 라는 결과가 나왔다

즉 아래와 같이 명령을 수행했다

Ruby droidgap "D:\\\Android\\\android-sdk-windows" "Demo" "my.phonegap.demo" .\example ..\PhoneGapDemo1


프로젝트가 하나 생성되었으니 에뮬레이터로 확인해 보도록 하자
다음 사이트에서 에뮬레이터를 다운 받고 설치 한다

http://www.phonegap.com/tools




에뮬레이트를 실행하여 앞서 만든 프로젝트를 로드 해 보자
우측의 새 문서 아이콘으로 index.html 파일을 로드하면 아래와 같이 시뮬화면이 나타난다
이것 저것 손 대 보니 꽤 흥미로운 시뮬레이터이다. 아이폰, 안드로이드 등 스킨을 선택할 수 있고
폰 세로,가로 기울이기 등 동작에 반응하도록 시뮬해 볼 수 있다
자세한 건 하나씩 알아 가면서 다음에 정리하기로 하자




그리고 마지막으로 이클립스를 통해 앞서 생성한 프로젝트를 불러와서 실행 해 보자
이클립스에서 새 프로젝트를 만드는데, 앞서 생성한 프로젝트가 있으니
다음 그림과 같이 이미 존재하는 프로젝트로 해당 경로를 선택해 준다

그리고 이상하게, BuildTarget이 Goolge APIs 로 잡혀버려서 강제로 Android 2.2로 변경했다



다음으로 프로젝트를 빌드 하기 전에 phonegap.jar가 라이브러리로 추가 되었는지 확인한다
아래 그림과 같이 프로젝트의 properties 로 가서 phonegap.jar 체크박스를 체크한다.
만일 없으면 Libraries 탭으로 이동해서 새로 추가해야 한다.



그리고 프로젝트를 실행(Run) 해 보자. 안드로이드 에뮬이 아래와 같이 실행된다



음.. 일단 여기까지... 설치 완료!
설치 하면서 꽤 삽질했다 --;

html 파일은 그렇다 치고.
안드로이드 Activity  에 어떻게 Add In 되나 소스를 보니 다음 한줄에 핵심인듯..

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.loadUrl("file:///android_asset/www/index.html");
}

일반적인 안드로이드 구성은 setContentView 를 통해 View 객체를 바인딩 하는 것에 반해
폰갭은 html 파일을 load 하는 구조이구나!!

일단은 여기까지 정리하고 시간을 내어 하나하나 자세히 살펴 봐야 겠다
어떤 식으로 구성되어 있는지 그리고 어떻게 개발을 덧 붙여 나가는 지 등등 볼게 많구낭...

'모바일' 카테고리의 다른 글

안드로이드의 특징  (0) 2010.07.13
안드로이드(Android)?  (0) 2010.07.13
Android 개발환경 구축  (2) 2010.07.12
모바일 웹, 장치(Device)의 기능을 불러다 쓰다  (0) 2010.07.08
구글, 안드로이드 개발 공부  (0) 2010.07.05

Android 개발환경 구축

Posted in 모바일 // Posted at 2010. 7. 12. 17:59
728x90
안드로이드 개발 환경 셋팅.
올 해, 2월에 안드로이드 공부를 시작하면서 정리한 글이다. 당시 최신 버전은 2.1 이었지만,
현재는 2.2 이다. 2.1 최신 버전을 설치하더라도 설치 과정은 동일하다

아래 글을 참고하자
------------------------------------------------------------------------------------------

이제 본격적으로 안드로이드 개발 세상으로 뛰어 들기 위해 개발 환경을 설정 합니다

안드로이드 SDK는 아래, 안드로이드 개발자 웹사이트에서 다운로드 제공하는 군요
>> 안드로이드 SDK 다운로드
안드로이드 SDK 윈도우, 맥, 리눅스를 모두 지원한댑니다
압축파일로 제공이 되는데 원하는 폴더에 압축을 푸는 것으로 설치가 완료되구요

그리고 안드로이드는 개발은 자바기반입니다. 자바 개발 킷인 JDK도 설치해야 하네요
>> JDK 다운로드
저는 JDK 6 버전을 설치했습니다

마지막으로 안드로이드 개발을 편하게 하기 위해 통합개발툴인 이클립스를 다운바다 설치 합니다
>> 이클립스 다운로드
Eclipse IDE for java Developers 버전을 다운받고, 안드로이드 SDK처럼 압축을 해제하는 것으로 설치가 완료되구요

이제 이클립스를 통해 안드로이드 개발이 가능하도록 ADT(Adnriod Developement Tools)라는
이클립스 플러그인을 설치합니다.
이클립스가 설치된 폴더의 eclipse.exe를 처음 실행하면 다음 그림과 같이 workspace를 설정하라고 나오네요
안드로이드 개발을 위한 workspace를 원하는 제가 지정한 폴더로 선택했습니다



이클립스가 실행되면, 상단 메뉴에서 Help -> Install New Software 메뉴로 들어가서 Add 버튼을 클릭하고
아래 그림과 같이 적당한 이름을 주고 url을 입력합니다
https://dl-ssl.google.com/android/eclipse/


OK버턴을 클릭하면 다음과 같은 창이 뜨는데 Developer Tools 를 체크한 후 Next 하다가 약관 동의하고
Finish 합니다. 그러면 ADT 설치가 진행됩니다





설치 과정 중에 Security Warning 가 나오면 그냥 OK 하시고 설치가 완료되면 이클립스를 재 시작합니다

이제 이클립스를 위한 안드로이드 개발 플러그인인 ADT를 설치 완료 하였습니다

다음으로 이클립스에 안드로이드 SDK 위치를 지정해 줘야 하는데요..
이클립스의 상단 메뉴에서 Windows -> Preference를 실행하면 다음과 같은 창이 나오는데
이전에 설치한 안드로이드 SDK 위치를 지정해 줍니다



다음으로 안드로이드 버전별 SDK와 에뮬레이트를 다운 받습니다
이클립스 상단 메뉴에 Window -> Android SDK and AVD Manager 를 실행 한후,
Available Packages 메뉴에서 설치를 원하는 API 버전을 선택합니다. 전 모두 선택했습니다


그리고 우측 하단의 Install Selected 버튼을 클릭하고 Accept All 하고 설치를 시작합니다



자.. 이제 마지막 하나, 에뮬레이터 AVD를 설정하고 설치를 완료합니다
역시 이클립스 상단 메뉴 Window -> Android SDK and AVD Manager 를 실행한 후 왼쪽의 Virtual Devices를 선택한 후 New 버턴을 클릭합니다. 아래와 그림과 같이 새로운 AVD를 생성합니다




이제 드디어 설치가 완료 되었네요~
아.. 지루한 작업이었습니다 ㅎㅎ;

그럼. Hello World 를  찍어 보도록 해야 겠네요 ~~