【问题标题】:error "bad component name" when launching android app with adb shell am start使用 adb shell am start 启动 android 应用程序时出现错误 \"bad component name\"
【发布时间】:2022-08-27 20:35:20
【问题描述】:

我正在尝试使用 adb shell am 启动一个活动,但我总是遇到错误的错误组件名称。

 C:\\Users\\EnzoAbjean\\Documents\\Automatisation\\TelinkSH-Enzo\\qa-automatisation-tool>adb -s \"R5CRC0HRRAW\" shell am start -n com.telink.ble.mesh.ui.DeviceProvisionActivity

Exception occurred while executing \'start\':
java.lang.IllegalArgumentException: Bad component name: com.telink.ble.mesh.ui.DeviceProvisionActivity

这是我的清单:

 <?xml version=\"1.0\" encoding=\"utf-8\"?>
  <manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"
         xmlns:tools=\"http://schemas.android.com/tools\"
         package=\"com.telink.ble.mesh.demo\">
      <application
             android:name=\"com.telink.ble.mesh.LightingApplication\"
            android:allowBackup=\"true\"
             android:icon=\"@mipmap/ic_launcher\"
             android:label=\"@string/app_name\"
             android:requestLegacyExternalStorage=\"true\"
             android:supportsRtl=\"true\"
             android:theme=\"@style/AppTheme\"
             tools:ignore=\"GoogleAppIndexingWarning\">
       <activity
                android:name=\"com.telink.ble.mesh.ui.DeviceProvisionActivity\"
                 android:screenOrientation=\"portrait\"
                 android:windowSoftInputMode=\"stateAlwaysHidden\"
                 tools:ignore=\"LockedOrientationActivity\" />
 

我真的不知道它是如何不起作用的。我之前尝试输入包名“com.telink.ble.mesh.demo”,但没有。

  • 我收到一个新错误:\" C:\\Users\\EnzoAbjean\\Documents\\Automatisation\\TelinkSH-Enzo\\qa-automatisation-tool>adb -s \"R5CRC0HRRAW\" shell am start -n com. telink.ble.mesh.ui/.DeviceProvisionActivity 开始:Intent { cmp=com.telink.ble.mesh.ui/.DeviceProvisionActivity } 错误类型 3 错误:活动类 {com.telink.ble.mesh.ui/com.telink .ble.mesh.ui.DeviceProvisionActivity} 不存在。\" .但是这个类存在
  • 对不起,我错过了信息,包名是com.telink.ble.mesh.demo所以你必须开始am start -n com.telink.ble.mesh.demo/com.telink.ble.mesh.ui.DeviceProvisionActivity
  • 这回答了你的问题了吗? How to start an application using Android ADB tools
  • 我得到了完全相同的错误“活动不存在”。感谢您的链接,它将对意图有用。
  • 我在我的应用程序中尝试了其他活动,但得到了相同的结果。

标签: android adb


【解决方案1】:

添加exported 和意图过滤器:

   <activity
            android:name="com.telink.ble.mesh.ui.DeviceProvisionActivity"
             android:screenOrientation="portrait"
             android:windowSoftInputMode="stateAlwaysHidden"
             tools:ignore="LockedOrientationActivity"
             android:exported="true">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>

    </activity>
             

那么你应该能够启动

am start -n com.telink.ble.mesh.demo/com.telink.ble.mesh.ui.DeviceProvisionActivity

正如@Robert 在 cmets 中提到的那样。

【讨论】:

  • 好的,谢谢,我会在星期一试试我把我的电脑留在工作中
  • 我尝试但应用程序显示"Error: Activity class {com.telink.ble.mesh.demo/com.telink.ble.mesh.ui.DeviceProvisionActivity} does not exist." 可能是因为我有应用程序“com.telink.ble.mesh.LightningApplication”的路径?正如你在上面看到的?
【解决方案2】:
android {
compileSdkVersion 29
buildToolsVersion = '28.0.3'

defaultConfig {
    applicationId "com.telink.ble.smart.home"
    minSdkVersion 21
    targetSdkVersion 26
    versionCode 3
    versionName "1.0.2"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

现在我的命令行是adb -s "R5CRC0HRRAW" shell am start -n com.telink.ble.smart.home/com.telink.ble.mesh.ui.DeviceProvisionActivity

我查看了我的 build.gradle 并在 defaultConfig 中找到了一个新路径:“com.telink.ble.smart.home”并尝试了这个路径,所以它起作用了。在我的清单中,我必须为我的活动添加一个导出。感谢@Robert 和@Diego Torres Milano 的回答。

【讨论】:

    猜你喜欢
    • 2013-12-12
    • 2012-08-23
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多