Android .apk dosyalarını saklıyor mu? eğer öyleyse nerede?


187

Android Marketplace'ten bir uygulama yükledikten sonra .apk dosyasını saklıyor mu?

Android'in bu tür dosyaları tutacağı standart bir yer var mı?

Yanıtlar:


125

Önceden kurulmuş uygulamalar /system/appklasördedir. Kullanıcı tarafından yüklenen uygulamalar var /data/app. Köklü bir telefonunuz olmadığı sürece erişemezsiniz. Ben burada köklü bir telefon yok ama bu kodu deneyin:

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]);

        }
    }

Köklü htc sihrimdeki ve emu'daki apksları listeler.


Bu, Motorola Droid ve hem Nexus One'da hem de Köklü Olmayan bir Çekicilik gibi çalıştı.
Gubatron

Tamam, asla ne istediğini
söylemedin

Onları okuyabilmek ve onlarla bir şeyler yapmak istiyorum. Neyse ki okunabilirler.
Gubatron

3
İyi olan şey, sadece dosyaların "okunabilir" olması değil, okunabilir olmalarıdır, bu yüzden amacımla uyumlu olacaklardır.
Gubatron

Başka bir yerde / data / app içindeki APK'ların yalnızca Play Store'dan indirilen uygulamalara karşılık geldiğini okudum. Bu doğru mu veya kullanıcının yüklediği herhangi bir şeyi içeriyor mu?
Christian

135

Paketleri listelemek için paket yöneticisini ( pm) kullanabilirsiniz adb shell:

adb shell pm list packages | sort

ve .apkdosyanın nerede olduğunu görüntülemek için:

adb shell pm path com.king.candycrushsaga
package:/data/app/com.king.candycrushsaga-1/base.apk

Ve adb pullapk'yi indirmek için.

adb pull data/app/com.king.candycrushsaga-1/base.apk

2
Her uygulamanın adı paket adıyla aynı olan ancak sonunda '-1' veya '-2' olan bir klasör vardır.
shadygoneinsane

Hedef dosya yolunu veya adını belirtmek içinadb pull /data/app/com.example.app-filename.apk path/to/desired/destination
manikanta

95

Daha önce yüklediğiniz bir şeyin APK dosyasını almak istiyorsanız, bunu yapın:

  1. Google Play'den AirDroid'i edinin
  2. PC web tarayıcınızdan AirDroid'i kullanarak telefonunuza erişin
  3. Uygulamalara gidin ve yüklü uygulamayı seçin
  4. Bu uygulamanın APK sürümünü telefonunuzdan indirmek için "indir" düğmesini tıklayın

Telefonunuzu rootlamanıza, adbherhangi bir şey kullanmanıza veya bir şey yazmanıza gerek yoktur.


2
Bu soruya gerçekten cevap vermediği için indirildi. OP ADB'yi kullanmak istiyorsa, bu nedenle hata ayıklamanın yetkilendirildiği, ancak parolanın unutulduğu veya ekranın kırıldığı cihazlarda kullanılabilir.
Hack5

Köklü cihaz için apk dosyasını almanın daha kolay yolu.
fahmi hammadi

Teşekkürler. Upvoted neden bir şekilde söyleyerek soruyu ansers: "Onları / veri tutar, ama sadece X yordamı
uygularsanız

26

Standart bir konum yoktur, ancak paketleri ve oradan alabileceğiniz ApplicationInfo sınıfını öğrenmek için PackageManager'ı kullanabilirsiniz: belirli bir paket hakkında çeşitli bilgiler vardır: .apk yolu, veri dizini yolu, yol yalnızca ileri kaynak kodlu bir .apk dosyasına (ileri kilitli uygulamalar için) vb. ancak, tüm uygulamalar .apk kaynağını okuyabilir (bu aynı zamanda ileri kilitlenmemiş uygulama için gerçek .apk).

Sadece kabukta dolaşıyorsanız, şu anda ileriye dönük kilitli olmayan uygulamalar /data/app/.apk içinde bulunur. Kabuk kullanıcısı dizini listeleyemese de belirli bir .apk dosyasını okuyabilir. Gelecekteki bir sürümde, adlandırma kuralı biraz değişecektir, bu yüzden aynı kaldığına güvenmeyin, ancak .apk'nin yolunu paket yöneticisinden alırsanız, kabukta kullanabilirsiniz.


