回答
預安裝的應用程序位於/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 Magic和鴯鶓的的apk。
在/數據/應用程序,但複製保護我不認爲你可以訪問它。
那麼,通過藍牙允許共享APK的應用程序究竟如何工作?他們是如何做到的呢? – 2014-09-27 08:19:03
您可以使用ADB提取應用程序。他們在/ data/App /中,我相信。
adb pull (location on device) (where to save)
請注意,您必須根據您的手機拉動受複製保護的應用程序。
沒有標準位置,但是您可以使用PackageManager查找有關包的信息,並且您可以從中獲取的ApplicationInfo類具有有關特定包的各種信息:.apk路徑,其數據路徑目錄,僅資源.apk(用於轉發鎖定的應用程序)的路徑等。請注意,根據您與其他應用程序的關係,您可能有也可能沒有權限讀取這些目錄;但是,所有應用程序都能夠讀取資源.apk(這也是非前向鎖定應用程序的實際.apk)。
如果您只是在shell中探索,目前非向前鎖定的應用程序位於/data/app/.apk。 shell用戶可以讀取特定的.apk,但它不能列出目錄。在將來的版本中,命名約定會稍微改變,所以不要指望它保持不變,但是如果從包管理器中獲得.apk的路徑,則可以在shell中使用它。
什麼是「前進鎖定應用程序」? – 2012-05-04 19:55:45
這是一箇舊的複製保護機制,它安裝了帶有隻允許該應用程序讀取它的權限的.apk。 – hackbod 2012-05-13 16:35:39
當我安裝我的模擬器的應用程序,它顯示我的.apk文件中
數據/應用 然後我用 LS數據/應用//看看是否存在或不
安裝完應用程序後,只需使用ls命令vie shell並檢查所需的目錄,但這取決於您嘗試安裝的應用程序類型。我用這個方法去Install 如果有什麼事情是錯的話點。
我也試圖找到apks,但我發現的是,你不能找到所有的apks因此我建議的生根方法。我無法獲得所有安裝的apks。因此,最好根植您的手機,並使用Titanium Backup獲取所有文件,並獲得對手機的更多控制權。 – 2011-10-28 12:46:27
如果您已經紮根,請下載應用程序Root Explorer。最佳文件管理器,用於有根用戶。 無論如何,系統/應用程序具有手機隨附的所有默認功能,而數據/ apk包含您已安裝的所有應用程序的所有功能。只需長按你想要的apk(在Root Explorer中),進入你的/ sdcard文件夾並粘貼即可。
預安裝的應用程序通常位於/ system/app中,用戶安裝的應用程序位於/ data/app中。
您可以使用「adb pull」,但您需要知道APK文件的完整路徑。在模擬器上,您可以使用「adb shell」+「ls」獲取目錄列表。但在Android設備上,由於安全原因,您無法在「/ data」文件夾中執行此操作。那麼如何找出APK文件的完整路徑?
通過編寫查詢PackageManager的程序,您可以獲得安裝的所有應用程序的完整列表。下面的短代碼片段:
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
}
您還可以找到將提供此類信息的應用程序。有很多。 Try this one (AppSender).
,如果使用的是Eclipse轉到DDMS,然後資源管理器在那裏你會看到系統/應用程序文件夾和的APK有
如果你只是想了解你以前安裝的東西的APK文件,這樣做:
- 得到谷歌AirDroid播放
- 訪問使用AirDroid從您的電腦網絡瀏覽器手機
- 轉到應用和選擇安裝的應用程序
- 點擊「下載」按鈕,從您的手機
你並不需要Root權限的手機,使用adb
,或寫什麼下載這個應用程序的APK版本。
在osx上也很棒,謝謝! – jamescampbell 2017-10-14 20:16:35
Downvoted,因爲這並沒有真正回答這個問題。如果OP想要使用ADB,那麼它可以在授權調試的設備上使用,但忘記密碼或屏幕破裂。 – Penn 2017-10-18 18:53:10
如果你正在尋找一個特定的應用程序的路徑,一個快速和骯髒的解決方法就是用grep的錯誤報告:
$ adb bugreport | grep 'dir=/data/app'
我不知道,這將提供一個詳盡的清單,所以它可能有助於首先運行該應用程序。
使用此列出所有.apks在/ data/app中/
adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4
另一種方式來獲得apk
是你無法找到,在紮根設備是ROM工具箱。
使用應用程序管理器,然後去storage/emulated/appmanager
和檢查或者系統的應用程序備份或用戶的應用程序備份做一個備份。
要找到apk
,請從Play商店下載並安裝藍牙應用程序發件人。安裝完成後,打開藍牙應用程序發件人。它將顯示安裝在您設備上的所有應用程序(.apk)
,然後您可以通過藍牙輕鬆將應用程序傳輸到您的PC。
您可以使用包管理器(pm
)在adb shell
列出包:
adb shell pm list packages
,並顯示在.apk
文件是:
adb shell pm path com.king.candycrushsaga
package:/data/app/com.king.candycrushsaga-1/base.apk
而且adb pull
下載APK。
adb pull data/app/com.king.candycrushsaga-1/base.apk
這應該是被接受的答案。 – 2016-06-28 00:33:24
很棒的回答。這是一種魅力。 – 2016-07-21 13:02:19
應該被接受 – Penn 2017-10-18 18:53:29
就象反對的書面所選擇的答案,你並不需要root並且可以得到安裝的應用程序的APK的,這是多麼我已經做到了我的應用程序(here) 。例如:
List<PackageInfo> packages=getPackageManager().getInstalledPackages(0);
然後,每個列表的項目,您可以訪問packageInfo.applicationInfo.sourceDir,這是安裝的應用程序的APK的完整路徑。
從市場
安裝這是市場是否保留APK安裝後的行爲。安裝後,Google Play不會保留apk。其他第三方市場可能有不同的行爲。
從開發/調試工具(ADB,日食,機器人工作室)安裝
當我們安裝從調試工具的APK,直接調用adb install
或日食/ Android的工作室,在APK將被轉移(adb push
)到公共的可讀寫目錄,通常爲/data/local/tmp/
。之後,該工具將使用pm
命令進行安裝,它將在安裝成功後刪除臨時apk /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地方。系統有三個地方可以讓apks在不同類型的apks上保持基本。
- 股票應用
這些通常是由製造運設備,包括系統運行和谷歌服務的核心應用程序,你可以在目錄/system/app
和/system/priv-app
找到他們。
- 用戶安裝的應用
- 應用程序,該應用程序可以被移動從系統的應用程序管理器菜單到SD卡。這些apks通常位於sdcard
/mnt/sdcard/asec
的安全文件夾中。另一種強制安裝位置到SD卡的方法是使用命令
adb install -s apk-to-install.apk
。請注意,預安裝應用程序的文件不再在單個
.apk
文件中。有一個文件夾包含目錄/system/app
或/system/priv-app
中最新的android版本中每個預裝應用程序的文件。
大多數的apk的屬於這一類。這些功能通常由用戶通過市場進行安裝,或者在沒有-s
選項的情況下通過adb install
進行安裝。您可以在目錄/data/app
的根目錄設備下找到它們。
-
上SD卡
如果APK使其與在其清單android:installLocation="auto"
SD卡安裝位置
- 數據/應用
- 系統/應用
- 系統/ PRIV應用內
- MNT/ASEC(安裝在SD卡時)
可以從任何的拉.apks他們:
adb pull/mnt/asec
從[AndroidAPKsGet](http://androidapksget.blogspot.com)下載android apk文件。 – NomanJaved 2017-11-04 23:42:58
.apk文件可以位於/ data/app /目錄下。使用ES文件瀏覽器我們可以訪問這些.APK文件。
嗯,我來到這篇文章,因爲我想重新安裝一些我很喜歡的應用程序。 如果這是您的情況,只需轉到Google Play,然後查找「我的應用程序」,選項卡全部,然後您將找到重新安裝您喜歡的某個應用程序的方法。我遇到了一個我無法通過搜索一個應用程序找到的問題,但它存在於我的應用程序中,因此我可以在我的新手機中重新安裝;)
- 1. hibernate是否保留LinkedHashSet的順序,如果是這樣,怎麼辦?
- 2. 是否可以使用python創建.mobi文件?如果是這樣,怎麼樣?
- 3. Android:是否可以檢查該文件是否是一個apk文件,如果沒有擴展提供
- 4. Rails是否需要保留json.jbuilder文件
- 5. 這是否會導致保留週期?
- 6. clojure是否允許線延續?如果是這樣,怎麼樣?
- 7. 如果這是開啓,這不是,但如果是這樣,這不是
- 8. 是否可以使用Mercurial將元信息放入文件中?如果是這樣的話?
- 9. 逐行比較文件以查看它們是否相同,如果是這樣的話輸出它們
- 10. 在另一個apk文件中保留一個apk文件
- 11. 是否有意義擁有基礎服務,如果是這樣的話,這是一個很好的方法嗎?
- 12. 如果您有IBOutlet,但不是屬性,是否保留?
- 13. 「初始化」,這是保留
- 14. 是否有.apk文件的IOS
- 15. 保護Android Apk文件
- 16. Android apk文件保護
- 17. 這是可能鎖定鼠標沿路徑,如果是這樣的話?
- 18. 如何知道一個.apk文件是否可以在android
- 19. 這個JSON是否正確,如果是這樣的話如何遍歷JavaScript中的每個對象 - Asp .Net 3.5
- 20. JNI是否能夠保護apk文件中的源代碼(classes.dex)?
- 21. 檢查用戶名是否存在,如果是這樣,一個
- 22. NSView是否有backgroundColor?如果是這樣,我找不到它
- 23. ç打開文件來檢查它是否是二進制的,如果是這樣打印是二進制
- 24. 保留UITouch:是否允許?
- 25. NSUndoManager是否保留對象?
- 26. Viewstate是否保留歷史
- 27. [NSStream scheduleInRunLoop:forMode:]是否保留NSStream?
- 28. NSTimer是否自動保留?
- 29. 不[UIWindow addSubView:]是否保留?
- 30. control-b:是否保留?
這工作就像在摩托羅拉Droid魅力和Nexus One兩個都沒有根。 – Gubatron 2010-03-25 18:12:39
好吧,你從來沒有說過你想要他們:) – Macarse 2010-03-26 01:11:35
我希望能夠閱讀他們,並與他們做事。幸運的是它們是可讀的。 – Gubatron 2010-03-26 14:34:28