안드로이드 소스 코드 내에서 apk 설치하는 방법 > 모바일어플제작

본문 바로가기

팝업레이어 알림

팝업레이어 알림이 없습니다.
사이트 내 전체검색


회원로그인

카카오톡친구추가 제임스 SNS마케팅 사용자모임 네이버밴드초대

접속IP:35.173.57.202



모바일어플제작

안드로이드 소스 코드 내에서 apk 설치하는 방법

페이지 정보

작성자 운영자 작성일14-11-19 02:22 조회1,398회 댓글2건

본문

실행할 apk

- package : com.nandol.install
- apk : Install.apk

 

설치할 apk

- package : com.nandol.test
- apk : Test.apk

 

1. Export project to unsigned application package

Eclipse 의 package explorer에서 Test 프로젝트를 마우스 우클릭하고 "Android Tools > Export Unsigned Application Package..." 를 선택하여 Local folder로 apk를 저장합니다.

 

2. Create keystore

unsigned된 apk는 이 방법으로 설치가 되지 않으므로, sign을 하기 위한 keystore를 생성합니다. (최초 1회) cmd창에서 아래와 같이 실행합니다.

keytool -genkey -v -keystore com.nandol.test.Test.keystore -alias nandol -keyalg RSA -validity 10000

 

3. Sign

cmd창에서 아래와 같이 실행합니다.

jarsigner -verbose -keystore com.nandol.test.Test.keystore Test.apk nandol

 

4. Import Test.apk to Install.apk's asset

위에서 sign한 Test.apk를 Install 프로젝트의 asset으로 import합니다.

 

5. Coding

아 래와 같이 구현합니다. install() method는 asset의 Test.apk를 InputStream으로 불러서 /data/data/[패키지명]/files로 저장한 후, "application/vnd.android.package-archive"를 이용하여 apk 설치화면을 불러냅니다.

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
private final static String TEST_APK = "Test.apk";
private final static String TEST_PACKAGE = "com.nandol.test";
private final static int TEST_VERSION_CODE = 1;
private void install() {
try {
InputStream is = getAssets().open(TEST_APK);
FileOutputStream fos = openFileOutput(TEST_APK, Context.MODE_WORLD_READABLE | Context.MODE_WORLD_WRITEABLE);
byte[] buffer = new byte[1024];
int byteRead = 0;
while ((byteRead = is.read(buffer)) != -1) {
fos.write(buffer, 0, byteRead);
}
fos.close();
File apk = getFileStreamPath(TEST_APK);
Uri uri = Uri.fromFile(apk);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "application/vnd.android.package-archive");
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}


Test.apk가 이미 설치되어 있는지 확인하고, 설치되어 있다면 새로 설치할 version이 보다 new인 경우에만 설치하도록 하려면 아래와 같이 추가합니다.

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if(TEST_VERSION_CODE > getVersionCode()) {
install();
}
}
public int getVersionCode() {
int versionCode = 0;
try {
versionCode = getPackageManager().getPackageInfo(TEST_PACKAGE, 0).versionCode;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return versionCode;
}

 

 

 

 
 
 
 
 
또 다른 방법
 
 
안드로이드 소스 내에서 다른 어플의 apk를 설치해야하는 방법이다.

File apkFile = new File("/sdcard/ApkTest.apk");
Uri apkUri = Uri.fromFile(apkFile);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType( Uri.fromFile(apkFile), "application/vnd.android.package-archive");
startActivity(intent);


 
※ command line으로 api를 설치하려는 과정은 다음과 같다.

설치 : adb install apkfilename
삭제 : adb uninstall pakeagename
재설치 : adb install -r apkfilename

 

  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오스토리로 보내기

댓글목록

모바일어플제작 목록

게시물 검색


홈쇼핑 인기상품을 국내 최저가로 구매하실 분들만 들어 오세요.^0^

*패쇄몰*이라 국내 최저가가 가능합니다.

새로운 상품을 매일 공동구매로 진행.

*패쇄몰*이라 싸게 판매가 되어 금방 매진이 됩니다.(꼭 참고 하세요)

오셔서 득템 하세요. ^0^

후회하지 않습니다.^0^

교환,반품,A/S도 철저히 이루어 집니다.

아래 주소로 들어오시면 됩니다.^0^

▶밴드 바로가기 클릭◀
https://bit.ly/2q69oFl

접속자집계

오늘
270
어제
1,045
최대
5,398
전체
2,010,878
Copyright © http://jamesoft.kr All rights reserved.
상단으로
모바일 버전으로 보기