After adb install
-ing 我的应用程序,我可以验证它是否存在adb shell pm list packages AppName
:
包:air.com.client.AppName
So I know它就在那里,但是当我尝试启动它时adb shell am start -a android.intent.action.MAIN -n air.com.client/.AppName
,我收到此错误:
开始:意图 { cmp=air.com.client/.AppName}
错误类型3
错误:活动类 {air.com.client/air.com.client.AppName} 不存在。
如果重要的话,您可能已经注意到,这是一个打包为 Android 应用程序的 AIR 应用程序。有任何想法吗?我是不是错过了什么地方?当我使用aapt dump xmltree
我可以看到我的 .apk 包含一个android.intent.action.MAIN
意图过滤器节点中的条目,无论其价值如何。
最后,为了理智起见,使用相同的命令模板我可以毫无问题地启动设置应用程序:
adb shell am start -a android.intent.action.MAIN -n com.android.settings/.Settings
留意applicationIdSuffix
!!
使用时applicationIdSuffix
in 构建.gradle该后缀仅适用于您的应用程序 ID,不适用于生成的 .apk 中的实际包结构,这意味着以简短的方式引用您的活动(.MainActivity
,而不是使用其完全限定名称)也会将应用程序 ID 后缀添加到活动的路径中,因此 AS 将无法找到它。例如。:
我的应用程序的包名称是my.application.package
,我的应用程序模块中有这个构建.gradle:
buildTypes {
someBuildType {
[...]
applicationIdSuffix ".dev"
}
}
当尝试执行时,假设MainActivity
(位于根包中)从命令行:
$ adb shell am start -n my.application.package.dev/.MainActivity
实际上决心
$ adb shell am start -n my.application.package.dev/my.application.package.dev.MainActivity
But MainActivity
实际上位于my.application.package.MainActivity
,不在my.application.package.dev.MainActivity
, 因为applicationIdSuffix
仅更改应用程序 ID,而不更改实际的包结构,因此将无法找到它。
因此,您应该使用活动的完全限定名称:
$ adb shell am start -n my.application.package.dev/my.application.package.MainActivity
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)