赞
踩
方法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 (这里是类名的简写)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。