태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

 

 

 

 
분류 전체.. (1308)
마이크로소.. (132)
민수네 가족 (17)
호랭이 사.. (141)
열이아빠의.. (7)
PlayPhone (98)
NetworkON (1)
ratharn의.. (10)
큐브 해법 (10)
사람들 (6)
개발 이야기 (94)
아이티 이.. (539)
영어 이야기 (2)
좋은책 이.. (8)
대기중인.. (1)
발명 이야기 (2)
건강하게.. (15)
마소  블로그  마이크로소프트  삼성전자  마이크로소프트웨어  구글  아이폰  LG전자  호랭이  개발자 
 free offers
└>free offers
 online pharma..
└>online pharma..
 Go here
└>Go here
 visit my webp..
└>visit my webp..
 Go Source
└>Go Source
«   2021/10   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
+ ITViewpoint
+ 도이모이
+ with okgosu
+ 학주니닷컴
+ 열이아빠의 R⋯
+ Gsong.s Blog
+ 비주얼스튜디⋯
+ 광파리의 글⋯
+ LovedWeb
+ 블루오션의⋯
+ 울지 않는 벌새
+ PC 지존
+ 디지털통
+ 아크비스타
+ 고독한 프로⋯
+ Total : 2,100,931
+ Today : 1
+ Yesterday : 6
  

 

 

 

Google _해당되는 글 30건
2010.05.13   구글의 단점은 '엔지니어들의 문화' 
2010.01.22   C++로 만든 코드 안드로이드로 마이그레이션 하기 
2010.01.16   실망인걸~ 구글폰 넥서스원 발매 첫주 판매량 2만대! (8)
2009.12.21   구글에서 온 크리스마스 메시지... 
2009.11.16   대박 상품과 함께하는 '구글 2009 대한민국 검색대회' 
2009.10.09   이건 뭐??? 한글의 재발견... (1)
2009.09.23   Windows Embedded 시스템의 몰락! (1)
2009.09.21   대단한 한국 엔지니어들 
2009.08.25   빅빔, 아이팟 인증 무선이어폰 ‘오페라 S5’ 출시 
2009.08.21   애드센스 이제 한화로 받는다!!! (4)

 

구글의 단점은 '엔지니어들의 문화'
+   [마이크로소프트웨어]   |  2010. 5. 13. 17:01  


이미선 기자 init@imaso.co.kr, init.egloos.com


"구글의 단점은 엔지니어 문화이다"


<구글드>의 저자이자 <뉴요커> 미디어 컬럼니스트인 켄 올레타는 12일 개최된 '서울 디지털 포럼 2010'에서 엔지니어들의 문화는 구글의 장점이자 단점이라고 지적했다.



켄 올레타


엔지니어들은 효율적이고 측정할 수 있는 것을 좋아하기 때문에 측정할 수 없는 것들에 대해서는 이해할 수 없다. 구글의 저작권 문제나 개인 정보 활용 등이 그 대표적인 예이기도 하다.


이에 따라 여러 국가에서 저작권 문제로 곤혹을 치르면서 비로소 교훈을 얻었다는 설명이다.


최근 이슈가 되고 있는 '쿠키' 문제 역시 같은 맥락이다.


엔지니어들의 입장에서는 더 많은 정보가 더 좋은 검색을 가능하게 하기 때문에 쿠키 등을 활용해 정보를 얻는다.


하지만 유저들의 입장에서는 자신의 정보를 구글에서 어떻게 활용할지 알 수 없으므로 불만을 갖을 수 밖에 없다.


이처럼 엔지니어들은 유저들을 이해하지 못하는데, 이것이 바로 구글의 단점이다.


켄 올레타는 "아무리 똑똑한 엔지니어라고 하더라도 유저들의 입장을 이해하고 고려할 수는 없다"며 "따라서 구글의 장점인 엔지니어 문화는 구글의 취약점이기도 하다"고 강조했다.


기사 제공| 마소인터넷(www.imaso.co.kr)





     Google, 개발자, 구글, 구글드, 뉴요커, 단점, 디지털포럼, 블로그, 안드로이드, 켄 올레타
     0   

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

C++로 만든 코드 안드로이드로 마이그레이션 하기
+   [마이크로소프트웨어]   |  2010. 1. 22. 09:12  


요즘 소프트웨어 개발하는 사람치고 아이폰이나 안드로이드 개발과 전혀 무관할 수 있는 분이 드물텐데요. 그런데 갑좌~기 회사에서 떨어진 프로젝트가 기존에 만들어서 사용중인 C++ 코드를 안드로이드로 마이그레이션 하는 일이라면? 아 이거 참 만만찮게 난감한 일일텐데요. 월간 마이크로소프트웨어의 필자 이상욱 님이 이런 난감한 상황에 대처할 수 있는 방법을 재미있게 설명한 글이 있어 옮겨봅니다. 아직 정식으로 인사 드리진 못했는데 조만간 한번 꼭 뵙고 싶어지는 분이네요. 좋은 글 주신 상욱 님께 감사드립니다. 그리고 이 글이 많은 개발자분들께 도움이 되길 바라겠습니다.

출처| 아이마소

안드로이드 네이티브 라이브러리Ⅰ

이번 컬럼에서는 기존에 C/C++ 로 개발한 코드가 안드로이드 플랫폼에서 어떻게 동작하는지 안드로이드 플랫폼 구조를 통해 알아보고, Java 응용프로그램과 연동하기 위한 다양한 방법을 소개한다. 또 C/C++ 코드를 안드로이드 플랫폼에서 동작하는 바이너리로 빌드할 수 있는 툴체인 안드로이드 NDK에 대해 알아보고 간단한 사용법에 대해 알아보도록 하겠다.

