1. 程式人生 > >檢視APK包名2種方法

檢視APK包名2種方法

方法1:adb shell "logcat | grep START" 

執行該命令,等一小會logcat輸出資訊完畢,然後點選要檢視包名的APP, 我這裡點選的是訊飛輸入法,看到資訊彈出的第一條,com.iflytek.inputmethod 就是訊飛輸入法的包名 09-10 19:27:52.030  1594  1661 I ActivityManager: START u0 {flg=0x34000000 cmp=com.iflytek.inputmethod/.setting.container.CusPreferenceActivity (has extras)} from uid 10081 on display 0

方法2:apk包名和類名,可通過到AndroidManifest.xml檔案查詢得到 參考:https://blog.csdn.net/luzhenrong45/article/details/78195466 因此,如果有輸入法的原始碼,可直接跳轉到第三步檢視AndroidManifest.xml。但現實中大多數情況,我們都是隻有apk,沒有原始碼的。 這裡以Google自家的 Gboard.apk 輸入法為例,介紹一下配置Gboard輸入法所需要的包名和類名獲取方法。

第一步: 解壓Gboard.apk檔案,得到AndroidManifest.xml檔案

apk檔案可以直接使用解壓工具進行解壓,但是解壓出來的AndroidManifest.xml使用文字編輯工具開啟會發現是亂碼的,因此需要對其進一步解析。

第二步: 反編譯解析AndroidManifest.xml,得到正常可讀的到AndroidManifest.xml

一般可以通過反編譯工具AXMLPrinter2(點選可下載) 解析上一步得到的AndroidManifest.xml,使用方法如下:

 java -jar AXMLPrinter2.jar AndroidManifest.xml  > AndroidManifest.xml_new

    1     2

第三步: 從解析後的 AndroidManifest.xml中得到包名和類名 解析後的 AndroidManifest.xml其實就是沒有經過混淆加密的原檔案, 檔案內容大致如下:

<manifest     xmlns:android="http://schemas.android.com/apk/res/android"     android:versionCode="26641613"     android:versionName="6.4.16.162469584-release-armeabi-v7a"     coreApp="true"     package="com.google.android.inputmethod.latin" --->這個就是輸入法要配置的包名,位於檔案開頭!     platformBuildVersionCode="26"     platformBuildVersionName="8.0.0" >

<application     android:theme="@7F110010"     android:label="@7F10016B"     android:icon="@7F030000"     android:name="com.google.android.apps.inputmethod.latin.LatinApp"     android:debuggable="false"     android:backupAgent="com.google.android.apps.inputmethod.latin.core.LatinBackupAgent"     android:allowBackup="true"     android:killAfterRestore="false"     android:restoreAnyVersion="true"     android:supportsRtl="true"     android:roundIcon="@7F030001"     >     <meta-data         android:name="com.google.android.backup.api_key"         android:value="AEdPqrEAAAAIl3fO6Spo7vqdonbORA0gOqfXPTnKWTdG6eHJNA"         >     </meta-data>     <service         android:label="@7F10016B"         android:name="com.android.inputmethod.latin.LatinIME"         android:permission="android.permission.BIND_INPUT_METHOD"         android:directBootAware="true"         >

    ...(此處略去N多內容)

    <service         android:label="@7F10016B"         android:name="com.android.inputmethod.latin.LatinIME"           android:permission="android.permission.BIND_INPUT_METHOD" ---> 找到 “android.permission.BIND_INPUT_METHOD” 這個許可權的標籤元件         android:directBootAware="true"     >

注意:包含“android.permission.BIND_INPUT_METHOD”這個許可權宣告的標籤元件,其指定的android:name就是要配置的輸入法的類名, 在這裡具體是指 “com.android.inputmethod.latin.LatinIME”

<manifest     xmlns:android="http://schemas.android.com/apk/res/android"     android:versionCode="26641613"     android:versionName="6.4.16.162469584-release-armeabi-v7a"     coreApp="true"     package="com.google.android.inputmethod.latin" --->這個就是輸入法要配置的包名,位於檔案開頭!     platformBuildVersionCode="26"     platformBuildVersionName="8.0.0" >

<application     android:theme="@7F110010"     android:label="@7F10016B"     android:icon="@7F030000"     android:name="com.google.android.apps.inputmethod.latin.LatinApp"     android:debuggable="false"     android:backupAgent="com.google.android.apps.inputmethod.latin.core.LatinBackupAgent"     android:allowBackup="true"     android:killAfterRestore="false"     android:restoreAnyVersion="true"     android:supportsRtl="true"     android:roundIcon="@7F030001"     >     <meta-data         android:name="com.google.android.backup.api_key"         android:value="AEdPqrEAAAAIl3fO6Spo7vqdonbORA0gOqfXPTnKWTdG6eHJNA"         >     </meta-data>     <service         android:label="@7F10016B"         android:name="com.android.inputmethod.latin.LatinIME"         android:permission="android.permission.BIND_INPUT_METHOD"         android:directBootAware="true"         >

    ...(此處略去N多內容)

    <service         android:label="@7F10016B"         android:name="com.android.inputmethod.latin.LatinIME"           android:permission="android.permission.BIND_INPUT_METHOD" ---> 找到 “android.permission.BIND_INPUT_METHOD” 這個許可權的標籤元件         android:directBootAware="true"     >

注意:包含“android.permission.BIND_INPUT_METHOD”這個許可權宣告的標籤元件,其指定的android:name就是要配置的輸入法的類名, 在這裡具體是指 “com.android.inputmethod.latin.LatinIME”

因此,便可知,如果要配置Gboard為出廠預設輸入法,即可將上面介紹的config_default_input_method配置為如下:

com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME

com.google.android.inputmethod.latin/.LatinIME (這裡是類名的簡寫)