Android/App개발2011. 5. 8. 18:03

MIME-Type Description File Extension
application/acad AutoCAD drawing files dwg
application/clariscad ClarisCAD files ccad
application/dxf DXF (AutoCAD) dxf
application/msaccess Microsoft Access file mdb
application/msword Microsoft Word file doc
application/octet-stream Uninterpreted binary bin
application/pdf PDF (Adobe Acrobat) pdf
application/postscript Postscript, encapsulated Postscript, ai, ps, eps
Adobe Illustrator
application/rtf Rich Text Format file rtf rtf
application/vnd.ms-excel Microsoft Excel file xls
application/vnd.ms-powerpoint Microsoft PowerPoint file ppt
application/x-cdf Channel Definition Format file cdf
application/x-csh C-shell script csh csh
application/x-dvi TeX dvi dvi dvi
application/x-javascript Javascript source file js
application/x-latex LaTeX source file latex
application/x-mif FrameMaker MIF format mif
application/x-msexcel Microsoft Excel file xls
application/x-mspowerpoint Microsoft PowerPoint file ppt
application/x-tcl TCL script tcl
application/x-tex TeX source file tex
application/x-texinfo Texinfo (emacs) texinfo, texi
application/x-troff troff file t, tr, roff t, tr, roff
application/x-troff-man troff with MAN macros man
application/x-troff-me troff with ME macros me
application/x-troff-ms troff with MS macros ms
application/x-wais-source WAIS source file src
application/zip ZIP archive zip
audio/basic Basic audio (usually m-law) au, snd
audio/x-aiff AIFF audio aif, aiff, aifc
audio/x-wav Windows WAVE audio wav
image/gif GIF image gif
image/ief Image Exchange Format file ief
image/jpeg JPEG image jpeg, jpg jpe
image/tiff TIFF image tiff, tif
image/x-cmu-raster CMU Raster image ras
image/x-portable-anymap PBM Anymap image format pnm
image/x-portable-bitmap PBM Bitmap image format pbm
image/x-portable-graymap PBM Graymap image format pgm
image/x-portable-pixmap PBM Pixmap image format ppm
image/x-rgb RGB image format rgb
image/x-xbitmap X Bitmap image xbm
image/x-xpixmap X Pixmap image xpm
image/x-xwindowdump X Windows Dump (xwd) xwd
multipart/x-gzip GNU ZIP archive gzip
multipart/x-zip PKZIP archive zip
text/css Cascading style sheet css
text/html HTML file html, htm
text/plain Plain text txt
text/richtext MIME Rich Text rtx
text/tab-separated- values Text with tab-separated values tsv
text/xml XML document xml
text/x-setext Struct-Enhanced text etx
text/xsl XSL style sheet xsl
video/mpeg MPEG video mpeg, mpg, mpe
video/quicktime QuickTime video qt, mov
video/x-msvideo Microsoft Windows video avi
video/x-sgi-movie SGI movie player format movie


MIME 확장명

파일 확장명 

 application/x-silverlight-app  .xap
 application/manifest  .manifest 
 application/x-ms-application  .application 
 application/x-ms-xbap  .xbap
 application/octet-stream  .deploy
 application/vnd.ms-xpsdocument  .xps 
 application/xaml+xml  .xaml
 application/vnd.ms-cab-compressed  .cab
 application/vnd.openxmlformats-officedocument.wordprocessingml.document  .docx
 application/vnd.openxmlformats-officedocument.wordprocessingml.document  .docm
 application/vnd.openxmlformats-officedocument.presentationml.presentation  .pptx
 application/vnd.openxmlformats-officedocument.presentationml.presentation  .pptm
 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet  .xlsx
 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet  .xlsm
 application/msaccess  .accdb
 application/x-mspublisher  .pub
 image/svg+xml  .svg
 application/xhtml+xml  .xht
 application/xhtml+xml  .xhtml

Posted by 삼스
Android2011. 4. 22. 14:59

android SDK에서 제공하는 android tool은 3가지 타입의 프로젝트를 생성하는 방법을 제공한다.

1. 일반적인 안드로이드 애플리케이션 프로젝트를 생성
2. 안드로이드 라이브러리를 생성하는 프로젝트를 생성
3. JUnit test를 확장하는 테스트 프로젝트를 생성

안드로이드 프로젝트의 생성

 android tool을 사용해서 생성한다. 

android create project \
--target <target_ID> \
--name <your_project_name> \
--path path/to/your/project \
--activity <your_activity_name> \
--package <your_package_namespace>
target은 애플리케이션의 빌드타겟인데 이는 안드로이드 플랫폼 라이브러리에 대응된다. 유효한 타겟과 해당하는 ID를 알고 싶으면 android list targets를 수행하면 된다.

name은 프로젝트명이다. 옵션이며 apk파일명이된다.
path는 프로젝트의 폴더명이다. 폴더가 없다면 생성해준다.
activity는 디폴트액티비티명이다.
package는 애플리케이션의 패키지명이다.

아래는 예제이다.
android create project \
--target 1 \
--name MyAndroidApp \
--path ./MyAndroidAppProject \
--activity MyAndroidAppActivity \
--package com.example.myandroid
위 명령을 수행하면 MyAndroidAppProject폴더가 생성되며 그 아래 각종 안드로이드 소스와 리소스들이 자동으로 생성된다.

개발에 사용하는 Android SDK가 업데이트 된 경우 이전 프로젝트코드를 그대로 사용하려면 android update project명령을 수행하면 된다.  이 명령으로 빌드타겟을 바꾸거나 프로젝트명을 바꾸는 용도로 사용할 수 도 있다.

android update project --name <project_name> --target <target_ID>
--path <path_to_your_project>
아래는 예이다.
android update project --name MyApp --target 2 --path ./MyAppProject