이상욱 bumwoogi@gmail.com|새로운 기술을 배우는 것을 좋아하고 다방면에 관심이 많은 오지랍쟁이 개발자. 얼마전까지 무인잠수함을 만드는 것을 계획하였으나 도중하차 하였고, 지금은 전 인류에 공헌할 대단한 소프트웨어를 만드는 것을 꿈꾸고 있다.

이번 컬럼은 가상의 시나리오를 통해 실제 프로젝트 진행 중에 벌어질 수 있는 문제상황을 제시하고 동시에 이 문제를 해결해나가는 과정을 알아보도록 하겠다.


등장인물

  • 허우대 대리 : 몇달전 경력사원 공채로 새로 입사한 인물로 Java를 사용해봤다는 이유만으로 난생 처음으로 안드로이드 플랫폼에 기존에 C++로 작성한 소스를 마이그레이션 하는 업무를 맞는다. 허우대는 멀쩡 하지만 성과가 없다고 일정만 차장으로 부터 허우대라는 별명을 얻었다.
  • 신익한 선배 : 허우대 대리의 학교 선배로 모바일 분야에서 안해본게 없는 대단한 실력자 이지만, 일을 너무 사랑하는 나머지 인간관계는 별로 소질이 없어 보이는 시니컬한 성격의 소유자, 허우대 대리의 질문에 매번 퉁명스럽게 대답 하지만 그 속마음에는 후배를 스스로 깨우치게 하려는 나름의 철학을 가지고 있다.
  • 일정만 차장 : 이번 프로젝트의 책임자로, 일에 대한 책임감이 투철하지만 상냥한 성격은 아니다. 특히 일정을 어기는 사람을 무척 싫어한다.

허우대 대리는 얼마전 일정만 차장으로 부터 1주일간의 시간동안 이전 누군가가 C++ 로 작성한 방대한 양의 xml 문서 parser를 이번 프로젝트에 재사용 할 수 있도록 안드로이드 플랫폼에 마이그레이션 하라는 지시를 받았다. 허우대 대리에게 주어진 시간은 고작 7일. 7일 동안 허우대 대리가 어떻게 이 프로젝트를 진행하는지 함께 지켜보도록 하자.

선배, 안드로이드 애플리케이션 개발은 Java로 하는거지?

생전 처음 안드로이드 플랫폼에서 개발을 시작하는 허우대 대리는 신익한 선배를 찾아가서 조언을 구하게 되었다.

“선배, 차장님께 안드로이드 플랫폼에 기존에 c++로 작성한 엄청난 양의 parser 소스를 마이그레이션 하라는 지시를 받았는데, 나 이거 다 java로 다시 만들어야 하는건가?”

선배는 한심하다는 반응으로 특유의 시니컬한 한숨을 내쉬며 이렇게 얘기한다.

“안드로이드= java의 공식은 아니야. 안드로이드 플랫폼이 어떻게 구성돼있는지 먼저 확인해 보는게 어때?”


안드로이드 플랫폼은 크게 리눅스 커널과, C/C++로 작성한 라이브러리(보통 네이티브 라이브러리라 부른다), 안드로이드 응용프로그램의 뼈대를 제공하는 애플리케이션 프레임워크와 기본 애플리케이션으로 구성돼 있다.

리눅스 커널은 OS의 기본 기능인 태스크간의 스케줄링과 메모리, 디스크, 네트워크 등의 자원을 사용할 수 있도록 시스템 콜을 제공한다. 이는 리눅스 커널 윗부분에 초록색으로 표시된 네이티브 라이브러리를 통해 응용프로그램이 편하게 사용 할 수 있는 형태로 제공된다.

안드로이드 응용프로그램은 애플리케이션 프레임워크(응용프로그램의 구조를 제공하고 제작에 도움을 주는 Java class로 구성)을 이용하고 역시 Java언어로 작성한다.

이 Java파일을 안드로이드 SDK를 이용해 빌드하면 내부적으로 Java컴파일러와 dex converter를 거쳐 Dalvik VM(안드로이드 응용프로그램을 동작시키는 VM으로 일반적인 Java VM과는 다르다.) 위에서 동작하는 byte 코드로 변환하게 된다.

결론적으로 안드로이드 응용프로그램(Java로 작성)은 애플리케이션 프레임워크(.jar형태의 Java class.)를 이용해 VM에서 제공하는 코어 라이브러리(core library) 기능을 사용하게 되고, 이 코어 라이브러리는 리눅스 커널 위에서 동작하는 다양한 C/C++ 라이브러리(c/c++)를 호출하게 된다. 이 라이브러리는 필요에 따라 리눅스 커널의 system call을 호출하게 된다. 위 그림에서 화살표 방향을 따라 가면서 확인하자.

위 그림에서 안드로이드 런타임 계층과 라이브러리 계층을 연결하는 왼쪽 화살표로 표현된 부분에서 일반적인 함수호출 관계 외에 추가적으로 C/C++ ↔ java 호출 사이의 ‘glue’가 존재한다. 결국 이 덕분에 안드로이드 프레임워크는 자연스럽게 OS의 복잡한 기능을 리눅스 커널로부터 빌려 쓸 수 있는 것이다.

허우대 대리는 결국 C/C++ ↔ Java사이의 ‘glue’를 만들면 기존 소스를 리눅스 상에 포팅 하는 정도의 노력으로 재사용 할 수 있겠다는 결론을 내리고, 곧바로 Java ↔ C/C++ 를 호출 할 수 있는 방법을 찾아보기 시작했다.

Java ↔ C/C++ 사이의 glue는 어떤것을 사용할까?

일반적으로 Java에서 C/C++ 모듈을 사용하기 위해서는 다음과 같은 방법을 사용한다.

1. Java Native Access (JNA) 

자바 코드에서 네이티브 코드와 같은 형태로 네이티브 함수를 호출하는 방식으로 기존 코드의 최소한의 수정으로 응용이 가능해, 최상의 방법으로 생각되나 현재 안드로이드 Dalvik VM에서 지원하지 않는 방법이다.

