2010년 12월 14일 화요일

"한국인이 좋아하는 명시" version upgrade

광고와 도움말을 추가하여 version 1.1을 release 합니다.

어플을 등록하기 위해서는 준비해야 할 일이 많음을 실감합니다.
Icon에 대한 준비, 마켓에서 광고를 위한 준비, 광고(Admob)의 가입, PayPal에의 가입
등록을 위한 certification 등

certication은 아래 절차를 참조하여 따라하면 됩니다.
디렉토리는 c:\program files\java\jdk.1.6.0_18\bin\에서 수행 합니다.

추후 부족한 부분은 보완해 가겠습니다.

준비해야 할 사항
- 정밀한 Icon : 512*512 pixels
- Screenshots : 2개 이상 (메인 화면 외)
- Promotional Graphic 과 문장 : 광고 그림(180*120)과 문장
- Feature Graphic : 기능 목록(설명) - 1024*500
- 제목
- 설명
- 변경이력
- Application Type
- Category
- Web site
- E-mail
- phone number

2010년 12월 9일 목요일

나의 첫 안드로이드 마켙 등록 어플 (한국인이 좋아하는 명시)

오늘 처음으로 안드로이드 마켙에 어플을 등록 하였습니다.
협업을 하는 박재성씨의 도움을 받아 어플 개발을 시작했고, 경기앱센터에서 교육을 받으면서 같이 작업을 한 정동식학생, 이준형학생의 도움을 받았습니다.
비록 무료어플로 등록을 했지만, 처음에도 무료로 사람들에게 광고를 하는 의미가 있습니다.
같이 했던 사람들에게 감사를 드리며, 앞으로도 좋은 어플을 개발하고 사람들에게 유익한 어플을 제공해서 수익도 같이 얻었으면 좋겠습니다. 그리고 같이 일하는 사람도 얻을 수 있기를 희망해 봅니다.

Android APK signing 과 내보내기

안드로이드 마켙에 어플을 등록하기 위해 인증을 받는 과정을 실었다.