2
"ileri kilitli uygulama" nedir?
Tony Chan

1
.Apk dosyasını yalnızca bu uygulamanın okumasına izin veren izinlerle yükleyen eski bir kopya koruma mekanizmasıdır.
hackbod

18

Önceden Yüklenmiş Uygulamalar genellikle / system / app ve kullanıcı tarafından yüklenen uygulamalar / data / app dizinindedir.

"Adb pull" kullanabilirsiniz, ancak APK dosyasının tam yolunu bilmeniz gerekir. Emülatörde, "adb shell" + "ls" kullanarak bir dizin listesi alabilirsiniz. Ancak bir android cihazda, güvenlik nedenleriyle bunu "/ data" klasöründe yapamazsınız. Peki APK dosyasının tam yolunu nasıl buluyorsunuz?

PackageManager'ı sorgulayan bir program yazarak yüklenen tüm uygulamaların tam listesini alabilirsiniz. Aşağıdaki kısa kod snippet'i:

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
}

Bu bilgileri verecek uygulamaları da bulabilirsiniz. Onlardan çok var. Bunu deneyin (AppSender).


9

Belirli bir uygulamanın yolunu arıyorsanız, hızlı ve kirli bir çözüm hata raporunu grep etmektir:

$ adb bugreport | grep 'dir=/data/app' 

Bunun kapsamlı bir liste sağlayacağını bilmiyorum, bu yüzden önce uygulamayı çalıştırmanıza yardımcı olabilir.


9

Market'ten yükleyin

Kurulumdan sonra apk'yi tutup tutmamak pazarın davranışıdır. Google play, kurulumdan sonra apk'yi tutmaz. Diğer üçüncü taraf pazar yerleri farklı davranışlara sahip olabilir.

Geliştirme / hata ayıklama aracından yükleme (adb, eclipse, android studio)

APK'yı hata ayıklama aracından yüklediğimizde, doğrudan çağırın adb install veya eclipse / android studio'danadb push genellikle genel bir okuma ve yazılabilir dizine aktarılır ( ) /data/local/tmp/. Bundan sonra, araç pmyüklemek için komutu kullanacak /data/local/tmp/, başarılı kurulumdan sonra geçici apk'yi silecektir .

Bu bilgileri aşağıdaki gibi hata ayıklama çıktısından alabiliriz.

$ adb install bin/TestApplication.apk 
3155 KB/s (843375 bytes in 0.260s)
    pkg: /data/local/tmp/TestApplication.apk
Success

Sistem apk'yi nasıl tutar?

Tabii ki sistem tüm apks'leri bir yerde saklamak zorunda. Sistemin, farklı uygulama türlerine dayalı olarak uygulamaları saklaması için üç yer vardır:

  1. stok uygulaması için

    Bunlar genellikle sistemde çalışan çekirdek uygulaması ve google hizmeti de dahil olmak üzere üretime göre cihazda gönderilir, bunları dizin /system/appve altında bulabilirsiniz /system/priv-app.

  2. kullanıcı tarafından yüklenen uygulama

    Uygulamaların çoğu bu kategoriye girer. Bu uygulamalar genellikle kullanıcılar tarafından adb installveya -sseçenek olmadan piyasadan yüklenir . Bunları /data/appköklü bir aygıtın dizininde bulabilirsiniz .

  3. sdcard uygulaması

    APK android:installLocation="auto", manifest'te sdcard'da kurulum konumunu etkinleştirirse , uygulama sistemin uygulama yöneticisi menüsünden sdcard'a taşınabilir. Bu uygulamalar genellikle sdcard'ın güvenli klasöründe bulunur /mnt/sdcard/asec.

    Yükleme konumunu sdcard'a zorlamanın başka bir yolu komutu kullanmaktır adb install -s apk-to-install.apk.

Not olarak, önceden yüklenmiş uygulama .apkdosyaları artık tek bir dosyada değil. Dizine önceden yüklenmiş her uygulama /system/appveya /system/priv-appen yeni android sürümü için dosyaları içeren bir klasör var .


8