2. Java Native Interface (JNI)
Java 초창기부터 존재한 Java/Native interface 방법으로 안드로이드 Dalvik VM에서 지원하는 방법으로 실제 안드로이드 플랫폼 소스 여러 부분에서 사용되고 있다. 그러나 이 방식은 raw form을 다루는 형태로 개발해야 하기 때문에 개발 시간이 많이 소요되고 에러를 발생 시킬만한 요소가 많다.

3. Simplified Wrapper and Interface Generator (SWIG)
JNI를 좀 더 쉽게 사용 할수 있도록 해주는 도구로 C/C++ 인터페이스를 정의한 파일을 입력 받아 C/C++ JNI wrapper 코드를 생성한다. 이 방법 역시 Dalvik VM과는 호환성 문제가 존재한다.


Native library(C/C++) 로 개발할 것 인지에 대한 선택 기준

안드로이드에서는 J2SE의 대부분의 기능과, 애플리케이션 프레임워크를 통해 다양한 API 셋을 제공하고, Java를 사용하여 대부분의 응용프로그램을 제작 하는데 부족함이 없도록 배려하고 있다.

신규 개발시 애플리케이션 프레임워크를 통해 제공받을 수 없는 일부 기능(대부분 외부 기기 나 디바이스 종속적인) 부분과 성능이 아주 중요한 일부 기능을 제외하고는 Java를 사용하여 개발하는 것이 프로젝트 장기적인 관점에서는 나은 판단이라 생각된다.

C/C++로 코드로 개발은 유지보수와 디버깅 측면에서 번거롭고 불편한 부분이 있으며 JNI를 이용하여 Java 쪽으로 glue를 만드는 일이 예상하는 것만큼 간단한 일은 아니기 때문이다. 여기서 제시하는 가상의 시나리오 역시 주제를 이끌어 가기 위해 단순화시킨 예일 뿐이지 실제로 기존에 C/C++로 작성한 코드를 마이그레이션 하는 작업이 주어질 경우 얼마나 인터페이스가 단순한지, 기존코드에서 플랫폼 종속적인 부분이 얼마나 있으며 이것을 안드로이드(Linux kernel)에 포팅하기 위해서 얼마나 노력이 필요한지, 혹은 HTTP나 STL등 안드로이드 Native library단에서 충분히 제공하지 않는 기능을 사용한 부분이 있어서 재작업이나 추가 포팅 작업이 필요한지 충분히 고려하여 기존 모듈을 재활용할 것인지, Java코드로 다시 작업할 것인지 결정해야 할 것 이다.


허우대 대리는 Dalvik VM과의 호환성 문제와 보편적으로 사용하는 기술이라는 점을 감안해 JNI를 이용해 프로젝트를 진행하기로 했다.

점심시간에 허우대 대리는 자신이 JNI를 이용하여 기존 parser소스를 거의 재활용 할수있는 방법을 생각해 냈다고 신익한 선배에게 자랑을 늘어놓았다. 이때, 밥을 먹던 신익한 선배는 이런 이야기를 남긴 뒤, 아무일도 없었다는 듯 식사를 계속 했다. 신익한 선배가 남긴 말은 이렇다.

“그럼 안드로이드 시스템에 포함해서 빌드 하겠다는 얘기야? 배포는 어떻게 할건데?”

그렇다. 그림에서 보는 C/C++ 라이브러리는 안드로이드 시스템의 영역으로 허우대 대리는 배포방법에 대해 고려하지 못한 것이다. 안드로이드 에뮬레이터를 실행하고 <화면 1>에서 초록색으로 표시한 C/C++ 라이브러리 파일의 실제 위치를 확인해보자. 아래와 같이 커맨드 창에서 emulator를 실행하거나 이클립스 IDE를 통해 emulator를 실행한다.

에뮬레이터가 정상적으로 실행되면 위와 같이 에뮬레이터 화면을 확인할 수 있는데, 이때 콘솔에서는 <리스트 1>과 같이 adb 명령을 이용하여 shell을 실행한다.

     <리스트 1> adb shell을 이용하여 네이티브 라이브러리 확인하기
    ----------------------------------------------------------------------------------------------------------
    >adb shell
    adb shell 이 실행되면 아래와 같이 library path를 확인해보자
    #echo $LD_LIBRARY_PATH
    #/system/lib
    system/lib가 library path로 잡혀있는 것을 확인하고 /system/lib directory로 이동한다.
    #cd /system/lib
    ----------------------------------------------------------------------------------------------------------

<리스트 1>의 내용을 <화면 3>를 통해 확인해보자.

<화면 3>에서는 안드로이드 플랫폼에서 제공하는 네이티브 라이브러리가 위치하는 것을 확인할 수 있다.

허우대 대리가 준비하는 프로젝트의 결과물은 다운로드 가능한 형태로 배포되어야 하는데 /system 디렉토리는 다운로드한 애플리케이션이 설치할 수 있는 영역이 아니기 때문에 /system 디렉토리 대신 /data 디렉토리에서 동작 할 수 있는 방법을 찾아야 한다.

안드로이드 시스템 이미지
안드로이드 시스템 이미지는 리눅스 운영체제에서 파일시스템은 단순히 자료의 저장기능 뿐 아니라 운영체제 동작에 필요한 필수 정보를 포함하고 장치 관리 등의 특별한 용도로도 사용하므로 선택항목이 아니라 필수 항목이다. 시스템 이미지는 안드로이드 프레임워크를 구동하기 위해 필수적인 항목으로 <안드로이드 SDK설치 디렉토리>/platforms/<플랫폼버전>/images/system. img 에서 확인 할 수 있다.

이 이미지파일은 실제 에뮬레이터가 구동될 때 /system directory에 마운트하게 되는데, 이내용은 adb shell을 실행시킨 후 최상위 디렉토리의 init.rc파일에서 확인 할 수 있다.

