찾는데 힘들었다. 커맨드 라인 콘솔에서 java 소스 코드를 컴파일해서 ADB shell을 통해 안드로이드 플랫폼에서 실행시키기 까지의 과정을 보여준다.
(원본 링크) http://davanum.wordpress.com/2007/12/04/command-line-java-on-dalvikvm/


December 4, 2007

Command line Java on DalvikVM

Filed under: Uncategorized — Davanum Srinivas @ 11:21 am

Found this very useful when i was trying out the JNI under android (Short Story – Could not get it to work!).

Step #1: Start with a simple java class

package org.apache;

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}

Compile the java class

C:\android\CmdLine>javac -d . -g Helloworld.java

Step #2: Package the generated classes into a temporary jar

C:\android\CmdLine>jar -cvf Temp.jar *
added manifest
adding: Hello.java(in = 0) (out= 0)(stored 0%)
adding: HelloWorld.java(in = 149) (out= 122)(deflated 18%)
adding: org/(in = 0) (out= 0)(stored 0%)
adding: org/apache/(in = 0) (out= 0)(stored 0%)
adding: org/apache/HelloWorld.class(in = 556) (out= 344)(deflated 38%)

Step #3: Use the “dx” tool to generate a classes.dex from our temporary jar.

C:\android\CmdLine>dx --dex --output=c:/android/CmdLine/classes.dex c:/android/CmdLine/Temp.jar

Step #4: Use the “aapt” tool to create a new jar suitable for use with dalvikvm

C:\android\CmdLine>aapt add CmdLine.jar classes.dex
'classes.dex'...

and push it into a known location on the emulator

C:\android\CmdLine>adb push CmdLine.jar /data
30 KB/s (0 bytes in 481.000s)

Step #5: kick the tires of dalvikvm

C:\android\CmdLine>adb shell
# /system/bin/dalvikvm -Xbootclasspath:/system/framework/core.jar -version
/system/bin/dalvikvm -Xbootclasspath:/system/framework/core.jar -version
DalvikVM version 0.2.0
Copyright (C) 2007 Google, Inc.
Blah blah blah LICENSE blah blah.
Dalvik VM init failed (check log file)

Step #6: Run our code

# /system/bin/dalvikvm -Xbootclasspath:/system/framework/core.jar -classpath /data/CmdLine.jar org.apache.HelloWorld
/system/bin/dalvikvm -Xbootclasspath:/system/framework/core.jar -classpath /data/CmdLine.jar org.apache.HelloWorld
Hello World!

(끝)

Posted by ingeeC
,

Sensor 관련 세미나 자료

Dev 2010. 10. 13. 16:14
센서 관련 세미나 동영상
Posted by ingeeC
,
모토롤라 Shole 폰에 안드로이드 2.1을 올리고 root 권한으로 사용할 수 있게 만드는 방법을 요약한다. http://androidforums.com/all-things-root-milestone/75460-milestone-2-1-update-root-guide.html 페이지에 멋지게 정리되어 있는 글을 한글로 옮긴다. 한글로 대강을 파악한 다음 원글을 살펴보면 좋을 것 같다. 내 페이지가 좀 부실해서 원글을 보는게 좋다.

참고로 이것이 모토롤라 Shole 폰...



Motorola Shole 폰 root 만들기
1. 폰 배터리 풀 충전
2. USB 드라이버와 RSD Lite 설치하기
3. 폰이 완충되면 USB 케이블을 뽑고 셧다운하기
4. 폰을 부트로더 모드로 시작시키기
    - 키패드 화살표를 윗방향 (화면방향)으로 누른 상태에서 파워버트을 누른다.
5. USB를 연결
6. RSD Lite에서 2.1 SBF를 선택하고 flash 시작
    - 1. device 선택
    - 2. SBF 파일 선택
    - 3. Start 버튼 선택
7. RSD Lite가 flash를 완료할 때까지 대기
    - Status 컬럼이 "Finished"로, Result 컬럼이 "PASS"로 표시될 때까지 기다린다.
    - 중간에 부팅 시퀀스가 진행된다. 당황하지 말고 기다리자.
