일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 디자인 패턴
- 공공 데이터 포털
- 경기도 버스
- MDB Select
- C# 파일 암/복호화
- MVC
- solid
- 버스 API
- DrawRectangle
- DrawEllipse
- Json.NET
- MDB Connect
- WPF
- eventhandler
- GDI+
- TDD
- Excel Cell Format
- sqlite3
- JSON
- eventargs
- 경기도 버스정보시스템
- delegate
- NUnit
- 객체지향
- Cell Border Style
- c#
- C# MDB Handle
- Winform
- 시
- C# MDB
Archives
- Today
- Total
White Whale Studio
윈도우서버에서 apk 업데이트 방법 본문
반응형
구글 플레이를 통하지 않은 윈도우서버를 통해서 업데이트 하는 방법입니다.
순서는 다음과 같습니다.
※ 네트워크 작업이니 AsyncTask 사용해서 확인 및 다운로드 하셔야 됩니다.
1. apk를 서버에 위치 시킨다.(그냥은 다운로드 되지 않습니다. 오류가 발생할 겁니다.)
2. IIS (인터넷 정보 서비스) 에서 파일 확장자 설정(MIME)
2.1 적용할 사이트에서 MIME 형식 선택
들어가 보시면 다음과 같은 화면이 나옵니다.
내용들을 살펴보면 각종 확장자들과 MIME 형식에 대해서 나오는데 잘 모르는 제가 봐도 웹 사이트에서 서비스할 각종 파일들에 대한 처리 방식을 정리한 것같군요.
MS 에서 제공하는 방법은 링크에서 참조하시면 됩니다.
http://support.microsoft.com/kb/326965/ko
- IIS MMC(Microsoft Management Console)를 열고, 로컬 컴퓨터 이름을 마우스 오른쪽 단추로 누른 다음 속성을 누릅니다.
- MIME 형식을 누릅니다.
- 새로 만들기를 누릅니다.
- 확장명 상자에 원하는 파일 이름 확장명(예: .pdb)을 입력합니다.
- MIME 형식 상자에 application/octet-stream을 입력합니다.
- 새 설정을 적용합니다. World Wide Web 게시 서비스를 다시 시작해야 하거나 변경 내용이 적용되도록 작업자 프로세스가 재생될 때까지 기다려야 합니다. 이 예에서는 IIS가 확장명이 .pdb인 파일을 처리합니다.
아무튼 위와 같이 설정을 하면 되는데 저희는 apk 파일이니 .apk로 설정하면 되겠죠.
그 다음에 IE나 크롬에서 주소를 찍어보면 다운로드 되지 않던 녀석이 다운로드 되는 것을 확인 하실 수 있습니다.
3. 다운로드가 가능해지면 안드로이드 소스를 건드려봅니다. 파일 다운로드는 다른 블로그를 찾아보시면 잘 안내되어 있습니다.
- try {
- //다운로드 받을 URL에 대한 객체를 생성한다.
- //
- URL url = new URL("http://somewhere.com/some/webhosted/file");
- // URL로 부터 connection 객체를 를 생성한다.
- HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
- //생성된 커넥션에 대해 추가적인 설정을 지정한다. 여기서는 get방식의 요청을 설정
- urlConnection.setRequestMethod("GET");
- urlConnection.setDoOutput(true);
- //웹서버에 연결한다.
- urlConnection.connect();
- //파일을 저장하기 위한 경로를 지정한다.
- //이 예제에서는 sdcard의 root 디렉토리에 파일을 저장한다.
- //
- File SDCardRoot = Environment.getExternalStorageDirectory();
- //SDCard root 디렉토리에 somefile.txt 파일에 파일을 저장하기 위해
- //파일 객체를 생성한다.
- File file = new File(SDCardRoot,"somefile.ext");
- //파일을 오픈한다.
- FileOutputStream fileOutput = new FileOutputStream(file);
- //인터넷으로 부터 데이터를 읽어들이기 위한 입력스트림을 얻어온다.
- InputStream inputStream = urlConnection.getInputStream();
- //파일의 전체 크기를 얻어온다.
- int totalSize = urlConnection.getContentLength();
- //다운로드 받을 전체 바이트 크기를 변수에 저장한다.
- int downloadedSize = 0;
- //버퍼를 생성한다.
- byte[] buffer = new byte[1024];
- int bufferLength = 0; //임시로 사용할 버퍼의 크기 지정
- //입력버퍼로 부터 데이터를 읽어서 내용을 파일에 쓴다.
- while ( (bufferLength = inputStream.read(buffer)) > 0 ) {
- //버퍼에 읽어들인 데이터를 파일에 쓴다.
- fileOutput.write(buffer, 0, bufferLength);
- //다운로드 받은 바이트수를 계산한다.
- downloadedSize += bufferLength;
- //progressDialog에 다운로드 받은 바이트수를 표시해 준다. <-따로 progressDialog스레드를 작성해둘것
- updateProgress(downloadedSize, totalSize);
- }
- //작업이 끝나면 파일을 close하여 저장한다.
- fileOutput.close();
- //예외가 발생한 경우 다음 catch 루틴을 처리한다.
- } catch (MalformedURLException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
4. 특정경로에 다운로드 받은 뒤 Intent를 사용해서 설치해줍니다.
Install 함수 부분
File f = new File(경로 + 파일명);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(f),
"application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
반응형
'IT Engineering > Android 혹은 Java' 카테고리의 다른 글
[Android] SDK Tools 22.6.2 버전 업데이트 이후 (0) | 2014.05.08 |
---|---|
[Android] google play service lib Import 하기~! (2) | 2014.04.28 |
[Android] 소소하지만 필요한 소스.. (0) | 2014.02.24 |
[Java] String to UTF-8 변환 Encoding (0) | 2014.02.18 |
[Android & Java] 자질구레한 오류들 (0) | 2014.01.21 |
Comments