/system 디렉토리는 임베디드하여 탑재할 기본 응용프로그램을 포함해 안드로이드 프레임워크에 필요한 라이브러리 설정파일 등이 들어있는 영역으로 추가로 다운로드받은 응용프로그램과는 구별된다. 다운로드 받은 응용프로그램은 /data 디렉토리에 위치하게 된다.

안드로이드 SDK 설치
앞서 설명된 부분들을 실습하기 위해서는 안드로이드 SDK를 설치하고 버추얼 디바이스를 생성해야 하는데, 이 부분은 이번 컬럼의 주제와는 벗어나므로 아래 URL을 참고해 설치하기 바란다.

http://developer.android.com/sdk/index.html

허우대 대리, NDK와 만나다

다음날 배포문제로 고민하던 허우대 대리는 아래의 안드로이드 개발자 웹사이트를 통해 NDK에 대한 내용을 접했다.
 
http://developer.android.com/sdk/ndk/1.6_r1/index.html

NDK는 C/C++로 작성한 코드로 리눅스 OS 기반의 ARM binary를 생성하기 위한 크로스 툴체인을 제공한다. 여기서 ‘크로스 툴체인’이란 타깃머신과는 다른 환경에서 타깃 머신용으로 바이너리를 생성할 수 있도록 제공되는 툴인데 컴파일러 링커 그리고 기타 컴파일에 필요한 유틸리티를 포함하고 있다.

   <리스트 2> Application.mk 파일 

   --------------------------------------------------------------
   APP_PROJECT_PATH := $(call my-dir)/project
   APP_MODULES      := hello-jni
   --------------------------------------------------------------

일반적인 x86호환 CPU의 윈도우나 리눅스 PC기반 환경에서 ARM이나 MIPS등 임베디드 머신의 CPU에서 동작하는 바이너리를 컴파일 할 수 있도록 해준다.

그리고 아래와 같은 라이브러리를 사용할 수 있도록 header file을 제공하는데, 이 내용은 앞서 제시된 adb 쉘에서 확인한 /system/lib 디렉토리에 있는 라이브러리의 일부임을 확인할 수 있다.

  • libc(C library)
  • libm(math library)
  • JNI interface
  • libz (zip 압축 library)
  • liblog(Android logging library)
  • OpenGL ES library (3D graphic library, NDK 1.6버전부터)
추가적으로 안드로이드 응용프로그램 패키지 파일(.apk)에 native library를 포함할 수 있는 방법을 제공한다. 허우대 대리가 찾던 바로 그 방법이다. 그럼 이제 허우대 대리와 함께 NDK를 설치해 보도록 하자.
 
(1) http://developer.android.com/sdk/ndk/1.6_r1/index.html 에서 윈도우용 패키지를 다운로드 받는다.
(2) 적당한 위치에 (1)에서 다운로드 받은 압축파일을 푼다.
(3) www.cygwin.com에서 최신 cygwin 을 설치한다.
(4) 설치한 Cygwin bash shell을 실행하고 bash shell에서 /cygdrive/<NDK 설치 경로> 로 이동해 ‘Build/host-setup.sh’ 라고 명령을 수행한다.

이처럼 순차적으로 따라하고 나면, <화면 4>와 같이 ‘Host setup complete…’라는 문구가 나타나는데, 이럴 경우 셋업이 성공한 것이다.

이제 설치가 끝났으니 먼저 NDK에 샘플로 제공되는 hello-jni 예제를 빌드해 보자. 빌드시에는 $make APP=hello-jni라고 명령을 수행한다. 재빌드시에는 -B 옵션을 사용하고 실제 build command를 모두 확인하고 싶은 경우 V=1 옵션을 사용한다.

빌드결과로 apps/hello-jni/project/libs/areabi/libhello-jni.so가 생성되었는지 확인하자.

어떻게 NDK에서 제공하는 툴을 이용하여 예제가 빌드 되는지 알고 싶다면, apps/hello-jni/Application.mk 와 sources/ hello-jni/Android.mk 파일을 열어보자.
일반적인 make 파일과 같은 형태이며 빌드를 위한 변수를 설정하는 부분을 확인 할 수 있다. 또한 Application.mk 파일에는 응용프로그램 에서 어떤 네이티브 라이브러리 모듈을 사용할 것인지에 대해 기술해야 한다. 이 부분은 네이티브 라이브러리를 빌드하는 것과는 직접적인 관계가 없으나 이 파일을 참조해 빌드할 타깃 모듈을 결정하기 때문에 필수적으로 작성해야 한다.

     <리스트 3> Android.mk 파일
     ----------------------------------------------------
     … 중략…
 
     LOCAL_MODULE    := hello-jni
     LOCAL_SRC_FILES   := hello-jni.c
 
     include $(BUILD_SHARED_LIBRARY)
     ----------------------------------------------------

Android.mk 파일에는 실제 shared library로 빌드할 c/c++ 파일 목록 과 사용하는 라이브러리 목록, compile/link option 등을 기술해야 하는데, 이때 변수 LOCAL_MODULE 에 모듈이름을 기술하게 된다. 이어 변수 LOCAL_SRC_FILES 에 빌드하려고 하는 소스 파일명을 기술하고, 파일명 사이는 스페이스로 구별한다.

마지막 줄이 shared library, 즉 .so 파일로 빌드 하겠다는 뜻이다. 이렇게 기술하면 자동으로 lib+모듈명+.so 형태의 파일을 빌드하게 된다.

추가로 특정 라이브러리를 사용하기 위해서는 아래와 같이 LOCAL_LDLIBS 변수에 내용을 기술한다. 아래는 안드로이드 로그 라이브러리를 사용하기 위한 예이다. 또한 이에 대한 추가적인 내용은 NDK document 폴더의 ‘ANDROID-MK.TXT’,’APPLICATION-MK.TXT’,’HOWTO.TXT’ 문서를 참고하기 바란다.