라이브러리 프로젝트의 설정

라이브러리 프로젝트는 표준 안드로이드 프로젝트이다. 따라서 애플리케이션 프로젝트 생성법과 동일한 방법으로 생성할 수 있다. 

 android create lib-project --name <your_project_name> \
--target <target_ID> \ --path path/to/your/project \ --package <your_library_package_namespace>
lib-project명령으로 수행하면 표준 안드로이드 프로젝트와 동일한 프로젝트가 생성되고 default.properties파일에 아래 정보가 추가되어 library project가 되게 된다.

android.library=true
완성된 프로젝트에서 default.properties를 열어보면 위 정보가 추가된것을 볼 수 있다.


라이브러리 프로젝트 참조하기

애플리케이션을 개발하면서 라이브러리 프로젝트로부터 코드나 리소스를 사용하고자 한다면 애플리케이션의 build properties에 라이브러리 프로젝트의 참조를 추가하면 된다.

android update lib-project \
--target <target_ID> \
--path path/to/your/project
--library path/to/library_projectA
위 명령은 프로젝트의 build properties에 라이브러리 참조를 추가하게 된다. 
아래는 그 예이다.

android.library.reference.1=path/to/library_projectA
 
 
여러개의 라이브러리를 참조하고자 한다면 인덱싱을 해야 한다. 이 순서는 참조순서가 된다. 파일을 직접 수정함으로 순서를 조정할 수 있다.
android.library.reference.1=path/to/library_projectA
android.library.reference.2=path/to/library_projectB
android.library.reference.3=path/to/library_projectC

manifest file에서 라이브러리 콤포넌트의 선언

 애플리케이션의  manifest파일에는 애플리케이션이 사용하는 모든 콤포넌트들이 정의되어야 하며 참조하는 라이브러리의 콤포넌트들도 정의되어야 한다. 예를 들면 ,activity>, <service>, <receiver>, <provider>은 물론이고 <permission>, <uses-library>등도 필요하면 정의해야 한다.

아래는 예이다.

<manifest>
  ...
 
<application>
    ...
   
<activity android:name="com.example.android.tictactoe.library.GameActivity" />
    ...
 
</application>
</manifest>

Ant tool은 라이브러리 레퍼런스가 있는 경우 내부적으로 모든 라이브러리를 컴파일하고 머지하여 빌드를 진행한다.


 
Posted by 삼스
Android2011. 4. 22. 14:30

Ant build script로 애플리케이션을 빌드하는 방법은 debug mode와 release mode가 있다.
어떤 방법을 사용하던간에 애뮬레이터나 디바이스에서 동작시키려면 signing을 해야 한다.

debug mode로 빌드시 Ant는 debug key로 자동으로 sign한다. 따라서 애뮬이나 디바이스에서 구동 가능하다. 하지만 배포는 불가하다. 릴리즈모드로 빌드하면 unsigned apk 가 만들어진다. 따라서 반드시 private key로 keytool과 jarsigner로 sign해야 한다.

Ant가 설치되어 있지 않다면 Apache Ant home page로부터 설치를 해야 한다. 그리고 실행경로를 설정해야 한다. JAVA_HOME환경변수가 JDK가 설치된 경로를 지정하고 있어야 한다.

윈도우에서는 JDK가  "Program FIles"폴더에 설치되는데 공백때문에 오류가 날수 있으므로 아래와 같이 정의한다.
set JAVA_HOME=c:\Progra~1\Java\<jdkdir>

debug mode로 빌드하는 방법은 프로젝트의 루트위치에서 아래 명령만 치면 된다.

ant debug

이 명령은 bin/ 위치에 여러분의 애플리케이션 .apk파일을 만들어준다. 이 파일은 애뮬이나 디바이스에 바로 설치 및 디버깅이 가능하다.

소스가 변경될 때 마다 이 명령을 수행하여 재빌드한다.

release mode로 빌드하는 방법은 프로젝트의 루트위치에서 아래 명령만 치면 된다.

ant release

이 명령으로 생성된 .apk file은 unsigned apk이다.
따라서 signing과 zipalign을 추가로 해주어야 한다. 이 과정까지 마치면 배포를 위한 준비를 마친게 된다.

원한다면 Android build script가 자동으로 sign하고 align하도록 할 수 있다. keystore와 key alias를 build.properties 파일에 기술하면된다. 이 정보가 존재하면 빌드스크립트는 keystore와 alias password를 입력하는 화면이 나오게 된다.

주의 : Ant가 입력을 다룰수 있기 때문에 빌드프로세싱중 패스워드가 화면에 보여질수 있다. 이게 거슬린다면 매뉴얼로 signing하는것이 좋다. manual로 signing하는것 대신에 unsigned로 빌드 후 signing을 별도로 하면된다.

build.properties에는 아래와 같이 keystore와 alias name을 지정할 수 있다.

key.store=path/to/my.keystore
key.alias=mykeystore

위와 같이 한 수 재빌드하면 sign된 릴리즈모드 apk가 만들어진다.

빌드를 완전히 자동화할 목적으로 사용하고자 한다면 signing중에 password입력 프롬프트가 뜨는것을 부담스러워 할 수 있다.
이 때는 수동으로 해야 하는데 jarsigner에서 수동으로 password를 지정할 수 있다. 위에서 기술한 build.properties방식으로는 동작하지 않으므로 별도로 매뉴얼로 수행해야 한다.

jarsigner -verbose \
             -keystore my-release-key.keystore  \   <- keystore file의 full path
             -storepass 1234 \        <- keystore의 password
             myapp.apk \                <- unsigned apk
             myalias_name                   <- keystore의 alias name

위의 예처럼 하면 프롬프트 없이 signing이 완료된다.



 
Posted by 삼스