1

我正在尝试通过 adb 命令启动 apk,在安装 apk 后不久,但我得到了ClassNotFoundException应用程序正在崩溃。

我的日志:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.sample.test.one/com.sample.test.one.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.sample.test.one.MainActivity" on path: DexPathList[[zip file "/data/app/com.sample.test.one-1/base.apk"],nativeLibraryDirectories=[/data/app/com.sample.test.one-1/lib/arm, /system/lib, /vendor/lib]]
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2849)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)
     at android.app.ActivityThread.-wrap14(ActivityThread.java)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642)
     at android.os.Handler.dispatchMessage(Handler.java:102)
     at android.os.Looper.loop(Looper.java:154)
     at android.app.ActivityThread.main(ActivityThread.java:6776)
     at java.lang.reflect.Method.invoke(Native Method)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
  Caused by: java.lang.ClassNotFoundException: Didn't find class "com.sample.test.one.MainActivity" on path: DexPathList[[zip file "/data/app/com.sample.test.one-1/base.apk"],nativeLibraryDirectories=[/data/app/com.sample.test.one-1/lib/arm, /system/lib, /vendor/lib]]
     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
     at android.app.Instrumentation.newActivity(Instrumentation.java:1086)
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2839)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045) 
     at android.app.ActivityThread.-wrap14(ActivityThread.java) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:154) 
     at android.app.ActivityThread.main(ActivityThread.java:6776) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408) 

流动 :

adb install test.apk

adb shell am start -n com.sample.test.one/com.sample.test.one.MainActivity

or 

adb shell am start -a android.intent.action.Main -n com.sample.test.one/.MainActivity

我在上面尝试,adb shell commands但应用程序无法启动,但我观察到一种情况,如果我将在 Android Studio 中运行代码并且应用程序安装在设备中,然后如果我将尝试“ adb shell am start ”命令,那么它可以工作很好,但如果我尝试通过“ adb install apk ”,那么这个命令不起作用。

4

2 回答 2

1

我曾经遇到过这种情况,但是在将 MultiDex 添加到我的 gradle 之后,一切都很好。

步骤1

defaultConfig {
         minSdkVersion minVersion+
         targetSdkVersion targetVersion+

         multiDexEnabled true
     }

 dexOptions {
      incremental true
      javaMaxHeapSize "4g"
 }

第2步

添加梯度

compile 'com.android.support:multidex:1.0.0'

步骤 3 更改 gradle 属性

org.gradle.jvmargs=-Xmx4096m

请试试这个技巧。

于 2017-08-21T19:08:15.360 回答
0

英语不是我的母语;请原谅打字错误。

解决方案:查看您的 App 项目文件 AndroidMainfest.xml ,查找包含此的活动

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

在此范围内,请记住此活动名称属性。使用这个命令

adb shell am start -D -n com.mycompany.moba.lala/com.epicgames.ue4.SplashActivity 

将 com.epicgames.ue4.SplashActivity 替换为之前的名称路径。

于 2018-03-09T10:47:16.180 回答