LOCAL_LDLIBS     :=-L$(SYSROOT)/usr/lib/ -llog

이제 네이티브 라이브러리 빌드가 끝났으니 네이티브 라이브러리를 사용하는 Java 코드를 살펴보자. <화면 6>과 같이 apps/hello-jni 프로젝트를 이클립스에서 열어보도록 하자. 왼쪽 패키지 익스플로러 창에서 마우스 오른쪽 버튼을 클릭한 뒤 Import 메뉴를 선택한다.

이어 Existing Projects into Workspace를 선택한후 app/hello-jni/ 디렉토리를 선택한다. 이를 실행하면 <화면 7>과 같이 Package Explorer에  HelloJni 프로젝트가 로딩되면 성공한것이다.

이클립스 메뉴에서 Run->Run을 선택하거나 단축키로 Ctrl+F11을 선택하면 에뮬레이터에서 Hello-jni 프로젝트의 결과를 확인할수 있다.

에뮬레이터가 실행되는데 제법 시간이 걸리므로 인내심을 가지고 기다리기 바란다. 에뮬레이터를 동작하기 위해서는 플랫폼 버전에 맞는 AVD 파일을 미리 생성해야 하는데 이 내용은 http://developer.android.com/guide/developing/eclipse-adt.html을 참고하길 바란다.

더불어 이전에 adb shell 명령을 이용한 안드로이드 파일시스템을 살펴보았는데, 이번에는 이클립스 IDE에서 DDMS툴을 이용하여 손쉽게 파일시스템을 확인해보자. 이때 이클립스 툴바 오른편에서 DDMS perspective 버튼을 선택한다. 오른편에 File Explorer 창을 이용하여 data/data/com.example.hellojni 폴더의 내용을 확인할 수 있으며, lib폴더아래에 libhello-jni.so 파일이 있는 것 또한 확인할 수 있다.

<화면 9>에서 보여지듯, 결국 안드로이드 응용프로그램은 system/lib 폴더의 라이브러리 이외에 /data/data/<자신의 package이름>/lib 아래 네이티브 라이브러리를 추가로 참고하는 것을 확인할 수 있다.

네이티브 라이브러리를 사용하는 Java 코드 맛보기

허우대 대리는 Java코드 에서 어떻게 C로 작성한 네이티브 코드를 참고하는지 궁금해졌다. 이번에는 허우대 대리와 함께 src/com/example/HelloJni.java 코드를 살펴보자.

    <리스트 4> HelloJni.java 파일
    -----------------------------------------------------------------
    … 중략…
    public class HelloJni extends Activity
    {
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            TextView  tv = new TextView(this);
           tv.setText( stringFromJNI() ); //-- (3)
            setContentView(tv);
        }
     
    public native String  stringFromJNI(); //-- (1)
     
    … 중략…
       static {
        System.loadLibrary("hello-jni"); //-(2)
        }
    }
    -----------------------------------------------------------------

<리스트 4>는 stringFromJNI 함수를 호출하여 얻은 문자열을 textView에 내용으로 넣어주는 간단한 소스로, 3가지 의미로 이용된다.

1) native 키워드를 붙혀서 선언부만 작성한다. 네이티브 라이브러리에 구현부가 있음을 알려준다.

2) static {..} 부분은 이 class가 로딩될 때 호출되는 되는데 이때 ‘hello-jni’ 라는 이름의 네이티브 라이브러리를 로딩하라는 의미이다.

3) 네이티브 라이브러리 함수라도 보통의 Java 메소드와 같은 방식으로 사용한다.
 
이어 Source/samples/hello-jni.c 파일을 열어서 네이티브 라이브러리 구현부도 함께 살펴보도록 하자.

<리스트 5> 네이티브 라이브러리 구현부 코드 
----------------------------------------------------------------------------------------------
Jstring Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
                                            jobject thiz )
{
    return (*env)->NewStringUTF(env, "Hello from JNI !")
}
----------------------------------------------------------------------------------------------

<리스트 5>를 보면 함수이름 앞에 ‘Java_com_example_ hellojni_HelloJni_’ 가 붙어 있는데, 이 부분은 JNI 함수이름 규칙에 의해 package명_클래스명이 Java에서 선언한 함수 이름 앞에 붙게 된다. 함수의 내용은 단순히 “Hello from JNI!” 라는 문자열을 Java에서 사용하는 String 타입으로 변환하여 반환하는 내용이다.

참고자료
1. http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html
2. http://developer.android.com/sdk/ndk/1.6_r1/index.html
3. http://www.aton.com/android-native-libraries-for-java-applications/
4. http://www.swig.org/





     c++ 코드, Google, 개발, 개발자, 마소, 마이그레이션, 마이크로소프트웨어, 블로그, 소프트웨어, 아이폰, 안드로이드, 앱스토어, 이상욱, 호랭이
     0   

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

실망인걸~ 구글폰 넥서스원 발매 첫주 판매량 2만대!
+   [아이티 이야기]   |  2010. 1. 16. 13:01  


구글의 야심작 넥서스원 발매 첫주 판매량이 2만대라는 발표와 함께 기존 스마트폰들의 첫주 판매량을 비교하는 기사가 났네요!

한 주에 2만대면 그럭저럭 선방한거 아닌가 생각했지만...

생각해보니 이게 한국 시장 판매량이 아니라는 게 문제군요.

아이폰3G는 무려 160만대.

모토로라의 드로이드는 25만대.

저는 이건 본 적이 없긴 한데 T모바일의 마이터치란 제품도 6만대나 팔렸다고 하네요.

넥서스원을 사고 싶어도 이미 종신 계약을 맺어버린 아이폰 사용자들이 너무 많은 탓일까요?

글을 쓴 사람은 고객 응대의 미숙함과 T모바일에서만 서비스된다는 점을 이유로 꼽고 있네요.

자세한 내용은 지디넷 블로그에 올라온 다음 링크를 참조해 주세요.

