質問

どのようにして求めるのですか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コマンドを使用します

ここで概説

の手順は、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、として抽出されたアプリが表示されます。

の詳細な説明についてはアンドロイドに/ 、訪問: http://appslova.com/how-to -extract-APK-ファイル・イン・アンドロイド/

すべてのこれらの答えは、デバイスから取得した各APKファイルのための複数のステップが必要です。 1.ファイルを見つける2.パッケージ名を決定し、3ダウンロードそれ。私は apk_grabberのPythonスクリプトは、指定した正規表現にマッチする任意のアプリのためにこれを行うにはし、次にそれらを逆コンパイルシンプルに構築されましたjarファイルへのAPKます。

でおすすめのコードを引きます。apkファイルからモバイルがっているソフトウェア使用する事が可能です。apkファイルからモバイルやソフトウェアまたは以下のとgoogle playへリンク

  1. ES File Explorerファイルマネージャー
  2. アストロ-クラウド&ファイルマネージャー 3.ソフトウェアデータケーブル

皆でお手伝いさせていただきます。

たい非常に、非常に快適な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系システム)だ。に基づく その答えによるペドロロドリゲス, もとは少し楽しみです。

改善ペドロのバージョン:

  1. 独自のアプローチだったのか私にとってAndroid7: adb pull 保管について不服を申し立て no such file or directory ながら adb shell アクセスできるファイルです。そのために使った異なるアプローチは、一時ファイルです。
  2. 起動引数のない、私のスクリプトだと思いますリストで利用可能なすべてのパッケージ。合部分のパッケージ名ですか当ててみてくださいフルパッケージの名前です。で文句が複数ある場合は可能な開始しました。
  3. い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および受信ます。

  1. アプリを開をご希望のapkからのお電話を。
  2. を取得し、現在開アプリ:

    adb shell dumpsys activity activities | grep mFocusedActivity
    
  3. のパスを取得して、パッケージ名

    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;
}
  1. 確adb(.exe)にパスの中には同じディレクトリ
  2. 接続電話
  3. 走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を使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top