ADB ile uygulama çekebilirsiniz. Onlar / data / App /, inanıyorum.

adb pull (location on device) (where to save)

Kopyalamaya karşı korumalı uygulamaları çekmek için telefonunuzu rootlamanız gerektiğini unutmayın.


5

/ Data / app uygulamasında ancak kopya koruması için ona erişebileceğinizi sanmıyorum.


2
Peki, APK'yı bluetooth ile paylaşmaya izin veren bir uygulama tam olarak nasıl çalışır? Nasıl yapıyorlar?
SO Kullanıcısı

5

Köklendirildiyseniz, Root Explorer uygulamasını indirin. Köklü kullanıcılar için en iyi Dosya yöneticisi. Her neyse, Sistem / uygulama, telefonla birlikte gelen tüm varsayılan uygulamalara ve veri / apk, yüklediğiniz uygulamaların tüm uygulamalarına sahiptir. İstediğiniz apk'ye uzun süre basın (Root Explorer'da), / sdcard klasörünüze gidin ve yapıştırın.


4

/ Data / app / altındaki tüm .apks'ları listelemek için bunu kullanın

adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4

4
  • Veri / uygulama
  • Sistem / uygulama
  • Sistem / priv-Uygulama
  • mnt / asec (sdcard'a kurulduğunda)

.Apks'leri bunlardan herhangi birinden alabilirsiniz:

adb pull / mnt / asec


3

.apk dosyaları / data / app / directory altında bulunabilir. ES Dosya Gezgini'ni kullanarak bu .APK dosyalarına erişebiliriz.


2

eclipse goto DDMS kullanıyorsanız ve sonra dosya gezgini kullanıyorsanız System / Apps klasörünü göreceksiniz ve apks orada


0

Uygulamamı emülatöre yüklediğimde, .apk dosyamı gösterdi

data / app Sonra var olup olmadığını görmek için ls data / app // kullandım

Uygulamanızı yükledikten sonra ls command vie shell kullanın ve istediğiniz dizini kontrol edin, ancak yüklemeye çalıştığınız uygulamanın türüne bağlıdır. Yanlış bir şey varsa bu yöntemi Install Point'e kullandım .


Ben de apks bulmak için çalışıyorum ama bulduğum tüm apks bulamıyor böylece köklendirme yöntemi öneririz. Yüklü tüm apks alamadım. Bu yüzden telefonunuzu rootlamak ve Titanium Backup'ı kullanarak tüm uygulamaları almak ve telefonunuz üzerinde daha fazla kontrol elde etmek daha iyidir.
Jawad Amjad

0

apkKöklü bir cihazda bulamayacağınız s'yi almanın başka bir yolu rom alet kutusu ile .

Uygulama yöneticisini kullanarak yedekleme yapın storage/emulated/appmanagerve sistem uygulaması yedeklemesini veya kullanıcı uygulaması yedeklemesini kontrol edin .


0

Bulmak apkiçin Bluetooth App Sender'ı Play Store'dan indirin ve yükleyin. Kurulum tamamlandığında Bluetooth App Sender'ı açın. (.apk)Cihazınızda yüklü olan tüm uygulamaları gösterecek , daha sonra uygulamayı Bluetooth üzerinden kolayca PC'nize aktarabilirsiniz.


0

Seçilen cevapta yazılanların aksine, root'a ihtiyacınız yoktur ve yüklü uygulamaların APK'larını almak mümkündür, bu yüzden bunu uygulamamda ( burada ) yaptım . Misal:

List<PackageInfo> packages=getPackageManager().getInstalledPackages(0);

Ardından, listedeki her öğe için , yüklü uygulamanın APK'sının tam yolu olan packageInfo.applicationInfo.sourceDir'e erişebilirsiniz .


-1

Ben çok sevdim bazı uygulamayı yeniden yüklemek istedim çünkü bu yazı geldi. Durum buysa, Google Play'e gidin ve Uygulamalarım'ı, Tümü sekmesini arayın; beğendiğiniz bir uygulamayı yeniden yüklemenin bir yolunu bulacaksınız. Bir uygulamayı arayarak bulamadığım bir sorunla karşılaştım, ancak yeni cep telefonuma yeniden yükleyebilmem için Uygulamalarım'da vardı;)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.