【问题标题】:The application has stopped unexpectedly please try again android应用程序意外停止请重试android
【发布时间】:2025-12-05 08:10:01
【问题描述】:

每次我尝试启动我的应用程序时都会显示此错误:

The application SMSbackupv1 (process com.SMS.Backup) has stpped unexpectedly. please try again.

我不知道错误是在哪里产生的。但是,当我调试文件时,threadGroup.class 会显示并显示

Source not found
the JAR file C:\Program Files (x86)\Android\android-sdk\platforms\android-8\android.jar has no source attachment.

代码如下:

import java.util.ArrayList;
import android.app.Activity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SMSbackup extends Activity {
    private Button backupBTN;
    public ArrayList<String> exportBuffer = new ArrayList<String>();

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        try {
            backupBTN = (Button) this.findViewById(R.id.button1);

        } catch (Exception e) {
            this.backupBTN.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    try {

                        Cursor c = getContentResolver().query(
                                Uri.parse("content://sms"), null, null, null,
                                null);
                        getColumnData(c);

                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });

        }
    }

    public void getColumnData(Cursor cur) {
        try {
            if (cur.moveToFirst()) {
                String id;
                String date;
                String phoneNumber;
                String body;

                int idColumn = cur.getColumnIndex("_id");
                int dateColumn = cur.getColumnIndex("date");
                int numberColumn = cur.getColumnIndex("address");
                int bodyColumn = cur.getColumnIndex("body");

                do {

                    id = cur.getString(idColumn);
                    date = cur.getString(dateColumn);
                    body = cur.getString(bodyColumn);
                    phoneNumber = cur.getString(numberColumn);

                    exportBuffer.add(id + " ," + date + " ," + body + " ,"
                            + phoneNumber);

                } while (cur.moveToNext());
            }
            WriteToFile();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void WriteToFile() {
        try {
            CSV export = new CSV();
            export.generateCSVFile(exportBuffer);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

创建 CSV 类:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;

import android.os.Environment;
import android.widget.Toast;

public class CSV extends SMSbackup {

    public static ArrayList<String> data = new ArrayList<String>();
    public static File rootFolder;
    public static File root;
    private static String subFolderName;
    private static String fileName;
    public boolean mExternalStorageAvailable = false;
    public boolean mExternalStorageWriteable = false;

    public CSV() 
    {
        checkStorage();

        if(mExternalStorageAvailable == true && mExternalStorageWriteable == true)
        {
            root = new File(Environment.getExternalStorageDirectory() + "/SMSMonitor/", null);
            subFolderName = GetSubFolder();
            fileName = getFileName();
        }
    }

    public void checkStorage()
    {
        CharSequence text;
        int duration = Toast.LENGTH_SHORT;
        mExternalStorageAvailable = false;
        mExternalStorageWriteable = false;

        String state = Environment.getExternalStorageState();

        if (Environment.MEDIA_MOUNTED.equals(state)) 
        {
            text = "SD card is Read and Write";
            mExternalStorageAvailable = mExternalStorageWriteable = true;

        } 
        else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) 
        {
            text = "SD Card is Read Only";
            mExternalStorageAvailable = true;
            mExternalStorageWriteable = false;
        } 
        else 
        {
            mExternalStorageAvailable = mExternalStorageWriteable = false;
            text = "Something else is wrong...";
        }
        //Toast toast = Toast.makeText(SmsBackupActivity.defaultInstance, text, duration);
        //toast.show();
    }

    public void generateCSVFile(ArrayList<String> list)
    {
        root = new File(rootFolder + "/SMSMonitor/" + subFolderName, fileName);

        try 
        {
            FileWriter write = new FileWriter(root);

            write.append("ID, Date, Address, Body");
            write.append('\n');

            for (String s : list)
            {
                write.append(s);
                write.append('\n');
            }
            write.flush();
            write.close();
        }
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }


    private static String getFileName()
    {
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
        String fileName = "Backup_" + sdf.format(cal.getTime()).toString() + ".csv";

        return fileName;
    }

    private static String GetSubFolder()
    {
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
        subFolderName = sdf.format(cal.getTime()).toString();

        return subFolderName;
    }

}

可能的堆栈跟踪?:

    // Compiled from ThreadGroup.java (version 1.5 : 49.0, super bit)
public class java.lang.ThreadGroup implements java.lang.Thread$UncaughtExceptionHandler {

  // Method descriptor #9 (Ljava/lang/String;)V
  // Stack: 3, Locals: 2
  public ThreadGroup(java.lang.String name);
     0  aload_0 [this]
     1  invokespecial java.lang.Object() [1]
     4  new java.lang.RuntimeException [2]
     7  dup
     8  ldc <String "Stub!"> [3]
    10  invokespecial java.lang.RuntimeException(java.lang.String) [4]
    13  athrow
      Line numbers:
        [pc: 0, line: 5]
      Local variable table:
        [pc: 0, pc: 14] local: this index: 0 type: java.lang.ThreadGroup
        [pc: 0, pc: 14] local: name index: 1 type: java.lang.String

  // Method descriptor #17 (Ljava/lang/ThreadGroup;Ljava/lang/String;)V
  // Stack: 3, Locals: 3
  public ThreadGroup(java.lang.ThreadGroup parent, java.lang.String name);
     0  aload_0 [this]
     1  invokespecial java.lang.Object() [1]
     4  new java.lang.RuntimeException [2]
     7  dup
     8  ldc <String "Stub!"> [3]
    10  invokespecial java.lang.RuntimeException(java.lang.String) [4]
    13  athrow
      Line numbers:
        [pc: 0, line: 6]
      Local variable table:
        [pc: 0, pc: 14] local: this index: 0 type: java.lang.ThreadGroup
        [pc: 0, pc: 14] local: parent index: 1 type: java.lang.ThreadGroup
        [pc: 0, pc: 14] local: name index: 2 type: java.lang.String

  // Method descriptor #20 ()I
  // Stack: 3, Locals: 1
  public int activeCount();
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 7]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup

  // Method descriptor #20 ()I
  // Stack: 3, Locals: 1
  public int activeGroupCount();
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 8]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup

  // Method descriptor #23 (Z)Z
  // Stack: 3, Locals: 2
  public boolean allowThreadSuspension(boolean b);
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 9]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup
        [pc: 0, pc: 10] local: b index: 1 type: boolean

  // Method descriptor #27 ()V
  // Stack: 3, Locals: 1
  public final void checkAccess();
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 10]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup

  // Method descriptor #27 ()V
  // Stack: 3, Locals: 1
  public final void destroy();
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 11]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup

  // Method descriptor #30 ([Ljava/lang/Thread;)I
  // Stack: 3, Locals: 2
  public int enumerate(java.lang.Thread[] threads);
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 12]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup
        [pc: 0, pc: 10] local: threads index: 1 type: java.lang.Thread[]

  // Method descriptor #33 ([Ljava/lang/Thread;Z)I
  // Stack: 3, Locals: 3
  public int enumerate(java.lang.Thread[] threads, boolean recurse);
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 13]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup
        [pc: 0, pc: 10] local: threads index: 1 type: java.lang.Thread[]
        [pc: 0, pc: 10] local: recurse index: 2 type: boolean

  // Method descriptor #35 ([Ljava/lang/ThreadGroup;)I
  // Stack: 3, Locals: 2
  public int enumerate(java.lang.ThreadGroup[] groups);
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 14]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup
        [pc: 0, pc: 10] local: groups index: 1 type: java.lang.ThreadGroup[]

  // Method descriptor #38 ([Ljava/lang/ThreadGroup;Z)I
  // Stack: 3, Locals: 3
  public int enumerate(java.lang.ThreadGroup[] groups, boolean recurse);
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 15]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup
        [pc: 0, pc: 10] local: groups index: 1 type: java.lang.ThreadGroup[]
        [pc: 0, pc: 10] local: recurse index: 2 type: boolean

  // Method descriptor #20 ()I
  // Stack: 3, Locals: 1
  public final int getMaxPriority();
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 16]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup

  // Method descriptor #41 ()Ljava/lang/String;
  // Stack: 3, Locals: 1
  public final java.lang.String getName();
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 17]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup

  // Method descriptor #43 ()Ljava/lang/ThreadGroup;
  // Stack: 3, Locals: 1
  public final java.lang.ThreadGroup getParent();
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 18]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup

  // Method descriptor #27 ()V
  // Stack: 3, Locals: 1
  public final void interrupt();
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 19]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup

  // Method descriptor #46 ()Z
  // Stack: 3, Locals: 1
  public final boolean isDaemon();
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 20]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup

  // Method descriptor #46 ()Z
  // Stack: 3, Locals: 1
  public synchronized boolean isDestroyed();
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 21]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup

  // Method descriptor #27 ()V
  // Stack: 3, Locals: 1
  public void list();
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 22]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup

  // Method descriptor #50 (Ljava/lang/ThreadGroup;)Z
  // Stack: 3, Locals: 2
  public final boolean parentOf(java.lang.ThreadGroup g);
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 23]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup
        [pc: 0, pc: 10] local: g index: 1 type: java.lang.ThreadGroup

  // Method descriptor #27 ()V
  // Stack: 3, Locals: 1
  public final void resume();
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 24]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup

  // Method descriptor #54 (Z)V
  // Stack: 3, Locals: 2
  public final void setDaemon(boolean isDaemon);
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 25]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup
        [pc: 0, pc: 10] local: isDaemon index: 1 type: boolean

  // Method descriptor #56 (I)V
  // Stack: 3, Locals: 2
  public final void setMaxPriority(int newMax);
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 26]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup
        [pc: 0, pc: 10] local: newMax index: 1 type: int

  // Method descriptor #27 ()V
  // Stack: 3, Locals: 1
  public final void stop();
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 27]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup

  // Method descriptor #27 ()V
  // Stack: 3, Locals: 1
  public final void suspend();
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 28]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup

  // Method descriptor #41 ()Ljava/lang/String;
  // Stack: 3, Locals: 1
  public java.lang.String toString();
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 29]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup

  // Method descriptor #63 (Ljava/lang/Thread;Ljava/lang/Throwable;)V
  // Stack: 3, Locals: 3
  public void uncaughtException(java.lang.Thread t, java.lang.Throwable e);
     0  new java.lang.RuntimeException [2]
     3  dup
     4  ldc <String "Stub!"> [3]
     6  invokespecial java.lang.RuntimeException(java.lang.String) [4]
     9  athrow
      Line numbers:
        [pc: 0, line: 30]
      Local variable table:
        [pc: 0, pc: 10] local: this index: 0 type: java.lang.ThreadGroup
        [pc: 0, pc: 10] local: t index: 1 type: java.lang.Thread
        [pc: 0, pc: 10] local: e index: 2 type: java.lang.Throwable

  Inner classes:
    [inner class info: #7 java/lang/Thread$UncaughtExceptionHandler, outer class info: #76 java/lang/Thread
     inner name: #78 UncaughtExceptionHandler, accessflags: 1545 public abstract static]
}