(폰이 부팅되고 set up 하라는 문구가 나오면 폰 전원을 내리고 3번부터 다시 시작)
    - 이번엔 vulnerable recovery SBF를 flash 한다.
8. 윈도 탐색기로 milestone_root.zip을 폰의 SD 카드 루트에 복사하고 이름을 update.zip으로 변경
9. 폰을 셧다운 시키고 recovery mode로 시작
    - 1. 
        - bootloader가 90.78일 경우 키패드의 'x'키를
        - bootloader가 90.78보다 낮을 경우 '카메라 키'를 
        누른채로 파워버튼을 누른다.
    - 2. 모토롤라 로고가 뜨면 파워버튼에서 손을 뗀다. 하지만 다른 키는 계속 누른다.
    - 3. 공사중 화면이 뜬다.
    - 4. 볼륨 업 버튼과 카메라 버튼을 같이 누른다. (recovery mode 시작)
10. (recovery mode에서) apply sdcard:update.zip"을 선택
    - 화면에 "Rooting your phone..." 이라는 메시지가 뜬다.
    - 커맨드 명령이 다시 나타나면 "reboot system now"를 선택한다.
11. 폰이 재시작되면 초기 설정을 진행하거나 건너뛴다.
    - app이 root 권한을 요구하면 '승인'을 묻는 화면이 팝업될 것이다.

이제 ADB shell에서 'su'를 입력하면 당당한 루트 프롬프트 '#'를 볼 수 있다.
(끝)
Posted by ingeeC
,

GPS 원리 요약

Dev 2010. 6. 27. 14:58

GPS 시스템의 구성
우주부분, 제어부분, 사용자부분으로 구성된다.

우주부분
GPS 위성들은 현재 시각과 위성의 궤도 정보(ephemeris)를 50bps 속도로 지속적으로 방송한다.

제어부분
GPS 위성을 관리하는 본부에서 GSP 위성들의 시각을 동기화 하고 궤도정보(ephermeris)를 조정한다. GPS 위성들은 아주 정밀한 시계를 갖고 있으며 같은 시간을 공유한다.

사용자부분
GPS 수신기의 시계를 이용해서 수신기의 현재 시간과 위성이 발송한 시간과의 차이를 구하면 위성과 사용자의 거리를 파악할 수 있다. 위성과 수신기 사이의 거리는 우주적인 거리다. 전파가 빛의 속도로 위성을 떠나 수신기 까지 도달할 때까지 유의미한 시간이 소요된다. 위성과 수신기는 같은 시계를 공유하고 있기 때문에 전파가 도착할 때까지 소요된 시간을 측정하면 위성과 수신기 사이의 거리를 구할 수 있다 (거리 = 시간 * 속도).
3개 이상의 위성과 수신기 사이의 거리를 파악하면 3각측량법을 이용해서 사용자의 위치를 판단할 수 있다.

Posted by ingeeC
,

NDK 언제 쓰나?

Dev 2010. 6. 11. 00:46
언제 안쓰나?
NDK는 어플리케이션 패키지에 네이티브코드를 포함시킬 수 있도록 제공되는 도구다. 단말에 내장되는 엔진 성격의 시스템을 만드는데는 적합하지 않다. 단말에 내장되는 엔진 성격... 좀 설명이 거시기한데... 암튼 공장에서 단말을 찍어낼 때 포함되는 바이너리를 만들 때에는 NDK를 고려할 필요가 없다. 그런 모듈은 활용 가능한 모든 라이브러리를 끌어모아 최고의 성능을 추구해야 한다.

언제 쓰나?
어플리케이션을 만들 때 사용한다. NDK는 포터블을 염두에 두고 구글이 버전을 관리한다. NDK로 만든 네이티브 코드는 개념상 컴파일만 다시하면 모든 단말에서 실행을 보장한다. 포터블해야 하는 어플리케이션을 만들 때, 자바로 해결할 수 없는 성능 이슈가 있다면 NDK를 사용한다. 어쨌든 NDK를 쓰는 어플리케이션이 추구하는 목표는 성능/기능보다는 가능한 모든 안드로이드 단말에서 실행시킬 수 있는 '이식성 (portability)'이다.
Posted by ingeeC
,