iPhone Touch Stylus

2008.02.17 17:36 from iPhone

Pogo Sylus라고 정정식 터치스크린용 스타일러스가 나와있다.

스타일러스 하나에 25$, 배송비 15$정도 하며 아래 사이트에서 자세한 정보가 나와있다.
배송에는 2주 정도가 소요된듯 하며 Shipping track도 되지 않아 돈 날렸다 싶기도 했다;
http://www.tenonedesign.com/stylus.php

img_iphone_gun 


아무튼 직접 사용해본 바로는 생각보다 펜이 크지 않고 위 사진처럼 펜을 보관할 수 있는 독을 같이 주는데 이게 완성도가 높지 않다. 그리고 끝부분이 아래 그림 처럼 되어 있는데 그림처럼 솜 부분이 많이 나와있지 않아서 철 부분이 자주 닿인다. 그래서 수직으로 써야 인식이 잘되고 유리판에 상처도 안날듯 하다.

tip-closeup-horizontal

결론은 쏘세지 손가락에 광명인듯 하지만 비추인듯 하다.
Posted by NOP 트랙백 0 : 댓글 2

iPhone SSH Passwordless 접속

2008.02.17 17:23 from iPhone

빌드된 iPhone 바이너리를 단말에 올리기 위해서 scp를 이용하려면 공개키를 이용한 인증 방법을 사용하면 편리하다.

설정 방법은 다음과 같으며 현재 개발환경은 cygwin에 설치된 toolchain 기준이다.
다음 명령으로 한쌍의 키를 생성한다. 이는 iphone 단말에서 해도 되고 접속할 client에서 해도 상관없다.

ssh-keygen -t rsa

위 명령을 실행하면 password 설정을 물어보는데 그냥 엔터를 쳐서 password 없이 키를 생성한다.
그러면 ~/.ssh폴더에 id_rsa와 id_rsa.pub가 생성되는데 id_rsa.pub를 authorized_keys라는 파일명으로 iphone의 .ssh폴더에 저장한다. 디렉터리가 없다면 생성하며 퍼미션은 다음과 같이 설정한다.

chmod 755 /var/root
chmod 700 /var/root/.ssh
chmod 644 /var/root/.ssh/authorized_keys

그런 다음 iphone의 /etc/sshd_config를 다음과 같이 3개의 설정의 주석을 제거해 준다.

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

그럼 다음 iphone을 reboot 하면 password 없이 접속이 가능하다.

단, 1.1.3 버전에서는 /var/root가 아니라 /var/mobile에 저장해야 한다. (이것 때문에 삽질을;)

Posted by NOP 트랙백 0 : 댓글 0

신규 릴리즈된 m5 버전

2008.02.17 16:47 from Android
Android가 m3 버전으로 진행되다가 m5로 갑자기 올라갔다. 물론 여러 소식에서 알려진 내용도 있고 이 버전을 위해서 Google에서 진행하는 프로그램 공모전도 연기되었다는 이야기가 들린다.

실제로 받아서 에뮬레이터를 실행해 본 결과 UI상으로도 상당한 변화가 진행된 것으로 보인다.

android_new_sdk

실제로 기존에 작성했던 코드가 m5로 넘어가면서 빌드가 되지 않았다.

아래 URL에서 확인 해보면 기존에 정의한 네이밍이 맘에 안들었나 보다. 물론 조금 더 명시적으로 변경된 듯하다.
Android SDK M5 Release - API Changes Overview
http://code.google.com/android/migrating/m3-to-m5/m5-api-changes.html

간략하게 살펴보면 다음과 같다.
AndroidManifest.xml
class= > android:name=
intent-filter: android:value > android:name
Layout.xml
id > android:id
그리고 참고로 onMotionEvent는 onTouchEvent로 변경되었다.
TAG Android, M5, sdk
Posted by NOP 트랙백 0 : 댓글 0
아래의 문서는 Android가 공식적으로 NDK를 지원하지 않았을때의 문서이다.
NDK는 아래의 URL에서 다운로드 가능하다.
http://developer.android.com/sdk/ndk/1.5_r1/index.html

공식적으로 Android는 Native 빌드를 지원하지 않는다.
http://code.google.com/android/kb/general.html#c
Can I write code for Android using C/C++?
No. Android applications are written using the Java programming language.

하지만 커널까지 공개되었고 JNI 인터페이스까지 지원되는 입장에서 못할 것은 없는것 같다.

Davanum Srinivas의 블로그를 확인하면 JNI를 이용하여 Native 빌드된 바이너리를 실행하는 방법을 소개하고 있다. 내용은 다음과 같다.

NativeAdd.java class 생성

package org.apache;

import android.util.Log;

public class NativeAdd {
    static {
        try {
            Log.i("JNI", "Trying to load libNativeAdd.so");
            System.loadLibrary("NativeAdd");
        }
        catch (UnsatisfiedLinkError ule) {
            Log.e("JNI", "WARNING: Could not load libNativeAdd.so");
        }
    }

    public static native long add(long a, long b);
}

javah로 해더 파일 생성
javah -classpath ../../android.jar;../bin/classes; org.apache.NativeAdd
생성된 해더

/* DO NOT EDIT THIS FILE - it is machine generated */
#include
/* Header for class org_apache_NativeAdd */

