【问题标题】:Not able to run debug apk on android phone无法在安卓手机上运行调试 apk
【发布时间】:2017-05-11 17:09:23
【问题描述】:

我在 Windows 10 上使用 Android Studio 2.3.1。当我尝试在设备上运行该应用程序时,当我的设备连接到 android Studio 时,我就可以运行该应用程序了。但是,当我尝试在 android 手机上安装它的调试或发布 apk 时,它正在安装,但在打开应用程序时出现以下错误:

04-27 10:06:31.675 30541-30541/package name E/AndroidRuntime: FATAL EXCEPTION: main
Process: package_Name, PID: 30541
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{package Name/package_Name.SplashActivity}: java.lang.ClassNotFoundException: Didn't find class "package_Name.SplashActivity" on path: DexPathList[[zip file "/data/app/package_Name-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2227)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2376)
at android.app.ActivityThread.access$800(ActivityThread.java:147)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5253)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:695)

Caused by: java.lang.ClassNotFoundException: Didn't find class "package_Name.SplashActivity" on path: DexPathList[[zip file "/data/app/package_Name-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at android.app.Instrumentation.newActivity(Instrumentation.java:1065)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2217)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2376) 
at android.app.ActivityThread.access$800(ActivityThread.java:147) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5253) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:695) 
Suppressed: java.lang.ClassNotFoundException: package Name.SplashActivity
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 13 more

Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

任何帮助将不胜感激。 我的毕业代码

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "package_Name"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:design:25.3.1'
    testCompile 'junit:junit:4.12'
}

【问题讨论】:

  • 你能分享你的gradle代码吗?
  • 可能是应该是com.example.SomeClassName"包名",而不是包含空格的包名。
  • @Shashanth 就像“com.businessName.projectName”
  • 取消选中即时运行后询问尝试运行
  • @ASK 引用 this StackOverflow 线程。

标签: java android android-studio


【解决方案1】:

您可以只使用“构建(选项卡)/构建 APK”而不是运行“应用程序”来解决此问题

【讨论】:

    【解决方案2】:

    @ASK 你能否清理你的项目并重建它。这是您的 apk 未正确创建时最常见的错误

    【讨论】:

    • 我已经清理了我的项目并重建了它。但错误仍然相同。
    • 请验证请求的类名是否正确
    【解决方案3】:

    您的包名不应包含空格,因为从您的代码中它们是包名中的空格

    请改成like package.name

    【讨论】:

    • 实际项目中package-name中没有while空间
    • 请验证请求的类名是否正确
    • 是的,它是正确的。当我直接从 android studio 运行应用程序时;它正在工作,但是当我在 android 手机上安装 apk 时,它会显示上述错误。
    • 你清理项目并重建项目了吗?
    【解决方案4】:

    出现问题的原因可能是您已经超过了 64k 方法限制。

    您应该考虑在您的应用中启用 multidex。

    defaultConfig {
        ...
        ...
    
        // Enabling multidex support.
        multiDexEnabled true
    }
    
    dependencies {
    compile 'com.android.support:multidex:1.0.0'
    }
    

    将此添加到清单

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
       package="com.example.android.multidex.myapplication">
       <application
           ...
           android:name="android.support.multidex.MultiDexApplication">
           ...
       </application>
    </manifest>
    

    【讨论】:

    • 我应用了您的解决方案,但它不起作用。请看线:Caused by: java.lang.ClassNotFoundException: Didn't find class ** "com.packagename.fb.SplashActivity" ** on path: DexPathList[[zip file ** "/data/app/com.packagename.fb-1/base.apk"] **,nativeLibrary‌​Directories=[/vendor‌​/lib, /system/lib]]
    • 你的包名好像有点反常。找不到类 ** "com.packagename.fb.SplashActivity""/data/app/com.packagename.fb-1/base.apk"
    【解决方案5】:

    取消选中即时运行.. 如何做到这一点:

    1. 打开“设置”或“首选项”对话框:在 Windows 或 Linux 上,从菜单栏中选择“文件”>“设置”。在 Mac OSX 上,从菜单栏中选择 Android Studio > 首选项。
    2. 导航至构建、执行、部署 > 即时运行。
    3. 取消选中 Restart activity on code changes 旁边的复选框。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      相关资源
      最近更新 更多