[Animation] Frame & Tween Animation 구현 방법 1. Frame Animation : 여러 장의 이미지를 Frame 단위로 변경 2. Tween Animation : 이미지를 위치, 각도, 크기, 투명도 조절 Frame은 여러 장의 이미지로 인한 용량 Tween은 CPU를 많이 사용하나 세세한 조절이 부드럽게 가능 개인적으로는 큰 리소스의 이미지를 사용한다면 Frame도 CPU를 많이 사용하지 않을까 생각한다. 저장소에 저장 시 특정 파일 무시하기 저장소에 저장 시 특정 파일 무시하기 .gitignore 파일에 무시할 파일 패턴 작성 *.[oa] 빌드 시스템의 오브젝트와 아카이브 파일 ~ vi나 emacs의 임시 파일 입력하는 패턴 방법 #은 주석, 디렉토리는 끝에 /, !로 시작하는 패턴은 무시하지 않음, 정규식 사용 가능 # a comment - 이 줄은 무시한다. # 확장자가 .a인 파일 무시 *.a # 윗 줄에서 확장자가 .a인 파일은 무시하게 했지만 lib.a는 무시하지 않는다. !lib.a # 루트 디렉토리에 있는 TODO파일은 무시하고 subdir/TODO처럼 하위디렉토리에 있는 파일은 무시하지 않는다. /TODO # build/ 디렉토리에 있는 모든 파일은 무시한다. build/ # `doc/notes.txt`같은 파일은 무시하고 d.. Fastboot 명령어 Fastboot 명령어 fastboot flash 파티션 이름에는 bootloader, boot, zimage, ramdisk, system, userdata, cache, recovery 등이 올 수 있다. fastboot wait-for-devices 윈도우즈는 그냥 명령 주면 대기하므로 필요없다. 리눅스용에서 사용. fastboot [-w] flashall 윈도우즈에서는 "set ANDROID_PRODUCT_OUT=D:\out\target\product\crespo" 해두고 하면 된다. -w 옵션주면 userdata 등 파티션 날리고 모두 flash fastboot [-w] update update용 zip 파일(make updatepackage로 생성)로 업데이트, 역시 -w 옵션 주면 나머지 날.. Mudule Make Mudule Make In android Top folder 1. croot 2. source build/envsetup.sh 3. choosecombo ...(vender, product, mode) 4. mm target directory 그럼 간략히 설명 source build/envsetup.sh 빌드를 위해 필요한 함수들이 현재 실행 중이 Shell 환경으로 로드됨 tip : 자주 사용할 때는 .profile이나 .bashrc에 추가 가능 croot 안드로이드 root 디렉토리로 이동 m 현재 경로에서 최상위 경로로 이동한 후 make 실행 mm 현재 경로에서 가장 가까운 단위 모듈만 build mmm 파라미터로 주어진 경로들에 대해 단위 모듈 build WeakReference HashMap WeakReference HashMap 특정 Activity가 다른 Activity에게 Object를 전달할 때 사용 Object를 WeakReference에 넣구, Intent를 통해 Key 값을 Intent Extra 값을 전달 전달받은 Activity는 Key값으로 Object에 접근 Application Class Application Class Appcliation의 상태 정보를 유지할 때 사용. Activity와 Service는 getApplication()을 호출하여 접근 가능 Manifest에 정의되어 있다면 Android System에 의해 자동적으로 생성됨 Basic Thread for Application Basic Thread for Application 5 Threads Main HeapWorker Signal Catcher JDWP Binder Thread # Main Thread UI Thread 절대 Block되면 안됨 HeapWorker Dalvik 상에서 Garbage Collecting 작업 GC가 작업이 필요할 때, 깨움 Finalize API 호출 Signal Catcher Signal이 오면 받아서 처리 Ex) 시스템 오류 시 Dump 파일 생성 등 JDWP(Java Debug Wire Protocol) 디버깅 관련 역할 JVM과 Debugger 사이에 통신하기 위한 프로토콜 Binder 별도의 Process에서 요청들어오는 RPC 작업 수행 JDK 설치 JDK 설치 http://www.java.sun.com JRE = 단순히 JAVA로 개발된 언어를 읽어줌 JDK = JAVA 개발용 tar xvfz jdk.tar.gz mv jdk /usr/lib/jvm/jdk update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk/jre/bin/java 744 update-alternatives --config java [환경 구축] 환경 구축 www.android.com Partners Developers Packages Git, JDK, flex and .... X11 development curl http://android.git.kernel.org/repo >~/bin/repo chmod a+x ~/bin/repo repo init -u git://android.git.kernel.org/platform/manifest.git repo sync make * error fprintf() sudo apt-get install gcc-4.3 g++-4.3 JDK openJDK -> ORACLE JavaSDK 5 gperf sudo apt-get install git-core gnupg sun-java5-jdk flex bison g.. Handler Handler Message나 Runnable Object를 전달하는 역할 Message handleMessage() 메소드 호출 Runnable Object run() 메소드 호출 Message는 특정 Thread에 있는 MessageQueue에 쌓이고 나옴 Looper는 MessageQueue에 있는 Message를 꺼내 Handler에게 전달 Handler는 handleMessage를 통해 메세지 처리 Handler는 입구(외부 Thread인 MessageQueue)와 출구(UI Thread인 HandleMessage)를 가짐 기본 생성자 Handler handler = new Handler();를 생성하면 자동으로 new Handler()가 호출된 Thread의 MessageQueue와 Loope.. Memory issue Memory issue Garbage Collection 작업(100ms~ 200ms)에 의한 Application의 성능 문제 메모리 할당이 너무 많이 일어나는 경우(Layout 이나 View 등의 작업 시) GC는 해당 Application을 잠시 멈춘 뒤, 다른 객체들의 메모리를 반환하는 작업을 함 일반적일 때는 상관 없으나, 사용자가 스크롤이나 게임 상에서는 문제가 발생 해결 방법 Allocation Tracker SDK 내부에 있는 도구 Eclipse가 아닌 SDK의 Tool 폴더의 DDMS 실행 검증할 Application 프로세스를 선택하고 Allocation Tracker 탭을 클릭. Start Tracking 버튼 -> Get Allocation 하면 현재 메모리가 할당된 Objec들의 .. Binder Driver Binder Driver Linux Kernel의 driver로 되어 있는 기존 IPC와 성질이 다른 IPC 기존 IPC : 데이터만 전달 Binder Driver : Object를 전달 가능 (Serialize 기술로도 전달 가능) Shared Memory를 통하여 프로세스 사이에 비동기 호출. 오버헤드가 적음 Binder를 통해서 넘기는 Data와 Object reference는 Parcel 클래스에 저장되어 전달 Parcel Class 고성능 IPC 전송이 가능하도록 설계되어 모든 객체에 대해서 Serialization하지 않음 즉 모든 Object가 Binder를 사용할 수는 없음 이전 1 2 3 다음