http://blogs.zdnet.com/gadgetreviews/?p=11133





     Google, 개발자, 구글, 구글폰, 넥서스원, 블로그, 스마트폰, 아이폰
     0   
BlogIcon 코알라라랑 2010.01.14 20:23 신고
헐.. 넥서스원 완전 기대이하의 판매량이네요 ㅠㅠ
호랭이 2010.01.14 21:47 
그러게요. 다른 폰들과 비교해서 이상할 정도로 적네요.
BlogIcon 마소호랭이 2010.01.14 22:02 신고
앗 이런! 구글은 민망하게도 이걸 인기블로그에 걸어버리다니... =_=;
넥서스원으로 올라오면 자동으로 걸어버리는 건가? ㄷㄷㄷ
BlogIcon 필넷 2010.01.14 23:10 신고
정말 의외의 저조한 기록이네요.
앞으로 나올 드로이드폰들이 촉각을 세우겠네요. ^^;
호랭이 2010.01.16 12:59 
네 서비스나 홍보, 마케팅에도 좀 더 신경을 써야 할 듯합니다.
BlogIcon ASH84 2010.01.15 09:50 신고
아직은 조금 믿음이 안간다는 ㅋㅋ
호랭이 2010.01.16 13:00 
발표 직후 판매를 시작한 탓에 소비자들이 제품을 제대로 인지하지 못한 것도 원인으로 꼽고 있는 듯합니다.
BlogIcon 둥룰 2010.03.27 18:38
sd랑 써보자 쿡엔쇼 안드로이폰좀 사봐 오늘 사

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

구글에서 온 크리스마스 메시지...
+   [아이티 이야기]   |  2009. 12. 21. 18:51  


아시는 분들은 아시고 모르는 분은 아무도 모르시는 것처럼 호랭이는 구글코리아와 인연이 좀 있는 편입니다. 요즘은 잘 연락도 안 되지만요(^-^;). 아무튼 오늘 밖에 나갔다 들어와보니 구글코리아에서 마케팅과 홍보를 총괄하고 계신 정김경숙님으로부터 동영상 카드가 와 있더라구요. 내년에는 마소도 이렇게 동영상 카드를 만들어서 회원과 정기구독자들께 보내봐야 겠습니다. 올해는 패쓰~ 죄송해요 ㅠ_ㅠ

더 많은 구글코리아의 크리스마스 인사를 보시려면

https://www.youtube.com/watch?v=vY_CbPpNJjc <=이리로...





     Google, 개발자, 구글, 구글코리아, 동영상, 메시지, 블로그, 정김경숙, 카드, 크리스마스
     0   

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

대박 상품과 함께하는 '구글 2009 대한민국 검색대회'
+   [아이티 이야기]   |  2009. 11. 16. 13:49  


구글코리아가 2009 대한민국 검색대회를 개최하고 있습니다.

근데 상품이 장난이 아니군요.

매일 1명씩 100만원 상당의 상품권과 2명씩 HP 넷북, 5명씩 아이팟 셔플 ㄷㄷㄷ...

이건 정말 시간 내서 해 봐야겠군요.
 
남들보다 리포트를 더 잘쓰고 싶다구요? 시간 때우기용 웹서핑은 이제 싫증나셨다구요?
그럼 검색 능력을 업그레이드하셔야죠. 이번 대회는 검색 퀴즈를 풀면서 여러분의 검색 능력도 체크해보고, 구글의 차별적인 검색 기능 (예를 들면 이미지, 번역, 지도, 웹에서의 고급검색기능 등)도 배우는 기회가 될 것입니다.
 
매일 오전 11시에 업데이트되는 2009 대한민국 검색대회 퀴즈 세 문제 모두 정답을 맞춘 분들 중 추첨을 통해 푸짐한 상품을 드리며, 행사기간 동안 꾸준히 참가하여 누적점수가 높은 분들 중 매주 15명에게는 벤츠 자전거나 미국 구글본사 방문 기회가 기다리는 결선 참가 기회를 드립니다.
망설이지 말고, 지금 바로 참여하세요!

 
2009 대한민국 검색대회 안내
대회 기간: 2009년 11월 2일(월) – 11월 27일(금)
참가 자격: 만 19세 이상 대한민국 국민 누구나

온라인 대회 (예선) 오프라인 대회 (결선)
대회기간 : 2009년 11월 2일(월) ~ 11월 27일(금)
참가대상 : 대한민국 성인남녀 
참가방법 : 검색퀴즈에 대한 답변 제출
•          문제는 매일 오전 11시에 업데이트되며, 익일 10시까지 정답 제출 가능
•          3문제 정답자 중 추첨을 통해 상품 증정
•          매주 누적점수 상위 15명에게는 오프라인 대회 (결선) 자격 수여
상품내역 :
•          대상 20명 (매일 1명): 백만원 상당 백화점 상품권
•          최우수상 40명 (매일 2명): 넷북 (HP Mini 110-1111TU)
•          우수상 100명 (매일 5명): 아이팟 셔플 (iPod Shuffle) 4GB
•          장려상 300명 (매일 15명): 전등 겸용 라디오
•          개근상 (4주 동안 매일 참여한 전원): 구글 티셔츠
* 2차 오프라인 대회 참가를 위한 점수 합산을 위해서 정답 제출시에는 반드시 동일한 개인정보를 입력해야 합니다
결과발표 : 매일 익일 11시 사이트에 게시 및 개별통지 대회일시 : 2009년 12월 5일(토)
참가대상 : 온라인 대회 상위 득점자 60명
참가방법 : 구글코리아 오피스에서 주어진 검색퀴즈에 대한 답변 제출
•          점수에 따라 상품 수여
상품내역 :
•          대상 1명 : 420만원 상당의 벤츠 접이식 자전거 또는 미국 구글본사 및 샌프란시스코 여행 (3박 5일)
•          최우수상 10명 : 캐논 디지털 카메라 EOS 450D
•          우수상 20명 : 아이팟 터치 32GB
•          참가상 60명 전원: 10만원 상당 주유권

