我在Android方面有0经验,所以这个基本问题。
我不是程序员,所以我想要shell命令而不是代码。
在我的手机中,我安装了一组应用程序。我可以通过
知道如何查找应用程序包的列表adb shell pm list packages
从上面命令显示的包列表中,一旦我知道我的包名称(比如xyz包),我必须使用哪个shell命令列出该包下的所有活动(xyz包)。
有没有办法知道apk文件中的活动名称?我可以从包使用
获取apk文件名 adb shell pm list packages -f "my package name"
那么请你告诉我从apk文件中列出活动名称的shell命令。
答案 0 :(得分:2)
那么请你告诉我从apk文件中列出活动名称的shell命令。
假设您有权访问APK文件,您可以使用aapt
(Android SDK构建工具附带)来阅读打包清单的内容:
aapt l -a filename.apk
输出还包括所有资源和标识符的(可能很大)列表。特定于清单的输出应位于底部。
如果您只对清单感兴趣并且不关心资源和内容,则可以利用sed
跳过所有其他内容:
aapt l -a filename.apk | sed -n -e '/manifest/,$p'
示例输出:
Android manifest:
N: android=http://schemas.android.com/apk/res/android
E: manifest (line=2)
A: android:versionCode(0x0101021b)=(type 0x10)0x2
A: android:versionName(0x0101021c)="1.1" (Raw: "1.1")
A: package="com.example.packagename" (Raw: "com.example.packagename")
E: uses-sdk (line=4)
A: android:minSdkVersion(0x0101020c)=(type 0x10)0x7
A: android:targetSdkVersion(0x01010270)=(type 0x10)0xf
E: uses-permission (line=6)
A: android:name(0x01010003)="android.permission.WRITE_EXTERNAL_STORAGE" (Raw: "android.permission.WRITE_EXTERNAL_STORAGE")
E: uses-permission (line=7)
A: android:name(0x01010003)="android.permission.INTERNET" (Raw: "android.permission.INTERNET")
E: uses-permission (line=8)
A: android:name(0x01010003)="android.permission.ACCESS_NETWORK_STATE" (Raw: "android.permission.ACCESS_NETWORK_STATE")
E: uses-permission (line=9)
A: android:name(0x01010003)="android.permission.CAMERA" (Raw: "android.permission.CAMERA")
E: uses-feature (line=11)
A: android:name(0x01010003)="android.hardware.camera" (Raw: "android.hardware.camera")
E: application (line=13)
A: android:theme(0x01010000)=@0x1030007
A: android:label(0x01010001)=@0x7f0a001e
A: android:icon(0x01010002)=@0x7f020077
A: android:name(0x01010003)=".Application" (Raw: ".Application")
E: activity (line=14)
A: android:label(0x01010001)=@0x7f0a001e
A: android:name(0x01010003)=".Activity1" (Raw: ".Activity1")
A: android:screenOrientation(0x0101001e)=(type 0x10)0x1
E: intent-filter (line=15)
E: action (line=16)
A: android:name(0x01010003)="android.intent.action.MAIN" (Raw: "android.intent.action.MAIN")
E: category (line=18)
A: android:name(0x01010003)="android.intent.category.LAUNCHER" (Raw: "android.intent.category.LAUNCHER")
E: activity (line=21)
A: android:name(0x01010003)=".Activity2" (Raw: ".Activity2")
A: android:screenOrientation(0x0101001e)=(type 0x10)0x1
A: android:windowSoftInputMode(0x0101022b)=(type 0x11)0x2
E: activity (line=22)
A: android:name(0x01010003)=".Activity3" (Raw: ".Activity3")
A: android:screenOrientation(0x0101001e)=(type 0x10)0x1
E: activity (line=23)
A: android:name(0x01010003)=".Activity4" (Raw: ".Activity4")
A: android:screenOrientation(0x0101001e)=(type 0x10)0x1
E: activity (line=24)
A: android:name(0x01010003)=".Activity5" (Raw: ".Activity5")
A: android:screenOrientation(0x0101001e)=(type 0x10)0x1
A: android:windowSoftInputMode(0x0101022b)=(type 0x11)0x2
E: activity (line=25)
A: android:name(0x01010003)=".Activity6" (Raw: ".Activity6")
A: android:screenOrientation(0x0101001e)=(type 0x10)0x1
E: activity (line=26)
A: android:name(0x01010003)=".Activity7" (Raw: ".Activity7")
A: android:screenOrientation(0x0101001e)=(type 0x10)0x0
您可以进一步过滤以获取活动名称,但我会自行解决这个问题。 :)
参考文献:
答案 1 :(得分:0)
adb shell dumpsys package <packageName>
将列出包中的所有活动以及所有活动名称和对应的意图