控制台:

    [2011-07-04 17:59:32 - SMSbackupv1] Android Launch!
[2011-07-04 17:59:32 - SMSbackupv1] adb is running normally.
[2011-07-04 17:59:32 - SMSbackupv1] Performing com.SMS.Backup.SMSbackupv1Activity activity launch
[2011-07-04 17:59:32 - SMSbackupv1] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'Test'
[2011-07-04 17:59:32 - SMSbackupv1] Uploading SMSbackupv1.apk onto device 'emulator-5554'
[2011-07-04 17:59:33 - SMSbackupv1] Installing SMSbackupv1.apk...
[2011-07-04 17:59:37 - SMSbackupv1] Success!
[2011-07-04 17:59:37 - SMSbackupv1] Starting activity com.SMS.Backup.SMSbackupv1Activity on device emulator-5554
[2011-07-04 17:59:41 - SMSbackupv1] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.SMS.Backup/.SMSbackupv1Activity }
[2011-07-04 17:59:42 - SMSbackupv1] Attempting to connect debugger to 'com.SMS.Backup' on port 8621

DDMS 没有 调试窗口显示:

应用程序加载一次显示应用程序意外停止错误然后调试器显示上面的窗口我可以跨过它并且它一直持续然后错误再次显示:/

提前谢谢你。