* 우수상 이상의 상품에 대한 제세공과금은 수상자 부담입니다




     2009, Google, 개발자, 검색대회, 구글, 블로그
     2   

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

이건 뭐??? 한글의 재발견...
+   [아이티 이야기]   |  2009. 10. 9. 09:29  


한 지인이 해 준 이야기입니다.

 구글요
 한글날
 로고가 인상적이네요.
 지금 가보세요

'아! 한글날이라서 기념일 로고를 만들었겠구나!' '이번엔 어떤 모양일까?'
하는 생각과 함께 접속한 구글!!!

그런데 이게 뭐???

사용자 삽입 이미지

아 이것도 데니스 황이 한 걸까요?

센스만점 한글의 재해석!

한글을 조합해서 Google과 비슷한 모양으로 디자인하는 저 쎈쓰!!!

게다가 구글로 검색을 하면 배경에도 한글들이 깔려주네요!!!





     Google, 개발자, 구글, 기념일 로고, 블로그, 한글날, 한글의 재해석
     1   
BlogIcon 길버트 2009.10.09 09:38
왜 첫글자 G를 위해서 ㄷㄱ을 조합하지 않고 ㄷㅈ을 사용했을까요?
ㄷㄱ이 조금 더 깔끔하고 알아보기 쉬울 것 같아요.

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

Windows Embedded 시스템의 몰락!
+   [ratharn의 임베디드 세상]   |  2009. 9. 23. 08:30  


이번 글은 내용이 좀 무겁습니다.

2007년과 2008년 급속한 성장 속에 시장 점유율을 무서운 속도로 높히던 윈도우 임베디드 시스템이 관심 밖으로 밀려나고 있다는 내용과 그 원인에 대한 분석입니다.

여러 원인 중 안드로이드 등의 대안 운영체제 등장이 눈길을 끄네요.


최근 블로그나 관련 카페를 들어가보면 눈에 띄게 개발자의 참여도나 게시물의 숫자가 눈에 뛰게 줄어들었습니다. 이러한 현상을 잘 살펴보면 다음과 같은 이유일 것으로 생각합니다.

 

1)     윈도우 임베디드 시스템에 대한 관심이 현격히 줄어 듬

2)     윈도우 임베디드 시스템으로 더 이상 할 것이 없어짐

3)     기술적인 성숙도로 이해 더 이상 물어볼 것이 없어짐 검색하면 다 나옴

4)     먹튀할 것이 없어짐

5)     Android와 같은 대안 운영체제의 등장으로 인해 수요가 많이 감소됨

6)     기타 등등

 

초기 MSDN Help 파일 하나만 가지고 개발했던 시기가 어제 갔습니다. 이제 왠만하면 Naver Googling 하면 필요한 정보를 찾을 수 있습니다. 이러한 이유로 Windows Embedded 시스템에 대한 특별한 이슈가 없는 한 개발에 대해 더 이상 묻고/답할 여지가 없습니다.

 

반면 유명 회사들은 자신의 조직에서 신 기술과 노하우를 자체적으로 축적하기 때문에 더 이상 공유하면서 발전 가능할 여지는 많이 줄어듭니다. 단지 초보들만의 Q/A 만 활성화 될 뿐입니다.

 

또한 전체적인 시장 상황 악화로 인해 윈도우 임베디드 시스템을 이용해서 개발 하는 회사들이 줄어들었다고도 볼 수 있습니다. 또한 PMP나 네비게이션 시스템의 주 운영체제로 자리 잡았던 윈도우 임베디드 시스템이 업체의 수익성 악화에 따라 그만큼 수요가 줄었다는 것입니다.

운영체제나 기술도 그때 그때의 수요와 유행을 따라가기 때문에 윈도우 임베디드 시스템이 평생 임베디드 시스템을 위한 운영체제가 될 것이라고는 볼 수 없습니다.

 

그럼, 윈도우 임베디드 시스템에 대한 대안은?

 

(1)   새로운 대안을 찾는다? – 새로운 분야나 새로운 영역으로 진입하는 것입니다.

(2)   그래도 희망은 있다! – 아직 시작 단계라는 점을 분명히 하고 싶습니다. 기술적으로 성숙은 되었지만, 아직까지 해야 할 일은 많습니다.

(3)   혁신 혁신?

 

물론 결론이 나지 않을 이야기입니다. 다른 나라 기술을 지나치게 맹신하는 것도, 지나치게 추종하는 것도 문제가 있습니다.

 

하지만, 이제는 좀 고민해야 할 시기라는 것!

추후 결론은 더 생각해 보도록 하겠습니다.

 

2009-07-17 ratharn


[ratharn의 임베디드 세상]은 임베디드 전문 블로그 ratharn's WinCE Blog 와 함께합니다.




     Android, CE, Embeded, Google, Microsoft, ms, Windows Embedded System, 개발자, 마이크로소프트, 안드로이드, 윈도우 임베디드 시스템, 임베디드
     0   
BlogIcon 학주니 2009.09.23 13:21
윈도 임베디드의 경우 모바일에서는 윈도 모바일에 치이고..
다른 쪽으로는 임베디드 리눅스나 안드로이드와 같은 좀 더 가볍고 빠른 OS에 치이고..
같은 편, 다른 편... 양쪽으로 치이니... 할 말이 없을 듯 싶습니다...
포지셔닝의 문제라는 생각이 듭니다..

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

대단한 한국 엔지니어들
+   [ratharn의 임베디드 세상]   |  2009. 9. 21. 08:30  


Google Trend를 통해 검색해본 “Windows CE”에 관한 키워드 결과입니다.

 

사용자 삽입 이미지

 

이 결과를 보면,