[참고: http://www.androidpub.com/100165]

개인 서명 인증서 만들기

안드로이드 마켓에 배포를 하기 위해서는 애플리케이션에 서명을 해주어야 한다. 자신이 인증하는 애플리케이션임을 서명을 통해서 알리는 것이다.
그러기 위해서는 개인 키를 포함하는 암호화된 서명 파일이 있는 keystore가 필요하고 이를 JDK에서 제공하는 jarsigner 로 공개키로 서명하게 된다.
이클립스에서 Android SDK를 통해서 애플리케이션을 실행할 때마다 자동으로 디버그 서명을 만들고 이 서명이 애플리케이션이 사용될 때마다 서명되기 때문에 눈에 보이지는 않지만 항상 애플리케이션을 서명되고 있다.
  • 디버그 서명 위치: ~/.android/debug.keystore

애플리케이션 서명과 구글API 키 인증 시나리오

keytool로 키 쌍을 생성하면 사용자 홈 디렉토리의 특정한 곳에 keystore로서 저장된다. 비밀 키는 키 저장소에 암호화 되어 보호되며 이 비밀 키로 애플리케이션을 서명하게 된다. - 특정 조직의 경우 공인 인증서 이용 -
구글 API를 이용하려면 API용 키가 필요한데 이 때 인증 서명서의 finger print(MD5)가 필요하다
안드로이드는 공개 키를 이용하여 서명 인증서를 해독하여 사용하는데 애플리케이션이 설치 될 때만 서명 인증서를 검사하기 때문에 설치 후에는 인증서나 키가 만료되도 실행이 가능하다.

개인 인증서의 효용

본인이 개발한 애플리케이션임을 알리고 관리를 위해서는 가능하면 하나의 인증서로 관리하는 것이 편리할 것이다.
  • 업그레이드 간편화
  • 여러 애플리케이션을 하나의 프로세스로 실행
  • 코드, 데이터 공유

서명 인증서 만들기

key store 생성

  1. keytool -genkey -v -keystore myandroid.keystore -alias mykeystore -keyalg RSA -validity 10000
  • 키 쌍을 만들며 myandroid.keystore에 저장 며 이 키는 mykeystore 라는 이름으로 접근이 가능하다. 키를 만드는 알고리즘은 RSA이고 10000일(27년)간 유효하다.

finger print 확인

keytool -list 로 SDK의 인증서의 MD5 지문을 확인 할 수 있다.

  1. keytool -list -alias mykeystore -keystore myandroid.keystore
  2. keystore 암호를 입력하십시오: 


애플리케이션 서명


1_ 먼저 서명이 안된 애플리케이션(.apk)를 만든다: Eclipse에서 프로젝트 선택후 컨텍스트 메뉴(오른쪽 마우스 클릭)에서 Android Tools -> Export Unsigned Application Package..
2_ 개인키 저장소에 있는 키(비밀키)로 서명한다
  1. jarsigner -verbos -keystore mykey.keystore Myandroid.apk mykeyalias

전자책 e-pub viewer인 FBReader를 올렸습니다.

아직 마우스를 연결하지 않아 동작은 할 수 없지만
Open Source인 FBReader e-pub viewer를 올렸습니다.
 
 

내가 만든 AM300 (전자종이 개발 키트) 동작 (2/2)

2번째 파일 입니다.
이제 터치 센서만 동작하면 어느 정도 동작은 검증이 된 것 입니다.
 
 

내가 만든 AM300 (전자종이 개발 키트) 동작 (1/2)

이제 동영상으로 동작을 감상해 볼 수 있습니다.
버튼 몇 개를 추가 했더니, 이제 E-INK사에서 판매하는 AM300 개발용키트의 동작을 그대로 흉내낼 수 있군요.
CPU는 그것보다 더욱 빠르니까 정말 잘 동작하네요.

동영상을 올려 보았는데, 잘 나오는지 모르겠네요. 네이버에는 처음 올려서...
파일이 커서 두개로 잘라 올립니다.

전자종이 디스플레이

제가 만든 작품 입니다. 개발 용역을 의뢰하여 만든 것 입니다.
일부는 제가 디버깅에 참여하고 제가 코딩한 부분도 있습니다.
왼쪽 그림이 6" LGD(E-Ink)의 EPD 이고, 그 오른쪽이 제어를 담당하는 Control과 CPU보드 이고,
그 오른쪽이 디버깅을 위한 Ethernet과 RS-232C console 입니다.
4세트를 제작하여 2세트가 동작하고 한세트는 약간 잔상이 남아서 점검을 하고 있습니다.
CPU 보드는 2개가 정상이고, Control 보드가 2개가 정상이고 2개가 점검을 해야 합니다.

안드로이드 어플 - 차량블랙박스 위치관제 프로그램

CDMA모뎀이 결합되어 위치관제가 가능한차량용 블랙박스를 스마트폰에서
관리하는 어플을 개발 하였습니다. 아래는 차량에서 자신의 위치를 SMS로 보내 준것을
스마트폰 어플에서 지도로 위치 표시한 것 입니다.
지금은 구글 본사를 가리키고 있군요. 안드로이드로 프로그램을 했습니다.

2010년 12월 8일 수요일

USB를 사용한 Ethernet Gadget 설정(Host)

USB를 이용하여 Ehernet 통신을 하는 방법이 있더라구요.
제가 E-Ink사의 AM300 Prototype Kit를 사용하고 있는데,
USB가 2개 있습니다.
한 개는 Host, 다른 한 개는 Client용으로 되어 있는데,
Client용으로 된 것은 Host와 연결하여 console용 터미널로 사용하고
Host용으로 된 것은 Host와 연결하여 Ethernet 통신용으로 사용하려고 설정 중 입니다.
+-----------------------+                                   +-------------------+
| Host                 |   Ethernet 용 USB         | Target          |
| Note-PC           +-----------------------------------+ PXA255       |
| Window XP       |  Serial Terminal용 USB  | Linux 2.6.20 |
| VMware           +-----------------------------------+                    |
| Fedora Core 11 |                                    |                     |
+----------------------+                                   +--------------------+

- Target 설정
  + Ehernet Gadget에 대한 package를 설정하고 설치
    * kernel의 설정 값 (.config 파일)
      CONFIG_USB_ARCH_HAS_HCD=y
      CONFIG_USB_GADGET=m
      CONFIG_USB_GADGET_SELECTED=y
      CONFIG_USB_GADGET_GUMSTIX=m
      CONFIG_USB_GADGET_PXA2XX=y
      CONFIG_USB_PXA2XX=m
      CONFIG_USB_ETH=m
      CONFIG_USB_ETH_RNDIS=y

  + Booting 시 메시지 확인
    pxa2xx_udc: version 4-May 2005
    usb0: Ethernet Gadget, version: May Day 2005
    usb0: using pxa2xx_udc, OUT ep2out-bulk IN ep1in-bulk STATUS ep6in-bulk
    usb0: MAC 1e:d9:0e:42:a3:a0
    usb0: HOST MAC 1e:d9:0e:42:a3:a1
    usb0: RNDIS ready
    NET: Registered protocol family 17
    usb0: full speed config #2: 100 mA, Ethernet Gadget, using RNDIS

  + #ifconfig로 IP 주소 설정
    # ifconfig usb0 192.168.2.100

- Host 설정
  + RNDIS/Ethernet Gadget Device Driver가 설치 되어야 함.
  + 인터넷에서 "linux.inf" 파일을 찾는다.
  + linux.inf에 있는 파일들이 Host 컴퓨터에 있는지 확인하고 없으면 인터넷에서 찾아서 구한다.
  + Device driver를 추가해 준다. -> 네트워크 환경에서 USB Ethernet Gadget용 local이 하나 더 생
    긴다.
  + 네트워크 환경에서 IP 설정
    * IP address : 192.168.2.60
    * Default Gateway : 192.168.2.60
  + Linux에서 IP 설정
    * default로 IPv6 address가 설정되므로
    * #ifconfig usb0 192.168.2.60

- 이때 IP route table의 설정이 중요 합니다.
  Ping은 Host와 Target의 IP route table의 설정이 올바르게 설정이 되어 있어야 가능합니다.
  #ifconfig를 하여 각각 IP 할당이 되어 있더라도 IP route table의 설정이 잘못되어 있으면
  Ping이 되지 않습니다.
  직접 연결된 두개의 system 간에도 이런 현상이 발생 합니다.
  물론 Host는 VMware를 사용하여 Ethernet이 별도로 연결되기 때문에 다른 환경이지만요.

* 주의 사항
  + 파일이 일부 부족하면 device driver 추가가 안된다. (예, netevent.dll)

* 참고자료
  + http://docwiki.gumstix.org/Setting_up_USBnet
  + http://embedded.seattle.intel-research.net/wiki/index.php?title=Setting_up_USBnet&redirect=no
  + http://www.linux-usb.org/gadget/