【问题讨论】:

  • 这不是您遇到的错误。警告“找不到源”适用于 Eclipse 通过跟踪堆栈跟踪来调试崩溃的尝试。如果您粘贴获得的堆栈跟踪信息,我们或许可以提供帮助。
  • 我想我添加了我认为的堆栈跟踪?我习惯使用 net beans 而不是 eclipse,所以我不完全确定 sack 跟踪在哪里? :s
  • 哎呀,好的!看看:*.com/questions/2581837/…
  • 抱歉,我说的不是那么正式:P 我想说的是我正在使用 Eclipse,但我不熟悉调试系统,不确定它是否是正确的堆栈跟踪:s
  • 可能是我的错,对不起!在 Eclipse 中,打开 DDMS 透视图。然后在设备窗格中选择设备,查看 Logcat 窗格并滚动到底部。每当应用程序在该设备上崩溃时,就会出现红色错误消息。

标签: java android


【解决方案1】:

当您调试 .xml 文件中缺少某些内容的应用程序时,会收到此类型的警告。这可能是您的布局文件或清单文件。仔细检查您的 .xml 文件。
如果你能看到 logcat 就很容易找到问题所在。

例如:Source not found and open Instrumentation.class 那么你可能没有在 android manifest 文件中添加你的活动类

【讨论】:

    【解决方案2】:

    这是我们许多人都会面临的问题,而且这个问题可能不仅适用于测试应用程序,还适用于您在设备上安装的应用程序。 如果开发者为特定布局的设备应用程序或没有更改所有布局的 XML,它将在某些设备中抛出错误。

    Android 有 4 种布局(我们大多数人都知道)

    布局 布局-小 大版面 布局-xlarge

    我的问题是我对支持 2.7 英寸的 layout-small 文件夹中的 XML 文件进行了更改。 我再次运行了 2.7 英寸的模拟器,并且工作得非常好。 现在,当我导出签名的应用程序并在设备中进行测试时,它失败了。原因是我没有在 Layout 文件夹中进行必要的更改。 我的设备期望在 main.xml 文件中的一些计算字段用于 layout -small 但不在安装的布局版本中。 所以你应该做几件事。 1) 测试应用程序时,只创建 1 个文件夹(包含所有 xml 文件的布局),这样您就可以在所有设备上测试应用程序的功能。 2) 如果您已创建所有 Layout 文件夹,然后在任何 XML 文件中进行更改,请确保更改已级联到所有文件夹。

    快乐发展...

    【讨论】: