Gooday Note Scrap Source Android login
 
작성일 : 11-04-11 11:29
안드로이드 apk 파일 만들기
 글쓴이 : 기리
조회 : 5,228   추천 : 0   비추천 : 0  
   http://www.squarelab.net/LectureBoard/2830 [1116]

이클립스에서 작업한 프로젝트를 사인된 apk(Android Package)로 컴파일하는 방법입니다.


1. 프로젝트에 마우스를 올리고 우클릭하여 'Android Tools -> Export signed Android Package...'을 선택합니다.


apk1.png



2. 프로젝트명을 확인합니다.


apk2.png



3. 사용하는 Keystore가 없다면 'create new keystore'를 선택하고 패스워드를 입력합니다.


apk3.png



4. Alias와 패스워드를 입력하고 Validity에는 유효기간을 입력하는데 25년 이상을


  입력하라고 권장합니다.


apk4 .png


5.  apk파일이 저장될 위치를 선택하면 완료가 됩니다.


apk5.png


기리 11-04-11 15:25
 
* APK 설치시 DB파일 포함


안드로이드펍의 개굴딱지님의 Q&A에서 도움을 얻어 해결 했습니다.

먼저 DB파일은 assests/databese/ 폴더에 추가 한 후

MainActivity.onCreate() 함수에서 아래와 같이 추가 해 줬습니다.


// DB파일 패키지 설치 폴더에 복사
File outfile = new File(
  "/data/data/[PackageName]/databases/Filename.db");

AssetManager assetManager = getResources().getAssets();
InputStream is = assetManager.open(
  "database/Filename.db",
  AssetManager.ACCESS_BUFFER);
long filesize = is.available();

// 패키지 폴더에 설치된 DB파일이 포함된 DB파일 보다 크기가 작을 경우 DB파일을 덮어 쓴다.
if(outfile.length() < filesize){
 byte[] tempdata = new byte[(int) filesize];
 is.read(tempdata);
 is.close();
 outfile.createNewFile();
 FileOutputStream fo = new FileOutputStream(outfile);
 fo.write(tempdata);
 fo.close();
}

AssetManger와 Stream을 사용 해 해당 파일을 비교 한 후 파일 사이즈가 패키지에 포함 된 파일 보다 작을 경우 덮어 쓰도록 처리 했습니다.

[출처] 안드로이드사이드 - http://www.androidside.com/bbs/board.php?bo_table=B49&wr_id=2374#c_2377
기리 11-04-11 19:07
 
* 위에꺼 잘 안되서 요거로 : http://reipielr.tistory.com/4

AssetManager am = this.getResources().getAssets();
File file = new File("/data/data/STA_dic/database/sta_dic");

try {
    file.createNewFile(); // 새로운 파일 생성(빈 파일)
   
    // .opne() 으로 기작성 DB를 읽는다. 이 때 inputstream 형식으로 변환되어 읽어진다.
    InputStream inStream = am.open("sta_dic");
    long fileSize = inStream.available(); // .available() 로 스트림의 길이를 알아낸다.
    byte[] tempData = new byte[(int)fileSize];
    inStream.read(tempData); // 크기만큼 만들어진 바이트 배열에 스트림을 읽어 저장한다.
    inStream.close();
   
    // FileOutput 형식으로 스트림 생성
    FileOutputStream fileOutStream = new FileOutputStream(file);
    fileOutStream.write(tempData); // 위에 생성한 바이트 배열을 사용하여 파일에 쓴다.
    fileOutStream.close();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}