안드로이드 장치에서 APK 파일을 어떻게 얻습니까? 또는 apk 파일을 장치에서 시스템으로 어떻게 전송합니까?
답변
adb를 사용하십시오 . adb pull 을 사용 하면 장치가 USB로 연결되어있을 때 장치에서 시스템으로 파일을 복사 할 수 있습니다.
물론 파일이있는 디렉토리에 액세스하려면 올바른 권한이 필요합니다. 그렇지 않은 경우 먼저 장치를 루팅해야합니다.
많은 APK의 이름이 “base.apk”인 경우이 한 줄 명령을 사용하여 “base.apk”이름을 패키지 이름으로 바꾸는 동안 액세스 할 수있는 전화기에서 모든 APK를 가져올 수 있습니다. 또한 이름 뒤에 임의의 문자가있는 APK 경로에서 디렉토리를 찾을 수없는 문제를 해결합니다.
for i in $(adb shell pm list packages | awk -F':' '{print $2}'); do adb pull "$(adb shell pm path $i | awk -F':' '{print $2}')"; mv base.apk $i.apk 2&> /dev/null ;done
“adb : error : 원격 개체를 통계하지 못했습니다”가 표시되면 필요한 권한이 없음을 나타냅니다. 나는 루트가 아닌 Moto Z2에서 이것을 실행했으며 YouTube를 제외하고 제거하지 않은 모든 APK (아래 참조)를 다운로드 할 수있었습니다.
adb shell pm uninstall --user 0 com.android.cellbroadcastreceiver <--- kills presidential alert app!
(사용자가 adb shell pm list users를 실행하는 것을 볼 수 있습니다) 이것은 시스템 초기화를 포함하지 않는 거의 모든 응용 프로그램 (전화를 업데이트하는 성가신 업데이트 응용 프로그램 힌트) “ccc”를 grepping하여 찾을 수 있는지 확인하십시오.)
답변
안드로이드가 패키지 이름에 시퀀스 번호를 추가하여 최종 APK 파일 이름을 생성했기 때문에 이러한 제안 중 어느 것도 효과가 없었습니다. 최신 버전의 Android (Oreo 및 Pie)에는 예측할 수없는 임의 문자열이 추가됩니다. 다음 명령 순서는 루트 가 아닌 장치 에서 나를 위해 일한 것입니다. .
1) 앱의 패키지 이름을 결정하십시오 (예 : “com.example.someapp”). 패키지 이름을 이미 알고 있으면이 단계를 건너 뛰십시오.
adb shell pm list packages
패키지 이름 목록을 살펴보고 해당 앱과 패키지 이름이 일치하는지 확인하십시오. 일반적으로 쉽지만 패키지 이름은 앱 이름과 완전히 관련이 없을 수 있습니다. 패키지 이름 목록에서 앱을 인식 할 수없는 경우 브라우저를 사용하여 Google Play에서 앱을 찾으십시오. Google Play의 앱 URL에는 패키지 이름이 포함되어 있습니다.
2) 원하는 패키지에 대한 APK 파일의 전체 경로 이름을 가져옵니다.
adb shell pm path com.example.someapp
출력은
package : /data/app/com.example.someapp-2.apk
또는 package : /data/app/com.example.someapp-nfFSVxn_CTafgra3Fr_rXQ == / base.apk 와 유사 합니다.
3) 2 단계의 전체 경로 이름을 사용하여 APK 파일을 Android 디바이스에서 개발 상자로 가져 오십시오.
adb pull /data/app/com.example.someapp-2.apk path/to/desired/destination
답변
루트가 필요하지 않습니다 :
이 코드는 이름이 포함 된 타사 패키지 경로를 제공하므로 APK를 쉽게 식별 할 수 있습니다.
adb shell pm list packages -f -3
출력은
패키지 : /data/app/XX.XX.XX.apk=YY.YY.YY
이제 아래 코드를 사용하여 해당 패키지를 가져옵니다.
adb pull /data/app/XX.XX.XX.apk
에서 위의 cmd를 실행 C:>\
하면 해당 패키지가 있습니다.
답변
나는이 문제에 대한 많은 해결책이 전화를 뿌리거나 앱을 설치해야한다는 것을 알았습니다. 그런 다음 많은 인터넷 검색 후 뿌리가없는 / 뿌리가없는 전화에 대한 이 솔루션을 얻었습니다 .
지금까지 얻은 앱을 나열합니다.
adb shell pm list packages
그런 다음 트위터와 같은 앱을 선택할 수 있습니다
adb backup -apk com.twitter.android
여기서 중요한 것은 백업 암호화를위한 비밀번호를 설정하지 않는 것입니다
그러면 backup.ap라는 이름의 파일이 생성되지만 여전히 열 수는 없습니다. 이를 위해 dd 명령을 사용하여 다시 추출해야합니다.
dd if=backup.ab bs=24 skip=1 | openssl zlib -d > backup.tar
이 작업을 수행하면 tar 내용을 추출하기 만하면됩니다.
그것이 당신들에게 효과가 있기를 바랍니다.
답변
장치에서 데스크톱으로 APK를 다운로드하는 단계
A) 실행 중인지 확인하십시오 (에뮬레이터 / 실제 장치). 이 명령을 사용하여 확인하려면
adb devices
B) 장치에 설치된 사용 가능한 패키지 목록을 모두 선택하십시오. grep 명령을 사용하여 다운로드하려는 특정 패키지를 선택할 수 있습니다.
adb shell pm list packages
adb shell pm list packages -f -3
출력 (사용 가능한 패키지 목록)
package:/data/app/com.example.mytestapplication-sOzKi5USzfbYLPNDmaaK6g==/base.apk=com.example.mytestapplication
package:/data/app/com.example.myapplication-nd1I4FGnTZnQ9PyRbPDHhw==/base.apk=com.example.myapplication
C) 위의 링크에서 패키지 (다운로드하려는 )를 복사하십시오. 이 사례 (com.example.myapplication) 패키지를 선택하십시오.
Syntax : adb shell pm path [your_package_name]
Command: adb shell pm path com.example.myapplication
산출
package:/data/app/com.example.myapplication-nd1I4FGnTZnQ9PyRbPDHhw==/base.apk
D) 마지막으로 (에뮬레이터 / 실제 장치)에서 APK를 다운로드하려면
Syntax : adb pull /data/app/[your_package_name]-1/base.apk [your_destination_path]
Command: adb pull /data/app/com.example.myapplication-3j4CVk0Tb2gysElgjz5O6A==/base.apk /Users/$(whoami)/Documents/your_apk.apk
예 : 로컬 컴퓨터에서이 CertInstaller.apk 파일을 가져 오려고합니다 (Mac)
adb pull /system/app/CertInstaller/CertInstaller.apk /Users/$(whoami)/Documents/APK/download_apk/
E) 로컬 디렉토리에서 확인
ls -la /Users/$(whoami)/Documents/
답변
C:\Users\xyz>adb shell pm list packages -f | findstr whatsapp
package:/data/app/com.whatsapp-1/base.apk=com.whatsapp
C:\Users\xyz>adb pull /data/app/com.whatsapp-1/base.apk Desktop
/data/app/com.whatsapp-1/base.apk: 1 f.... 13.8 MB/s (32803925 bytes in
2.269s)
답변
모든 안드로이드 버전에서 작동하는 하나의 라이너 :
adb shell 'cat `pm path com.example.name | cut -d':' -f2`' > app.apk