#ifndef _Included_org_apache_NativeAdd
#define _Included_org_apache_NativeAdd
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class:     org_apache_NativeAdd
* Method:    add
* Signature: (JJ)J
*/
JNIEXPORT jlong JNICALL Java_org_apache_NativeAdd_add
  (JNIEnv *, jclass, jlong, jlong);

#ifdef __cplusplus
}
#endif
#endif

C코드로 구현부 작성

include "org_apache_NativeAdd.h"

JNIEXPORT jlong JNICALL Java_org_apache_NativeAdd_add
  (JNIEnv *env, jclass c, jlong a, jlong b)
{
    return a + b;
}

Cross comfiler로 빌드

arm-none-linux-gnueabi-gcc  -I/usr/lib/jvm/java-1.5.0-sun/include -I/usr/lib/jvm/java-1.5.0-sun/include/linux  -fpic -c org_apache_NativeAdd.c
arm-none-linux-gnueabi-ld -T armelf_linux_eabi.xsc -shared -o libNativeAdd.so org_apache_NativeAdd.o

컴파일러는 아래의 링크에서 다운로드가 가능하며 armelf_linux_eabi.xsc는 motz diary에서 설명하고 있는 Patch된 파일을 사용해야 링크에러가 발생되지 않는다.
http://www.codesourcery.com/gnu_toolchains/arm/download.html


Android로 업로딩

adb push native/libNativeAdd.so /system/lib
adb install bin/CallNative.apk

참고로 테스트 환경은 Ubuntu였으며 Windows 환경에서는 빌드되지 않았다.

Posted by NOP 트랙백 0 : 댓글 0
사실 이 프로젝트가 공개되기 전에 Cygwin에 iPhone Tool chain을 설치하는 법은 만만한 일이 아니였다. Toolchain이 OSX를 고려되어 개발되었기 때문에 여러가지 컴파일 에러가 발생했기 때문이다.
하지만 아래의 링크를 이용하면 간단하게 설치가 가능하다.

아래의 두가지 파일은 설치 전에 여전히 필요하다.
  • /Developer/SDKs/MacOSX10.4u.sdk
  • iPhone/iTouch root filesystem

Windows Cygwin Binary Toolchain Installation

Windows_cygwin_setup_step_7

Posted by NOP 트랙백 0 : 댓글 0
setTextFont에 폰트 명만 전달하면 가능하다.
UITextView* textView = [[UITextView alloc] initWithFrame:CGRectMake(0.0f, 45.0f, 320.0f, 480.0f)];
[textView setTextFont:@"UnDotum"];
해당 폰트는 CGFontCache.plist에 정의되어 있어야 한다.
Posted by NOP 트랙백 0 : 댓글 0
OpenSSH를 이용하여 SCP로 접속하는 방법 외에 USB인터페이스를 이용하여 디스크 마운팅이 가능한 프로젝트가 있다.

iPhoneDisk
StatusItemScreenshot  

Disk for iPhone is a MacFUSE based filesystem that allows you to read and write files on your iPhone. It uses the MobileDevice API (like iTunes) to access the filesystem of the iPhone over USB.

REQUIREMENTS: You must have MacFUSE installed. See http://code.google.com/p/macfuse/ for more details on MacFUSE.

위에 설명된 바와 같이 macfuse가 설치되어 있어야 한다.
하지만 나의 경우에는 Root로의 마운팅은 문제가 있었다.

Posted by NOP 트랙백 0 : 댓글 0

바이너리 plist 변환방법

2008.02.17 15:39 from iPhone
iPhone에서 사용되는 plist의 경우 xml포멧을 따르지만 열어보면 바이너리 파일로 되어 있는 경우가 많다. 이는 bplist형태로 바이너리 포멧으로 변환된 파일로 OSX가 설치된 단말에서 열어보면 프로퍼티 형태로 수정이 가능하다.

이외에도 여러가지 방법으로 변환이 가능하다.

Plutil (OSX)
Property List utility modeled on OS X's plutil with enhanced functionality.
http://ericasadun.com/ftp/EricaUtilities/

plutil -convert xml1 some_file.plist

APropList (Win32)

APropList.exe

aproplist binaryxml.plist convertedxml.plist

Web CGI
Web상에서 파일 업로딩으로 변환 가능(단 128kb로 제한)
http://140.124.181.188/~khchung/cgi-bin/plutil.cgi

Posted by NOP 트랙백 0 : 댓글 0

폰트 추가 방법

2008.02.17 15:32 from iPhone

폰트 파일 다음경로에 복사

/System/Library/Fonts/Cache/

/System/Library/Fonts/CGFontCache.plist를 수정

<key>Names</key>
 <dict>
  <key>UnDotum</key>
  <string>/System/Library/Fonts/Cache/UnDotum.ttf</string>
  <key>UnDotumBold</key>
  <string>/System/Library/Fonts/Cache/UnDotumBold.ttf</string>

...

<key>TraitMappings</key>
 <dict>
<key>UnDotum</key>
  <dict>
   <key>Plain</key>
   <string>UnDotum</string>
   <key>Bold</key>
   <string>UnDotumBold</string>
  </dict>
 

...

위와 같은 방법으로 기존 폰트도 대체 가능할 것으로 생각된다.
Posted by NOP 트랙백 0 : 댓글 0