Android는 .apk 파일을 보관합니까?만약 그렇다면 어디에?
안드로이드가 마켓플레이스에서 애플리케이션을 설치한 후 .apk 파일을 유지합니까?
안드로이드가 이러한 파일을 보관할 수 있는 표준 위치가 있습니까?
매니저 manager)를 할 수 .pm
에 대하여adb shell
패키지 나열하기:
adb shell pm list packages | sort
그리고 어디에 표시하는지 표시합니다..apk
파일:
adb shell pm path com.king.candycrushsaga
package:/data/app/com.king.candycrushsaga-1/base.apk
그리고.adb pull
다운로드할 수 있습니다.
adb pull data/app/com.king.candycrushsaga-1/base.apk
프로그램은 사전설응프다같습다니음에 ./system/app
폴더를 누릅니다.사용자가 설치한 애플리케이션이 다음 위치에 있습니다./data/app
저는 당신이 루트 폰을 가지고 있지 않으면 접속할 수 없다고 생각합니다.여기에 루트 폰이 없지만 이 코드를 사용해 보십시오.
public class Testing extends Activity {
private static final String TAG = "TEST";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
File appsDir = new File("/data/app");
String[] files = appsDir.list();
for (int i = 0 ; i < files.length ; i++ ) {
Log.d(TAG, "File: "+files[i]);
}
}
그것은 내 뿌리 깊은 htc 마법과 에뮤에 있는 apks를 나열합니다.
이전에 설치한 APK 파일만 가져오려면 다음을 수행합니다.
- Google Play에서 AirDroid 가져오기
- PC 웹 브라우저에서 AirDroid를 사용하여 전화기 액세스
- 앱으로 이동하여 설치된 앱 선택
- 전화기에서 이 앱의 APK 버전을 다운로드하려면 "다운로드" 버튼을 클릭하십시오.
전화기를 루팅할 필요가 없습니다.adb
아무거나 쓰거나.
표준 위치는 없지만 패키지 관리자를 사용하여 패키지 및 응용 프로그램에 대해 알아볼 수 있습니다.여기서 얻을 수 있는 정보 클래스에는 특정 패키지에 대한 다양한 정보가 있습니다. 예를 들어 .apk의 경로, .apk의 데이터 디렉토리 경로, 리소스 전용 .apk의 경로(전방 잠금 앱의 경우) 등이 있습니다.다른 앱과의 관계에 따라 이러한 디렉터리를 읽을 수 있는 권한이 있을 수도 있고 없을 수도 있습니다. 그러나 모든 앱은 리소스 .apk(앞으로 잠기지 않는 앱의 경우 실제 .apk이기도 함)를 읽을 수 있습니다.
셸을 이리저리 쑤시고 있는 경우 현재 포워드로 잠기지 않은 앱은 /data/app/.apk에 있습니다.셸 사용자는 특정 .apk를 읽을 수 있지만 디렉터리를 나열할 수는 없습니다.향후 릴리스에서는 명명 규칙이 약간 변경될 것이므로 그대로 유지될 것으로 기대하지 마십시오. 그러나 패키지 관리자로부터 .apk의 경로를 받으면 셸에서 사용할 수 있습니다.
사전 설치된 앱은 일반적으로 /system/app에 있으며 사용자가 설치한 앱은 /data/app에 있습니다.
"adb pull"을 사용할 수 있지만 APK 파일의 전체 경로를 알아야 합니다.에뮬레이터에서 "adb shell" + "ls"를 사용하여 디렉터리 목록을 얻을 수 있습니다.그러나 Android 기기에서는 보안상의 이유로 "/data" 폴더에서 이 작업을 수행할 수 없습니다.그렇다면 APK 파일의 전체 경로를 어떻게 파악할 수 있습니까?
패키지 관리자를 쿼리하는 프로그램을 작성하면 설치된 모든 앱의 전체 목록을 얻을 수 있습니다.아래의 짧은 코드 조각:
PackageManager pm = getPackageManager();
List<PackageInfo> pkginfo_list = pm.getInstalledPackages(PackageManager.GET_ACTIVITIES);
List<ApplicationInfo> appinfo_list = pm.getInstalledApplications(0);
for (int x=0; x < pkginfo_list.size(); x++){
PackageInfo pkginfo = pkginfo_list.get(x);
pkg_path[x] = appinfo_list.get(x).publicSourceDir; //store package path in array
}
이러한 정보를 제공하는 앱도 찾을 수 있습니다.그들이 많이 있습니다.이것(AppSender)을 사용해 보십시오.
시장에서 설치
설치 후 apk를 유지할지 여부는 마켓플레이스의 행동입니다.Google play는 설치 후 apk를 유지하지 않습니다.다른 타사 마켓플레이스는 다른 행동을 할 수 있습니다.
개발/디버그 도구(adb, eclipse, Android studio)에서 설치
때 apk를 합니다.adb install
eclipse됩니다(이클립스/disclipse apk().adb push
) 읽기 및 가능한 디렉토리(으로 )로 /data/local/tmp/
다음 는 그다음도다사용니다합음을구는런▁the를 사용합니다.pm
in 설할명령, 임앱을삭제다니합킨치시를 됩니다./data/local/tmp/
설치가 완료된 후.
이러한 정보는 다음과 같은 디버그 출력을 통해 얻을 수 있습니다.
$ adb install bin/TestApplication.apk
3155 KB/s (843375 bytes in 0.260s)
pkg: /data/local/tmp/TestApplication.apk
Success
시스템이 apk를 유지하는 방법
물론 시스템은 모든 앱을 어딘가에 저장해야 합니다.시스템은 다양한 유형의 apk를 기반으로 apk를 유지할 수 있는 세 가지 위치가 있습니다.
주식 앱용
그것들은 보통 시스템 실행을 위한 핵심 앱과 구글 서비스를 포함하여 제조사에 의해 장치로 배송됩니다. 당신은 디렉토리 아래에서 그것들을 찾을 수 있습니다.
/system/app
그리고./system/priv-app
.사용자가 설치한 앱
대부분의 apk는 이 범주에 속합니다.이러한 apk는 일반적으로 사용자 또는 사용자가 마켓플레이스에서 설치합니다.
adb install
없이-s
선택.디렉터리 아래에서 찾을 수 있습니다./data/app
루트 장치의 경우.sdcard의 앱
가 에서 apk를 사용하여 설치
android:installLocation="auto"
매니페스트에서 앱은 시스템의 앱 관리자 메뉴에서 sdcard로 이동할 수 있습니다. sdcard의 보안 ./mnt/sdcard/asec
.설치 위치를 강제로 sdcard로 설정하는 또 다른 방법은 다음 명령을 사용하는 것입니다.
adb install -s apk-to-install.apk
.
은 한 의 로고참, 에 있지 ..apk
더 이상 파일을 보관합니다.된 모든 된 폴더가 ./system/app
또는/system/priv-app
최신 안드로이드 릴리즈용입니다.
특정 앱의 경로를 찾고 있다면 버그 보고서를 가져오는 것이 빠르고 더러운 해결책입니다.
$ adb bugreport | grep 'dir=/data/app'
이것이 전체 목록을 제공할 수 있을지 모르기 때문에 앱을 먼저 실행하는 것이 도움이 될 수 있습니다.
ADB로 앱을 풀 수 있습니다./data/App/에 있을 겁니다.
adb pull (location on device) (where to save)
보호된 복사 앱을 가져오려면 전화기를 루팅해야 합니다.
/data/app에서는 복사 방지를 위해 접근할 수 없을 것 같습니다.
루트가 있는 경우 루트 탐색기 앱을 다운로드합니다.루트 사용자를 위한 최상의 파일 관리자입니다.어쨌든 시스템/앱에는 전화기와 함께 제공된 기본 앱이 모두 있고, 데이터/앱에는 설치한 앱의 모든 앱이 있습니다.원하는 apk를 길게 누르면(루트 탐색기에서) /sdcard 폴더로 이동하여 붙여넣기만 하면 됩니다.
- 데이터/앱
- 시스템/앱
- 시스템/개인 앱
- mnt/acsec(sdcard에 설치된 경우)
다음 중 하나에서 .apks를 풀 수 있습니다.
adb 풀/mnt/acsec
모든 .apk를 /data/app/ 아래에 나열합니다.
adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4
.apk 파일은 /data/app/ 디렉토리에 있습니다.ES File Explorer를 사용하여 이러한 파일에 액세스할 수 있습니다.APK 파일.
만약 당신이 이클립스를 사용하고 있다면 DDMS로 이동한 다음 파일 탐색기에서 시스템/앱 폴더와 앱이 보일 것입니다.
내가 앱을 에뮬레이터에 설치했을 때, 그것은 내 .apk 파일을 보여주었습니다.
data/app 그 다음 ls data/app //를 사용하여 존재 여부를 확인했습니다.
앱을 설치한 후에는 ls 명령 vie 셸을 사용하여 원하는 디렉터리를 확인하기만 하면 되지만 설치하려는 응용 프로그램의 종류에 따라 다릅니다.저는 이 방법을 사용하여 잘못된 점이 있을 경우 Install Point를 사용했습니다.
다른 방법을 사용하여apk
루트 장치에는 rom 도구 상자가 있습니다.
앱 관리자를 사용하여 백업한 다음storage/emulated/appmanager
시스템 앱 백업 또는 사용자 앱 백업을 확인합니다.
찾기apk
Playstore에서 Bluetooth App Sender를 다운로드하여 설치합니다.설치가 완료되면 Bluetooth App Sender를 엽니다.모든 앱이 표시됩니다.(.apk)
장치에 설치하면 Bluetooth를 통해 앱을 PC로 쉽게 전송할 수 있습니다.
선택한 답변에 적힌 내용과 달리 루트가 필요하지 않고 설치된 앱의 APK를 얻을 수 있어 제가 앱(여기)에서 그렇게 했습니다.예:
List<PackageInfo> packages=getPackageManager().getInstalledPackages(0);
그런 다음 목록의 각 항목에 대해 packageInfo.applicationInfo에 액세스할 수 있습니다.sourceDir - 설치된 앱의 APK 전체 경로입니다.
- 를 설치합니다.
Total Commander
. - 을 엽니다.
Installed apps
저는 제가 좋아하는 앱을 다시 설치하고 싶어서 이 게시물에 왔습니다.이 경우 Google Play로 이동하여 My Apps(내 앱), All(모두) 탭을 찾아 원하는 앱을 다시 설치할 수 있는 방법을 수 있습니다.하나의 앱을 검색해서 찾을 수 없는 문제에 직면했지만, 그것은 내 앱에 있어서 새 모바일에 다시 설치할 수 있었습니다;)
언급URL : https://stackoverflow.com/questions/2507960/does-android-keep-the-apk-files-if-so-where
'code' 카테고리의 다른 글
그룹화 기준 및 주문 기준 (0) | 2023.08.06 |
---|---|
lodash 다중 열 정렬 기준 (0) | 2023.08.06 |
자바에서 HTML 문자 엔티티를 해제하려면 어떻게 해야 합니까? (0) | 2023.08.01 |
패키지에 나열된 모든 종속성을 제거하는 방법은 무엇입니까?json(NPM)? (0) | 2023.08.01 |
XML 파일 내용을 업데이트하는 PowerShell 스크립트 (0) | 2023.08.01 |