にどのようにそれらのapkファイルからAndroidデバイス?
質問
どのようにして求めるのですかapkファイルからandroidデバイス?または方法のapkファイルデバイスからシステム?
解決
使用 adb.と adbプル で、複写することができますファイルからデバイスシステム、装置の付いたUSBコードで接続し、メニューバー
皆さんの中にも必要である右のアクセス権をアクセスのディレクトリにファイルです。そうでない場合は、必要なものを根の装置です。
だが多くのAPKsの名の通り"。apk"も利用できますこのコマンドライン引きすべてのAPKsオフ電話アクセスできますが名を変更したいの"ベース。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:エラー:たstatリモートオブジェクト"を示すものをいい、必要なアクセス権を表します。またこれ以外の根元Z2することができたダウンロードのすべてのAPKsなかったのアンインストール(以下参照)を除きます。
adb shell pm uninstall --user 0 com.android.cellbroadcastreceiver <--- kills presidential alert app!
(ユーザー走行adb shell pmリストユーザー) この方法を教えてくインストール-アンインストール(ないから電話としても工場リセットすることはほとんどな 他の アプリトールを含むシステムアプリケーションでヒントに迷惑の更新アプリの更新のお電話をさせていることができgreppingのための"ccc")
他のヒント
Androidは、最終的なAPKファイル名を生成するために、パッケージ名にシーケンス番号を付加したため、私のために働いたこれらの提案のなし。アンドロイド(オレオとパイ)の最近のバージョンでは、予測不可能なランダムな文字列が付加されます。
:次のコマンドシーケンスは、を非根ざしたデバイスの上で私のために働いていたものです1)アプリケーションのパッケージ名を確認し、例えば"com.example.someapp"。場合は、このステップをスキップ 既にパッケージ名を知っています。
adb shell pm list packages
パッケージ名のリストに目を通すと、問題のアプリとパッケージ名との間の一致を探してみてください。これは簡単に通常ですが、パッケージ名はアプリ名に完全に無関係であることに注意してください。あなたは、パッケージ名のリストからアプリを認識できない場合は、ブラウザを使用してGoogle Playの中でアプリを探してみてください。 Google Playでアプリ内のURLは、パッケージ名が含まれています。
2)目的のパッケージのためのAPKファイルのフルパス名を取得します。
adb shell pm path com.example.someapp
出力は
のようになります。
のパッケージ:/data/app/com.example.someapp-2.apk の
または
のパッケージ:/data/app/com.example.someapp-nfFSVxn_CTafgra3Fr_rXQ == / base.apk の
3)ステップ2からのフルパス名を使用して、開発ボックスにAndroidデバイスからAPKファイルを引き出します。
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
あなたはC:>\
にcmdと上に実行された場合、、あなたはそこにそのパッケージを見つけるでしょう。
私は、この問題に対する多くの解決策は、あなたの携帯電話を根絶しなければならないのいずれか、またはアプリをインストールする必要があることを見てきました。そして、グーグルで多くの後、私は非根ざし/根ざし電話向けの本の解決策を得た。の
あなたがこれまでに得たアプリ一覧へます。
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
この後、すべてあなたがしなければならないがタール含有量を抽出することであり、それが行われています。
ホープそれはあなたたちのために働く。
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)
すべてのAndroidのバージョンで動作しますワンライナーます:
adb shell 'cat `pm path com.example.name | cut -d':' -f2`' > app.apk
@Yojimboの答えを完了し、これは私がやったことである(のLinux / Macは唯一、多分にgitのbashシェルに... Windows上で箱から出して動作しません):
for i in $(adb shell pm list packages -f -3 | cut -d= -f 1 | cut -d ":" -f 2); do adb pull $i; done
これは醜いbashのですが、動作します。)
編集: それはもはやAndroidMで動作しません:すべてのファイルを別のディレクトリの下に「base.apk」と命名されています。修正に「ささいな」である必要があります。
Unixシステムを試すことができますこの機能:
function android_pull_apk() {
if [ -z "$1" ]; then
echo "You must pass a package to this function!"
echo "Ex.: android_pull_apk \"com.android.contacts\""
return 1
fi
if [ -z "$(adb shell pm list packages | grep $1)" ]; then
echo "You are typed a invalid package!"
return 1
fi
apk_path="`adb shell pm path $1 | sed -e 's/package://g' | tr '\n' ' ' | tr -d '[:space:]'`"
apk_name="`adb shell basename ${apk_path} | tr '\n' ' ' | tr -d '[:space:]'`"
destination="$HOME/Documents/Android/APKs"
mkdir -p "$destination"
adb pull ${apk_path} ${destination}
echo -e "\nAPK saved in \"$destination/$apk_name\""
}
- 例:
android_pull_apk com.android.contacts
- 注意:特定のパッケージ:
adb shell pm list packages
手順のダウンロード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.例です。myapplication)パッケージ
Syntex: 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から(エミュレーター/ブルーレイディス)
Syntex: 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/
としては、あなたがADBにプルコマンドを使用してAPKを得ることができ、上記と述べました。
あなたがインストールされたアプリケーションについて話している、ので、あなたのAndroidのファイルシステムの/アプリのディレクトリの /データに先行して見に行きます。あなたはAPKの存在を見つけるでしょう。
ADBプル/data/data/appname.apk -そして、ADBコマンドを使用します
あなたが知っている(またはあなたが「推測」可能であれば)もし.apk
へのパス(それのにフォーマット/data/app/com.example.someapp-{1,2,..}.apk
のようにのようで、その後、あなただけのようにも/data/app
からそれをコピーすることができます。これを私の非根ざし、株式のAndroid携帯電話上でも働いています。
ただ、この1 )と実行ます:
# step 1: confirm path
ls /data/app/com.example.someapp-1.apk
# if it doesn't show up, try -2, -3. Note that globbing (using *) doesn't work here.
# step 2: copy (make sure you adapt the path to match what you discovered above)
cp /data/app/com.example.someapp-1.apk /mnt/sdcard/
そして、あなたが好きな場所にSDカードからそれを動かす(または電子メールなどに添付)することができます。最後のビットは、技術的には、オプションのかもしれませんが、.apk
ファイルで何かをしようとしたとき、それはあなたの人生がずっと楽になります。
の手順は、Androidの7(ヌガー)には対応していません[6おそらくAndroidのが、私は確認することができませんでしです]。あなたは直接ヌガーの下で(ルートモードでない限り、それは根ざした携帯電話が必要です)の.apkファイルを引くことはできません。しかし、あなたは、あなたが代替パスからadbのプルを行うことができ、adbのシェルを使用して携帯電話上の代替パス(/ SDカード/ダウンロード言う)への.apkをコピーすることができます。
うライナーでbashコマンドをバックアップすべてのアプリケーション:
for package in $(adb shell pm list packages -3 | tr -d '\r' | sed 's/package://g'); do apk=$(adb shell pm path $package | tr -d '\r' | sed 's/package://g'); echo "Pulling $apk"; adb pull -p $apk "$package".apk; done
このコマンドから Firelordのスクリプト.うに改称すべてのapksそのパッケージの名前解決の問題 elcucoのスクリプト, ます。インフォメーションセンタと同じ base.apk
ファイルって上書きされAndroid6.0"マシュマロ"以上です。
なお、このコマンドでバックアップのみ3rdパーティーアプリ,フランス語が堪能な方、是非あると思いますか点のバックアップ内蔵アプリとなります。だんバックアップシステムアプリもだを省略 -3
オプションです。
ここであなたがそれを行う方法は次のとおりです。
あなたのデバイスにAPK抽出をダウンロードしてインストールします。それは無料で、ほぼすべてのAndroidデバイスの中に互換性があります。もう一つのプラスポイントは、それも仕事へのルートか何かを必要としないです。 あなたはそれがインストールされていたら、それを起動します。あなたはシステムのアプリと一緒に使用すると、後でインストールしたアプリが、含まお使いのデバイスにあるアプリの一覧が表示されます。長押しを使用して、抽出したいすべてのアプリが(一度に複数、またはすべてのアプリを選択することができます)、そしてあなたがトップに表示エキスオプションをクリックしてください。また、Bluetoothやメッセージングを経由して共有するオプションを持つことになります。 設定が完了し、あなたは、デフォルトでは/パス/ SDカード/ ExtractedApksに保存されますAppName_AppPackage_AppVersionName_AppVersionCode.apk、として抽出されたアプリが表示されます。
の詳細な説明についてはアンドロイドに/
すべてのこれらの答えは、デバイスから取得した各APKファイルのための複数のステップが必要です。 1.ファイルを見つける2.パッケージ名を決定し、3ダウンロードそれ。私は apk_grabber
のPythonスクリプトは、指定した正規表現にマッチする任意のアプリのためにこれを行うにはし、次にそれらを逆コンパイルシンプルに構築されましたjarファイルへのAPKます。
でおすすめのコードを引きます。apkファイルからモバイルがっているソフトウェア使用する事が可能です。apkファイルからモバイルやソフトウェアまたは以下のとgoogle playへリンク
皆でお手伝いさせていただきます。
たい非常に、非常に快適な1分間のソリューション?
ちょうどこのアプリ https://play.google .COM /店舗/アプリケーション/詳細?ID = com.cvinfo.filemanagerする(グーグルプレイからスマートファイルマネージャ)。
タップ「アプリ」、1タップ「バックアップ」を選択します。それはapp_backup
フォルダ内のファイル・システム上に終わるでしょう。)
なルートやADBに必要な道具類の方法です。設置 MyAppSharer アプリからのお店です。
私はdoes not exist error
を得た。
ここで私はそれが
作品作る方法ですadb shell pm list packages -f | findstr zalo
package:/data/app/com.zing.zalo-1/base.apk=com.zing.zalo
adb shell
mido:/ $ cp /data/app/com.zing.zalo-1/base.apk /sdcard/zalo.apk
mido:/ $ exit
adb pull /sdcard/zalo.apk Desktop
/sdcard/zalo.apk: 1 file pulled. 7.7 MB/s (41895394 bytes in 5.200s)
なbashスクリプト(までほとんどのunix系システム)だ。に基づく その答えによるペドロロドリゲス, もとは少し楽しみです。
改善ペドロのバージョン:
- 独自のアプローチだったのか私にとってAndroid7:
adb pull
保管について不服を申し立てno such file or directory
ながらadb shell
アクセスできるファイルです。そのために使った異なるアプローチは、一時ファイルです。 - 起動引数のない、私のスクリプトだと思いますリストで利用可能なすべてのパッケージ。合部分のパッケージ名ですか当ててみてくださいフルパッケージの名前です。で文句が複数ある場合は可能な開始しました。
- いhardcode先のパス代わりにAPKs保存される現在の作業ディレクトリを設定します。
保存この実行可能ファイル:
#!/bin/bash
# Obtain APK file for given package from the device connected over ADB
if [ -z "$1" ]; then
echo "Available packages: "
adb shell pm list packages | sed 's/^package://'
echo "You must pass a package to this function!"
echo "Ex.: android_pull_apk \"com.android.contacts\""
exit 1
fi
fullname=$(adb shell pm list packages | sed 's/^package://' | grep $1)
if [ -z "$fullname" ]; then
echo "Could not find package matching $1"
exit 1
fi
if [ $(echo "$fullname" | wc -l) -ne 1 ]; then
echo "Too many packages matched:"
echo "$fullname"
exit 1
fi
echo "Will fetch APK for package $fullname"
apk_path="`adb shell pm path $fullname | sed -e 's/package://g' | tr '\n' ' ' | tr -d '[:space:]'`"
apk_name="`basename ${apk_path} | tr '\n' ' ' | tr -d '[:space:]'`"
destination="${fullname}.apk"
tmp=$(mktemp --dry-run --tmpdir=/sdcard --suffix=.apk)
adb shell cp "${apk_path}" "$tmp"
adb pull "$tmp" "$destination"
adb shell rm "$tmp"
[ $? -eq 0 ] && echo -e "\nAPK saved in \"$destination\""
最も簡単なものです: 電話で「ShareIt」アプリをインストールしてください。 今、PCや他の携帯電話にshareItアプリをインストールします。 今すぐアプリがインストールされている携帯電話、オープンShareIt、送信から。 他の携帯電話やPCで、オープンShareItおよび受信ます。
- アプリを開をご希望のapkからのお電話を。
を取得し、現在開アプリ:
adb shell dumpsys activity activities | grep mFocusedActivity
のパスを取得して、パッケージ名
adb shell pm path <packagename.apk>
4.コピーの経路またはsdカードのディレクトリ
adb shell cp /data/app/<packagename.apk> /sdcard
5.を引きapk
adb pull /sdcard/base.apk
気に入ったのがこれらすべての答えなのです。最もスクリプトへの輸出は、名前を変更したBash.私は小さなPerlスクリプトは同じるべきとPerlのためには、windows、linux、試Ubuntu.
download-apk.pl
#!/usr/bin/perl -w
# Automatically export all available installed APK's using adb
use strict;
print "Connect your device...\n";
system("adb", "wait-for-device");
open(my $OUT, '-|', 'adb', 'shell', 'pm', 'list', 'package', '-f');
my @list = split(/\s*/, `adb shell pm list packages -f`);
my $count = 0;
while(my $line = <$OUT>) {
$line =~ s/^\s*|\s*$//g;
my ($type, $path, $package) = $line =~ /^(.*?):(.*)=(.*)$/ ? ($1,$2,$3) : die('invalid line: '.$line);
my $category = $path =~ /^\/(.*?)\// ? $1 : 'unknown';
my $baseFile = $path =~ /\/([^\/]*)$/ ? $1 : die('Unknown basefile in path: '.$path);
my $targetFile = "$category-$package.apk";
print "$type $category $path $package $baseFile >> $targetFile\n";
system("adb", "pull", $path);
rename $baseFile, $targetFile;
}
- 確adb(.exe)にパスの中には同じディレクトリ
- 接続電話
- 走download-apk.pl
の出力のようなもの:
# ./download-apk.pl
Connect your device...
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
package system /system/app/YouTube/YouTube.apk com.google.android.youtube YouTube.apk >> system-com.google.android.youtube.apk
5054 KB/s (11149871 bytes in 2.154s)
package data /data/app/com.ghostsq.commander-1/base.apk com.ghostsq.commander base.apk >> data-com.ghostsq.commander.apk
3834 KB/s (1091570 bytes in 0.278s)
package data /data/app/de.blinkt.openvpn-2/base.apk de.blinkt.openvpn base.apk >> data-de.blinkt.openvpn.apk
5608 KB/s (16739178 bytes in 2.914s)
etc.
の非技術的なの答え
を探している人のためのこの意志のヘルプこれは単純ですのハックの
のGoogle PlayストアからアプリケーションApp Share/Send Pro
をダウンロードしてください。送信したいアプリや方法の送信アプリケーションを選択します。
私は通常私のPCや他の携帯電話にアプリケーションを送信するために、Bluetoothを使用します。