한국이나 중국이 Windows Embedded CE에 관한 관심이 가장 많다라는 결론과 함께

한국 엔지니어의 성향을 언뜻 볼 수 있습니다.

개발을 진행할 때 어떠한 문제로 인해 문제가 생기고 어떠한 결과가 발생할까? 하는 논리적인 이유 찾는 것이 아니라 “Google”네이버를 통해 문제를 찾고 해결하는 태도를 보여준다는 것입니다. 급한 성격과 빠른 결과를 산출해야 하는 국내 실정에 기인한 것일 겁니다.

 

어떻게 보면 좋은 결과지만,

어떻게 보면 서글퍼 지는 결과입니다.

결과 중심이 아니라 과정 중심의 사회가 되어야 하고,

그 과정에서 쌓이는 지식들이

큰 힘이 되어갈 수 있는 나라가 되어야 할 텐데..

[ratharn의 임베디드 세상]은 임베디드 전문 블로그 ratharn과 함께합니다.




     Google, ratharn, Windows Embedded CE, 개발자, 라영호, 임베디드
     0   

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

빅빔, 아이팟 인증 무선이어폰 ‘오페라 S5’ 출시
+   [아이티 이야기]   |  2009. 8. 25. 13:45  


며칠 전에 빅빔이란 회사에서 아이팟용 무선 이어폰을 발표했습니다.

가격이 상당히 비싼데도 불구하고 해외에서만 선주문으로 8만대 넘게 판 제품이라니...

대체 얼마나 성능이 좋은지 궁금하긴 하군요.

그나저나 저 모델... 엄청 매력적인 분인데...

모델 촬영을 휴대폰으로 찍었나... 사진이 왜 이럴까요? OTL

사용자 삽입 이미지

세계 최초로 애플 아이팟의 공식 인증을 받은 무선이어폰을 한국에서도 구매할 수 있게 되었다. IT전문기업 빅빔(대표 김태형)은 신형무선 이어폰 ‘오페라 S5’를 24일 국내에 정식으로 출시했다. 대한민국 벤쳐기업인 디지파이(대표 박노영)를 통해 개발된 이 제품은 해외에서만 선주문으로 약 8만대가 팔려 화재를 모았던 제품이다.

‘오페라 S5’ 무선이어폰은 그 동안 전세계적인 히트 상품이었던 ‘아이팟’과 세계 휴대폰 시장판도를 바꾼 ‘아이폰’등에 모두 사용 가능한 공식 인증 제품으로 해외 유수경쟁사들을 제치고 한국의 중소기업이 애플사의 까다롭기로 유명한 인증을 통과한 것으로도 큰 성과라는 평가를 받고 있다. 이는 국내 벤처기업의 투혼의 산물로 1년에 걸친 개발 기간과 세계 최고급 음향전문가의 검수를 하는 등의 꾸준한 개선과 노력 통해 이뤄낸 결과이다..

‘오페라 S5’는 독자적인 무선 전송방식을 통해 일반적으로 알려진 ‘블루투스방식 이어폰’보다 월등히 뛰어난 CD급 음질을 제공하며 단말기기 하나로 4개의 이어폰을 사용가능하다. 저전력기술을 활용해 11시간이 넘는 긴 사용시간을 갖춘 것과 ‘아이팟’등의 기기를 손대지 않고도 이어폰으로 재생, 일시정지, 다음곡 선택, 음량조절 할 수 있다는 것도 ‘오페라 S5’의 특징이다.

소비자 가격은 178,000원이며 제품에 대한 자세한 내용은 빅빔 홈페이지나 02)714-1392으로 문의하면 된다.





     Google, 개발자, 무선이어폰, 빅빔, 아이팟, 아이폰, 오페라 S5
     0   

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

애드센스 이제 한화로 받는다!!!
+   [아이티 이야기]   |  2009. 8. 21. 11:28  


사용자 삽입 이미지

블로거 여러분 애드센스 게시하다보면 참 답답하시죠?
이제 저희 도움상회(라고 쓰고 '웨스턴유니온'이라고 읽는다)가
편안하게 수익금을 받으실 수 있도록 도와 드립니다.

왜 애드센스쓰다보면 참 답다압 하잖아요.
애드센스 얼마나 쌓였는지 확인하랴
수표 발송 됐는지 확인하랴
수표 제대로 오는지 확인하랴
수표 들고 은행가랴
수수료 확 떼이랴
휴~
정신 없으셨죠!

월 0만0천0백원에 만날 수 있는 고품격 애드센스한화받기 서비스...

이제 한화로 편안하게.
구글에서 수익이 지급된 다음 날 바로 은행에서 받아보실 수 있습니다.

자세한 내용은 구글코리아 공식 홈페이지를 확인해 주세요.

http://adsense-ko.blogspot.com/2009/08/blog-post_20.html





     Google, 개발자, 구글, 블로그, 애드센스, 웨스턴유니온, 한화로 받는 애드센스
     1   
BlogIcon 테크리 2009.08.21 21:52 신고
와.. 애드센스... 좋네요.
BlogIcon 마소호랭이 2009.08.22 17:28 신고 
네 좋아졌네요!
BlogIcon 5월12일입니다 2009.08.22 17:25 신고
그래도 100달러가 넘을때 마다 은행에 가서 신청해야 입급됩니다. 수수료가 없어서 다행입니다..
BlogIcon 마소호랭이 2009.08.22 17:29 신고 
1. 수표 오는 기간 동안 기다리지 않는다
2. 수표 들고 은행가지 않는다
3. 한화로 받을 수 있다
4. 수수료가 없다
엄청 좋은데요.
뭐 이런 거 안 되도 저는 수표 오면 무조건 좋지만 =_=;
하지만 역시 수수료는 너무 아까웠어여

아이디 
비밀번호 
홈페이지 
비밀글   

 

<<이전 | 1 | 2 | 3 | 다음>>

열이아빠's Blog is powered by Daum