LoginSignup
1
1

More than 5 years have passed since last update.

android からapkを取得して、AndroidManifest.xmlを見る方法

Last updated at Posted at 2017-11-07

はじめに

Androidの暗黙的インテントを使用して、他のアプリを起動しようと思いました。
起動するためには、他アプリの以下の情報が必要だとわかりました。

data android:scheme
data android:host
data android:pathPrefix

これらの情報を知るには、そのアプリのAndroidManifest.xmlを見ればよいです。
AndroidManifest.xmlを見るには、そのアプリのapkが必要です。

本ページは、android からapkを取得して、AndroidManifest.xmlを見る方法のメモです。

参考サイト

以下のサイトを参考にしました。サイト作成者の皆様、ありがとうございました。
http://nlogic.jp/?p=284
http://blog.clock-up.jp/entry/2015/02/28/android-pull-apk
https://qiita.com/T_2/items/0236162c294ffdf17ca8

確認環境

・Windows7のPowerShellを使用しました。
・Android_Sdkは、Android Studioインストール時にインストールしたものを使用します。
・Javaが使用できるPCであること。

方法

※パズル&ドラゴンのAndroidManifest.xmlを見る場合です。

1.PCのブラウザでGooglePlayのパズル&ドラゴンのサイトに行きます。
https://play.google.com/store/apps/details?id=jp.gungho.pad

パッケージ名は、URLの最後のほうにあります。パズル&ドラゴンの場合、jp.gungho.padがパッケージ名です。このタイミングだと、当たりがつくくらいで大丈夫です。

2.PCのPowerShellを起動し、Android_Sdkが存在するパスに移動します。
私の場合は、C:\Users\【ユーザー名】\AppData\Local\Android\sdk\platform-tools、でした。

3.PowerShellで、.\adb shell pm list packages -f、を実行する。実行すると、パッケージ一覧が出力されます。
.\adb shell pm list packages -f > a.txt、にすると、a.txtに一覧が出力されます。

4.1.で見つけたパッケージ名で検索します。
私の場合、package:/data/app/jp.gungho.pad-1/base.apk=jp.gungho.pad、が該当しました。
私のAndroidに入っているガンボーのアプリはパズル&ドラゴンだけなので、これが、パズル&ドラゴンのapkになります。

5..\adb pull [apkパス]、を実行して、androidからapkを取得します。
今回だと、.\adb pull /data/app/jp.gungho.pad-1/base.apk、です。

6.apkの拡張子をzipに変更してエクスプローラで開き、AndroidManifest.xmlを取り出します。AndroidManifest.xmlは、Android_Sdkが存在するパスに入れます。

7.AndroidManifest.xmlはバイナリ化されているので、変換操作が必要になります。変換には、AXMLPrinter2.jarを使用するので、ダウンロードしてAndroid_Sdkが存在するパスに入れます。
※jarの場所:https://code.google.com/archive/p/android4me/downloads

8.java -jar AXMLPrinter2.jar AndroidManifest.xml、を実行して、変換します。java -jar AXMLPrinter2.jar AndroidManifest.xml > a.txt、にすると、変換結果が出力されます。

結果を確認して、以下の必要な情報が確認できました。
 android:scheme="puzzleanddragons"
 android:host="jp.gungho.pad"
 android:pathPrefix="/"

他アプリを呼び出すコード

以下のように、Intentを使用すれば起動します。
※以下の処理をButtonのandroid::onClick、で呼び出して、パズル&ドラゴンが起動できました。

 // インテントの生成
 Intent intent = new Intent(Intent.ACTION_VIEW);
 // URI設定
 String strUri = String.format("%s://%s/", "puzzleanddragons", "jp.gungho.pad");
 Uri uri = Uri.parse(strUri);
 // URIをインテントに設定
 intent.setData(uri);
 // 次のアクティビティ起動
 startActivity(intent);

対象のアプリがないときに上記処理が実行されるとActivityNotFoundExceptionの例外で落ちます。忘れずにtry~catchをつけましょう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1