You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio新手求助:项目编译成功后启动即崩溃

应用启动崩溃问题分析与修复方案

核心错误点

  • 错误导入系统R类:代码开头导入了import android.R,这会强制代码使用系统内置的资源类,而非项目自定义生成的R类。你的布局activity_main和控件testView属于项目私有资源,用系统R类根本找不到这些资源,直接触发Resources.NotFoundException导致崩溃。
  • 潜在风险点:res/raw文件夹下是否存在名为test的视频文件、视频格式是否被Android VideoView兼容(MP4/H.264是兼容性最优的格式)。

修复步骤

  1. 修正R类导入
    删除代码中的import android.R,确保使用项目自动生成的com.example.video_player.R(Android Studio通常会自动补全,若未自动导入可手动添加)。

  2. 验证资源文件

    • 确认res/raw文件夹存在,且内部有test视频文件(文件名只能用小写字母、数字和下划线,禁止大写、空格或特殊字符)。
    • 确保视频格式为Android支持类型,优先选择MP4(H.264编码)。
  3. 添加错误监听(可选,提升调试效率)
    给VideoView增加错误监听,方便快速定位后续可能出现的播放问题:

    videoView.setOnErrorListener { _, what, extra ->
        println("视频播放错误: what=$what, extra=$extra")
        true
    }
    

修复后完整代码

MainActivity.kt

package com.example.video_player

import android.net.Uri
import android.os.Bundle
import android.widget.MediaController
import android.widget.VideoView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val videoView = findViewById<VideoView>(R.id.testView)
        val mediaController = MediaController(this)
        mediaController.setAnchorView(videoView)
        
        val uri: Uri = Uri.parse(
            "android.resource://$packageName/raw/test"
        )
        
        videoView.setMediaController(mediaController)
        videoView.setVideoURI(uri)
        videoView.setOnErrorListener { _, what, extra ->
            println("视频播放错误: what=$what, extra=$extra")
            true
        }
        videoView.requestFocus()
        videoView.start()
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <VideoView
        android:id="@+id/testView"
        android:layout_width="0dp"
        android:layout_height="308dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

(注:将VideoView的width改为0dp,配合约束让控件填满左右父布局空间,比wrap_content更符合界面布局逻辑)

调试技巧

若修复后仍崩溃,打开Android Studio的Logcat面板,过滤Error级别日志,异常栈信息会直接指明崩溃根源(比如资源缺失、视频格式不兼容等)。

内容的提问来源于stack exchange,提问作者Em P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 14:15:36