Jawaban:
Aplikasi yang sudah diinstal sebelumnya ada di /system/app
folder. Aplikasi yang diinstal oleh pengguna berada di /data/app
. Saya kira Anda tidak dapat mengakses kecuali Anda memiliki ponsel yang di-rooting. Saya tidak memiliki ponsel yang di-rooting di sini tetapi coba kode ini:
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]);
}
}
Itu memang mencantumkan apks di magic htc saya yang telah di-root dan di emu.
Anda dapat menggunakan manajer paket ( pm
) adb shell
ke daftar paket:
adb shell pm list packages | sort
dan untuk menampilkan di mana .apk
file tersebut:
adb shell pm path com.king.candycrushsaga
package:/data/app/com.king.candycrushsaga-1/base.apk
Dan adb pull
untuk mengunduh apk.
adb pull data/app/com.king.candycrushsaga-1/base.apk
adb pull /data/app/com.example.app-filename.apk path/to/desired/destination
Jika Anda hanya ingin mendapatkan file APK dari sesuatu yang sebelumnya Anda instal, lakukan ini:
Anda tidak perlu me-root ponsel Anda, menggunakan adb
, atau menulis apa pun.
Tidak ada lokasi standar, namun Anda dapat menggunakan PackageManager untuk mencari tahu tentang paket dan kelas ApplicationInfo yang bisa Anda dapatkan dari sana memiliki berbagai informasi tentang paket tertentu: path ke .apk, path ke direktori datanya, path ke .apk khusus sumber daya (untuk aplikasi yang dikunci ke depan), dll. Perhatikan bahwa Anda mungkin atau mungkin tidak memiliki izin untuk membaca direktori ini tergantung pada hubungan Anda dengan aplikasi lain; namun, semua aplikasi dapat membaca resource .apk (yang juga merupakan .apk nyata untuk aplikasi yang tidak dikunci).
Jika Anda hanya mencari-cari di dalam shell, aplikasi yang saat ini tidak dikunci terletak di /data/app/.apk. Pengguna shell dapat membaca .apk tertentu, meskipun ia tidak dapat mencantumkan direktori. Dalam rilis mendatang konvensi penamaan akan diubah sedikit, jadi jangan berharap tetap sama, tetapi jika Anda mendapatkan jalur .apk dari manajer paket maka Anda dapat menggunakannya dalam shell.
Aplikasi pra-instal biasanya di / sistem / aplikasi dan aplikasi yang diinstal pengguna di / data / aplikasi.
Anda dapat menggunakan "adb pull", tetapi Anda harus mengetahui path lengkap file APK. Pada emulator, Anda bisa mendapatkan daftar direktori menggunakan "adb shell" + "ls". Tetapi pada perangkat android, Anda tidak akan dapat melakukannya di folder "/ data" karena alasan keamanan. Jadi bagaimana Anda mengetahui path lengkap file APK?
Anda bisa mendapatkan daftar lengkap semua aplikasi yang diinstal dengan menulis program yang menanyakan PackageManager. Cuplikan kode pendek di bawah ini:
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
}
Anda juga dapat menemukan aplikasi yang akan memberikan info tersebut. Ada banyak dari mereka. Coba yang ini (AppSender).
Jika Anda mencari jalur aplikasi tertentu, solusi cepat dan kotor adalah dengan hanya menerima laporan bug:
$ adb bugreport | grep 'dir=/data/app'
Saya tidak tahu bahwa ini akan memberikan daftar lengkap, jadi mungkin membantu menjalankan aplikasi terlebih dahulu.
Instal dari pasar
Ini adalah perilaku marketplace apakah akan menjaga apk setelah instalasi. Google play tidak menyimpan apk setelah instalasi. Pasar pihak ketiga lainnya mungkin memiliki perilaku yang berbeda.
Instal dari alat pengembangan / debug (adb, eclipse, android studio)
Ketika kita menginstal apk dari alat debug, secara langsung memanggil adb install
atau dari eclipse / android studio, apk akan ditransfer ( adb push
) ke direktori baca publik dan dapat ditulis, biasanya /data/local/tmp/
. Setelah itu, alat akan menggunakan pm
perintah untuk menginstal, itu akan menghapus apk sementara di/data/local/tmp/
setelah instalasi berhasil.
Kami bisa mendapatkan informasi ini dari hasil debug seperti berikut.
$ adb install bin/TestApplication.apk
3155 KB/s (843375 bytes in 0.260s)
pkg: /data/local/tmp/TestApplication.apk
Success
Bagaimana sistem menjaga apk
Tentu saja sistem harus menyimpan semua aplikasi di suatu tempat. Ada tiga tempat bagi sistem untuk menjaga apks berdasarkan berbagai jenis apks:
untuk aplikasi stok
Itu biasanya dikirim dalam perangkat oleh manufaktur, termasuk aplikasi inti untuk menjalankan sistem dan layanan google, Anda dapat menemukannya di bawah direktori /system/app
dan /system/priv-app
.
aplikasi yang dipasang pengguna
Sebagian besar aplikasi masuk dalam kategori ini. Apks ini biasanya dipasang dari pasar oleh pengguna atau adb install
tanpa -s
opsi. Anda dapat menemukannya di bawah direktori /data/app
untuk perangkat yang di-rooting.
aplikasi di sdcard
Jika apk mengaktifkan lokasi instalnya di sdcard dengan manifesnya android:installLocation="auto"
, aplikasi dapat dipindahkan ke sdcard dari menu manajer aplikasi sistem. Apks ini biasanya terletak di folder sdcard yang aman /mnt/sdcard/asec
.
Cara lain untuk memaksa lokasi instalasi ke sdcard adalah dengan menggunakan perintah adb install -s apk-to-install.apk
.
Sebagai catatan, file untuk aplikasi pra-instal tidak ada dalam satu .apk
file lagi. Ada folder yang berisi file untuk setiap aplikasi pra-instal di direktori /system/app
atau /system/priv-app
untuk rilis android terbaru.
Anda dapat menarik aplikasi dengan ADB. Mereka ada di / data / App /, saya percaya.
adb pull (location on device) (where to save)
Perhatikan bahwa Anda harus melakukan root pada ponsel Anda untuk menarik aplikasi yang dilindungi salinan.
Dalam / data / aplikasi tetapi untuk perlindungan salinan Saya rasa Anda tidak dapat mengaksesnya.
Jika Anda di-root, unduh aplikasi Root Explorer. Manajer file terbaik untuk pengguna yang di-rooting. Bagaimanapun, Sistem / aplikasi memiliki semua aplikasi default yang datang dengan telepon, dan data / apk memiliki semua aplikasi aplikasi yang telah Anda instal. Cukup tekan lama pada apk yang Anda inginkan (saat di Root Explorer), buka folder / sdcard Anda dan cukup tempel.
jika Anda menggunakan eclipse goto DDMS dan kemudian file explorer di sana Anda akan melihat folder System / Apps dan apks ada di sana.
Ketika saya menginstal aplikasi saya di emulator, itu menunjukkan file .apk saya di
data / app Lalu saya menggunakan data / app ls // untuk melihat apakah ada atau tidak
Setelah Anda menginstal aplikasi Anda cukup gunakan ls command vie shell dan periksa direktori yang diinginkan tetapi itu tergantung pada jenis aplikasi yang Anda coba instal. Saya menggunakan metode ini untuk Menginstal Point jika ada sesuatu yang salah.
Cara lain untuk mendapatkan yang apk
tidak dapat Anda temukan, pada perangkat yang di-rooting adalah dengan kotak alat rom .
Buat cadangan menggunakan pengelola aplikasi kemudian buka storage/emulated/appmanager
dan periksa apakah cadangan aplikasi sistem atau cadangan aplikasi pengguna .
Untuk menemukan apk
, unduh dan Instal Pengirim Aplikasi Bluetooth dari Play store. Setelah instalasi selesai, buka Pengirim Aplikasi Bluetooth. Ini akan menunjukkan semua aplikasi yang (.apk)
diinstal di perangkat Anda, maka Anda dapat dengan mudah mentransfer aplikasi ke PC Anda melalui Bluetooth.
Berbeda dengan apa yang tertulis pada jawaban yang dipilih, Anda tidak perlu root dan dimungkinkan untuk mendapatkan APK dari aplikasi yang diinstal, yang merupakan cara saya melakukannya pada aplikasi saya (di sini ). Contoh:
List<PackageInfo> packages=getPackageManager().getInstalledPackages(0);
Kemudian, untuk setiap item dalam daftar, Anda dapat mengakses packageInfo.applicationInfo.sourceDir , yang merupakan jalur lengkap APK dari aplikasi yang diinstal.
Yah saya datang ke posting ini karena saya ingin menginstal ulang beberapa aplikasi yang saya sukai. Jika ini kasus Anda, buka Google Play, dan cari Aplikasi Saya, tab Semua, dan Anda akan menemukan cara untuk menginstal ulang beberapa aplikasi yang Anda sukai. Saya menghadapi masalah yang tidak dapat saya temukan dengan mencari satu aplikasi, tetapi ada di aplikasi saya sehingga saya bisa menginstal ulang di ponsel baru saya;)