Thật không may MyApp đã dừng lại. Làm sao tôi có thể giải quyết việc này?


786

Tôi đang phát triển một ứng dụng và mỗi khi tôi chạy nó, tôi nhận được thông báo:

Thật không may, MyApp đã dừng lại.

Tôi có thể làm gì để giải quyết điều này?


Về câu hỏi này - rõ ràng lấy cảm hứng từ Dấu vết ngăn xếp là gì và làm cách nào tôi có thể sử dụng nó để gỡ lỗi các ứng dụng của mình? , có rất nhiều câu hỏi cho biết ứng dụng của họ đã bị sập, không có thêm thông tin chi tiết. Câu hỏi này nhằm hướng dẫn cho các lập trình viên Android mới làm quen về cách thử và tự khắc phục vấn đề của họ hoặc đặt câu hỏi đúng.


22
Tôi đã thấy nhiều câu hỏi bị đóng lại như là bản sao với điều này. Đây là một tài liệu tham khảo tốt để giúp mọi người đăng dữ liệu liên quan trong câu hỏi của họ. Tuy nhiên, đây không phải là một bản sao của bất kỳ vấn đề gốc nào ở đó mà chỉ là phương pháp để tìm ra vấn đề gốc. Tôi nghĩ sẽ tốt hơn nếu chỉ cung cấp liên kết đến câu hỏi này như một tài liệu tham khảo và không đóng như là bản sao.
laalto

33
Tôi nghĩ rằng chức năng đóng là hoàn hảo cho việc này. Hầu hết các câu hỏi này cho thấy ít kiến ​​thức về các kỹ năng sửa lỗi cơ bản. Đặt chúng ở trạng thái chờ cung cấp một cơ hội để họ làm rõ vấn đề của mình, sử dụng phương pháp như đã nêu trong câu trả lời. Tốt hơn nữa, họ có thể tự giải quyết vấn đề. Thảo luận này có thể phù hợp hơn với meta.stackoverflow.com.
nhaarman

Câu hỏi này quá mơ hồ. Một câu hỏi hay hơn sẽ là 'sử dụng [myIDE] làm cách nào để gỡ lỗi' một ứng dụng Android hiển thị lỗi 'Thật không may, MyApp đã dừng lại'
Chris Halcrow

7
@ChrisHalcrow Câu hỏi này không phải là về gỡ lỗi. Đó là về hướng dẫn cho người mới bắt đầu trong Android cách xử lý sự cố ứng dụng.
nhaarman

stackoverflow.com/questions/26609734/ trên .. cho phép lỗi multidex becoz khi chuyển đổi sang apk
RejoylinLokeshwaran

Câu trả lời:


718

Câu trả lời này mô tả quá trình truy xuất dấu vết ngăn xếp. Đã có dấu vết ngăn xếp? Đọc các dấu vết ngăn xếp trong "Dấu vết ngăn xếp là gì và làm cách nào tôi có thể sử dụng nó để gỡ lỗi các ứng dụng của mình? "

Vấn đề

Ứng dụng của bạn bỏ vì một đứa trẻ RuntimeExceptionbị ném.
Phổ biến nhất trong số này là NullPointerException.

Làm thế nào để giải quyết nó?

Mỗi khi ứng dụng Android gặp sự cố (hoặc bất kỳ ứng dụng Java nào cho vấn đề đó), một ứng dụng Stack tracesẽ được ghi vào bàn điều khiển (trong trường hợp này là logcat). Dấu vết ngăn xếp này chứa thông tin quan trọng để giải quyết vấn đề của bạn.

Studio Android

Tìm dấu vết ngăn xếp trong Android Studio

Trong thanh dưới cùng của cửa sổ, bấm vào Logcatnút. Ngoài ra, bạn có thể nhấn alt+ 6. Đảm bảo trình giả lập hoặc thiết bị của bạn được chọn trong Devicesbảng điều khiển. Tiếp theo, hãy thử tìm dấu vết ngăn xếp, được hiển thị bằng màu đỏ. Có thể có rất nhiều thứ được đăng nhập vào logcat, vì vậy bạn có thể cần phải cuộn một chút. Một cách dễ dàng để tìm thấy dấu vết ngăn xếp là xóa logcat (sử dụng thùng rác bên phải) và để ứng dụng gặp sự cố một lần nữa.

Tôi đã tìm thấy dấu vết ngăn xếp, bây giờ những gì?

Yay! Bạn đang giải quyết vấn đề của mình.
Bạn chỉ cần tìm hiểu chính xác điều gì đã khiến ứng dụng của bạn bị sập, bằng cách phân tích dấu vết ngăn xếp.

Đọc các dấu vết ngăn xếp trong "Dấu vết ngăn xếp là gì và làm cách nào tôi có thể sử dụng nó để gỡ lỗi các ứng dụng của mình? "

Tôi vẫn không thể giải quyết vấn đề của mình!

Nếu bạn đã tìm thấy Exceptiondòng của bạn và dòng nơi nó xảy ra và vẫn không thể tìm ra cách khắc phục, đừng ngần ngại đặt câu hỏi trên StackOverflow.

Cố gắng ngắn gọn nhất có thể: đăng theo dõi ngăn xếp và mã có liên quan (ví dụ: một vài dòng lên đến dòng đã ném Exception).


33
Tôi biết bài đăng này đã cũ: nhưng nếu bạn sử dụng IntelliJ IDEA, bạn có thể vào bên trong Android > Devices|Logcatvà thêm bộ lọc mới ( i.imgur.com/145dtkx.png ) và lọc nó by Log Messageở đây bạn có thể đặt FATAL EXCEPTION( i.imgur.com/HpELhaU .png ) vì vậy trong Hộp này, bạn có thể đọc tất cả Exceptionsnhững gì được ném bởi ứng dụng của bạn. Với điều này, bạn không cần phải xóa logcat và thực hiện lại sự cố. Tôi nghĩ Android Studio cũng có tùy chọn này.
Marco Acierno

1
Lọc logcat trong Eclipse có thể được thực hiện bằng cách nhập tên gói java trong trường tên ứng dụng của bộ lọc.
Stephane

Tôi nghĩ rằng điểm chính là hiểu được dấu vết trở lại khi có ngoại lệ. FC là một chút xấu khi không có dấu vết trở lại hoặc không thể sử dụng được, đó là nơi nó có lông. nhưng tôi nghĩ rằng lời giải thích này là một giới thiệu đầu tiên tốt đẹp trong việc tìm / xác định các lỗi như vậy.
DooMMasteR

4
Mọi thứ thật dễ dàng khi logcat của bạn có một số dấu vết lỗi, nhưng trong trường hợp logcat không có gì? stackoverflow.com/questions/32455645/
Mạnh

4
Vấn đề là dòng không chứa lỗi được viết và chỉ bởi dấu vết ngăn xếp.
Hilal

117

Bạn có thể sử dụng công cụ ADB của Google để có được Logcat fileđể phân tích vấn đề này.

adb logcat > logcat.txt

mở logcat.txttập tin và tìm kiếm tên ứng dụng của bạn. Cần có thông tin về lý do tại sao nó thất bại, số dòng, tên lớp, v.v.


Điều này thật tuyệt, nó sẽ hiển thị cho bạn nhanh chóng mọi thứ đang diễn ra trên thiết bị ngay cả khi trình gỡ lỗi của bạn không bắt được, điều này có thể xảy ra với Xamarin nếu thời gian chạy không tải được.
jvenema

1
Tôi không thể thấy lý do tại sao ứng dụng của tôi bị lỗi trong logcat của studio android, không có lỗi nào cả. Câu trả lời này đã cho tôi những gì tôi cần. Tuy nhiên, sau đó tôi nhận ra rằng tôi đã có một số bộ lọc trong logcat studio đang ngăn tôi nhìn thấy lỗi. Tôi đã chuyển trở lại "Chỉ hiển thị ứng dụng đã chọn" và tôi đã sao lưu và chạy.
Yannick

bạn nên thêm -d, nếu không bạn phải vào ctrl-C để thoát logcat. Tôi làmadb logcat -v time -d > filename.txt
Karakuri

37

Đầu tiên, bạn kiểm tra điểm nào ứng dụng của bạn bị sập ( Unfortunately, MyApp has stopped.). Đối với điều này, bạn có thể sử dụng Log.e("TAG", "Message");, sử dụng dòng này, bạn có thể thấy ứng dụng của mình đăng nhập logcat.

Sau đó, bạn thấy điểm nào mà ứng dụng của bạn dừng lại rất dễ giải quyết ở bên bạn.


28

Chỉ cần kiểm tra lỗi trong log mèo.

Bạn nhận được tùy chọn mèo đăng nhập từ trong nhật thực:

cửa sổ-> hiển thị chế độ xem-> người khác-> Android-> Logcat

Nhật ký mèo chứa lỗi.

Thông thái khác, bạn cũng có thể kiểm tra lỗi bằng cách thực thi một ứng dụng trong chế độ gỡ lỗi. Trước tiên, thiết lập điểm dừng sau đó bằng cách thực hiện:

nhấp chuột phải vào dự án-> gỡ lỗi như-> ứng dụng Android


27

Lưu ý: Câu trả lời này đang sử dụng Android Studio 2.2.2

Lưu ý 2: Tôi đang xem xét rằng thiết bị của bạn được kết nối thành công.


Điều đầu tiên bạn làm khi ứng dụng của bạn gặp sự cố là nhìn vào LogCat, ở cuối Android Studio có một thanh công cụ với một danh sách các menu:

hình ảnh

Nhấp vào "Màn hình Android" (Cái tôi đã gạch chân trong hình trên. ^)

Bây giờ, bạn sẽ nhận được một cái gì đó như thế này:

hình ảnh

Thay đổi " Verbose" thành " Error" Bây giờ nó sẽ chỉ hiển thị cho bạn các lỗi đã đăng nhập. Đừng lo lắng về tất cả các lỗi này (nếu bạn mắc phải) ngay bây giờ.

hình ảnh

Đồng ý. Bây giờ, làm những gì bạn đã làm để sụp đổ ứng dụng của bạn. Sau khi ứng dụng của bạn gặp sự cố, hãy truy cập logcat của bạn. Bạn nên tìm một bản ghi sự cố mới có rất nhiều at:x.x.x: và Caused by: TrumpIsPresidentExceptionví dụ. Đi đến Caused by:tuyên bố đó trong logcat của bạn.

hình ảnh

Bên cạnh đó Caused By:, nên có Ngoại lệ đã xảy ra. Trong trường hợp của tôi, đó là một RuntimeExceptionbên dưới nó nên có một dòng chứa một liên kết màu xanh như:

hình ảnh

Nếu điều đóCaused by: KHÔNG có một dòng với một văn bản màu xanh ở đâu đó bên dưới nó, thì hãy tìm một dòng khác Caused by:.

Nhấp vào liên kết màu xanh đó . Nó sẽ đưa bạn đến nơi xảy ra vấn đề. Trong trường hợp của tôi, đó là do dòng này:

throw new RuntimeException();

Vì vậy, bây giờ tôi biết tại sao nó bị rơi. Đó là vì tôi đang tự ném ngoại lệ. Đây là một lỗi rõ ràng .


Tuy nhiên, giả sử tôi gặp một lỗi khác:

java.lang.NullPointerException

Tôi đã kiểm tra logcat của mình, tôi nhấp vào liên kết màu xanh mà nó đưa cho tôi và nó đưa tôi đến đây:

mTextView.setText(myString);

Vì vậy, bây giờ tôi muốn gỡ lỗi. Theo câu hỏi StackOverflow này , một NullPulumException nói rằng có gì đó null.

Vì vậy, hãy tìm hiểu những gì là null . Có hai khả năng. Hoặc mTextViewlà null, hoặc myStringlà null. Để tìm hiểu, trước mTextView.setText(mString)dòng, tôi thêm hai dòng sau:

Log.d("AppDebug","mTextView is null: " + String.valueOf(mTextView == null);
Log.d("AppDebug","myString is null: " + String.valueOf(myString== null);

Bây giờ, giống như chúng tôi đã làm trước đây (Chúng tôi đã thay đổi Verose thành Lỗi), chúng tôi muốn thay đổi "Lỗi" thành "Gỡ lỗi". Vì chúng tôi đang đăng nhập bằng cách gỡ lỗi. Đây là tất cả các phương thức Log:

Log.
  d means Debug
  e means error
  w means warning
  v means verbose
  i means information
  wtf means "What a terrible failure". This is similar to Log.e

Vì vậy, vì chúng tôi đã sử dụng Log.d, chúng tôi đang kiểm tra trong Debug. Đó là lý do tại sao chúng tôi thay đổi nó để gỡ lỗi.

Thông báo Log.dcó một tham số đầu tiên, trong trường hợp của chúng tôi là "AppDebug". Nhấp vào menu thả xuống "Không có bộ lọc" ở phía trên bên phải của logcat. Chọn "Chỉnh sửa cấu hình bộ lọc", đặt tên cho bộ lọc của bạn và trong "Thẻ nhật ký" đặt "Gỡ lỗi ứng dụng". Nhấp vào "OK". Bây giờ, bạn sẽ thấy hai dòng trong logcat:

yourPackageNameAndApp: mTextView is null: true
yourPackageNameAndApp: myString is null: false

Vì vậy, bây giờ chúng ta biết rằng mTextView là null.

Tôi quan sát mã của tôi, bây giờ tôi nhận thấy một cái gì đó.

Tôi đã private TextView mTextViewtuyên bố ở đầu lớp của tôi. Nhưng, tôi không định nghĩa nó.

Về cơ bản, tôi đã quên làm điều này trong onCreate ():

mTextView = (TextView) findViewById(R.id.textview_id_in_xml);

Vì vậy, đó mTextViewlà lý do tại sao là không, bởi vì tôi quên nói với ứng dụng của mình nó là gì. Vì vậy, tôi thêm dòng đó, chạy ứng dụng của mình và bây giờ ứng dụng không gặp sự cố.



1
Đây là thông tin tốt, nhưng sử dụng hình ảnh của Stack Trace làm giảm tính hữu dụng của nó - hình ảnh không thể được tìm kiếm, không thể sao chép và dán, không thể được đọc bởi trình đọc màn hình và khó đọc hơn. (Nhân tiện, tôi đã không downvote, chỉ chỉ ra điều đó).
EJoshuaS - Phục hồi Monica

1
@EJoshuaS Tôi không nói là cung cấp hình ảnh tho.
Ab

19

Cửa sổ bật lên này chỉ hiển thị khi bạn nhận được một ngoại lệ nghiêm trọng trong mã của mình, điều đó sẽ dừng việc thực thi ứng dụng. Nó có thể là bất kỳ ngoại lệ NullPointerException,OutOfMemoryException vv

Cách tốt nhất để kiểm tra là thông qua Logcat nếu bạn vẫn đang phát triển ứng dụng trong studio Android, đây là cách nhanh chóng để đọc theo dõi ngăn xếp và kiểm tra nguyên nhân của ứng dụng.

Nếu ứng dụng của bạn đã hoạt động, thì bạn không thể sử dụng logcat . Vì vậy, để bạn có thể thực hiện Crashlyticsđể cung cấp cho bạn các báo cáo lỗi về bất kỳ ngoại lệ nào xảy ra.


17

Kiểm tra Logcattin nhắn của bạn và xem Manifesttập tin của bạn . Cần thiếu một cái gì đó như xác định sự Activity,cho phép của Người dùng, v.v.


14

Bạn có thể sử dụng bất kỳ công cụ nào sau đây:

  1. đăng nhập adb

  2. adb logcat> log.txt (bạn có thể sử dụng các trình soạn thảo để mở và tìm kiếm lỗi.)

  3. nhật thực nhật thực (Nếu không hiển thị trong nhật thực, hãy truy cập Windows-> Hiển thị chế độ xem-> Khác-> Android-> LogCat)

  4. Trình theo dõi gỡ lỗi Android hoặc Trình giám sát thiết bị Android (loại trình giám sát lệnh hoặc mở thông qua giao diện người dùng)

nhập mô tả hình ảnh ở đây

  1. Studio Android

Tôi đề nghị sử dụng Android Debug Monitor , nó là tốt. Bởi vì nhật thực bị treo khi có quá nhiều nhật ký, và thông qua bộ lọc logcat adb và tất cả đều khó khăn.


12

Bạn phải kiểm tra Stack trace

Làm thế nào để làm điều đó?

trên IDE của bạn Kiểm tra biểu mẫu cửa sổ LOGCAT

Nếu bạn không thể thấy các cửa sổ logcat đi đến đường dẫn này và mở nó

window->show view->others->Android->Logcat

nếu bạn đang sử dụng Google-Api, hãy đi đến đường dẫn này

adb logcat> logcat.txt


10

Trong phương thức showToast () bên dưới, bạn phải truyền một tham số khác cho ngữ cảnh hoặc bối cảnh ứng dụng bằng cách thực hiện để bạn có thể thử nó.

  public void showToast(String error, Context applicationContext){
        LayoutInflater inflater = getLayoutInflater();
        View view = inflater.inflate(R.layout.custom_toast, (ViewGroup)      
        findViewById(R.id.toast_root));
        TextView text = (TextView) findViewById(R.id.toast_error);
        text.setText(error);
        Toast toast = new Toast(applicationContext);
        toast.setGravity(Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0);
        toast.setDuration(Toast.LENGTH_SHORT);
        toast.setView(view);
        toast.show();
}

9

Hãy để tôi chia sẻ một phân tích Logcat cơ bản khi bạn gặp Force Close (khi ứng dụng ngừng hoạt động).

TÀI LIỆU

Công cụ cơ bản từ Android để thu thập / phân tích nhật ký là logcat.

ĐÂY là trang của Android về logcat

Nếu bạn sử dụng Android Studio, bạn cũng có thể kiểm tra LINK này .

Chụp

Về cơ bản, bạn có thể MANUALLY chụp logcat bằng lệnh sau (hoặc chỉ cần kiểm tra cửa sổ AndroidMonitor trong AndroidStudio):

adb logcat

Có rất nhiều tham số bạn có thể thêm vào lệnh giúp bạn lọc và hiển thị thông báo mà bạn muốn ... Đây là thông tin cá nhân ... Tôi luôn sử dụng lệnh bên dưới để lấy dấu thời gian của tin nhắn:

adb logcat -v time

Bạn có thể chuyển hướng đầu ra thành một tệp và phân tích nó trong Trình soạn thảo văn bản.

Phân tích

Nếu ứng dụng của bạn gặp sự cố, bạn sẽ nhận được một cái gì đó như:

07-09 08:29:13.474 21144-21144/com.example.khan.abc D/AndroidRuntime: Shutting down VM
07-09 08:29:13.475 21144-21144/com.example.khan.abc E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.khan.abc, PID: 21144
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.onBackPressed()' on a null object reference
     at com.example.khan.abc.AudioFragment$1.onClick(AudioFragment.java:125)
     at android.view.View.performClick(View.java:4848)
     at android.view.View$PerformClick.run(View.java:20262)
     at android.os.Handler.handleCallback(Handler.java:815)
     at android.os.Handler.dispatchMessage(Handler.java:104)
     at android.os.Looper.loop(Looper.java:194)
     at android.app.ActivityThread.main(ActivityThread.java:5631)
     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:959)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
07-09 08:29:15.195 21144-21144/com.example.khan.abc I/Process: Sending signal. PID: 21144 SIG: 9

Phần này của nhật ký cho bạn thấy rất nhiều thông tin:

  • Khi sự cố xảy ra: 07-09 08:29:13.475

Điều quan trọng là kiểm tra khi sự cố xảy ra ... Bạn có thể tìm thấy một số lỗi trong nhật ký ... bạn phải chắc chắn rằng bạn đang kiểm tra các thông báo phù hợp :)

  • Ứng dụng nào bị lỗi: com.example.khan.abc

Bằng cách này, bạn biết ứng dụng nào bị lỗi (để chắc chắn rằng bạn đang kiểm tra nhật ký về tin nhắn của mình)

  • Mà LRI: java.lang.NullPointerException

Một lỗi ngoại lệ con trỏ NULL

  • Thông tin chi tiết về lỗi: Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.onBackPressed()' on a null object reference

Bạn đã cố gắng gọi phương thức onBackPressed()từ một FragmentActivityđối tượng. Tuy nhiên, đối tượng đó là nullkhi bạn làm điều đó.

  • Stack Trace: Stack Trace hiển thị cho bạn thứ tự gọi phương thức ... Đôi khi, lỗi xảy ra trong phương thức gọi (và không phải trong phương thức được gọi).

    tại com.example.khan.abc.AudioFragment $ 1.onClick (AudioFragment.java:125)

Đã xảy ra lỗi trong tệp com.example.khan.abc.AudioFragment.java, bên trong onClick()phương thức tại dòng: 125(stacktrace hiển thị dòng đã xảy ra lỗi)

Nó được gọi bởi:

at android.view.View.performClick(View.java:4848)

Mà được gọi bởi:

at android.view.View$PerformClick.run(View.java:20262)

được gọi bởi:

at android.os.Handler.handleCallback(Handler.java:815)

Vân vân....

Tổng quat

Đây chỉ là một tổng quan ... Không phải tất cả các bản ghi đều đơn giản, v.v ... Nó chỉ là để chia sẻ ý tưởng và cung cấp thông tin cấp nhập cảnh cho bạn ...

Tôi hy vọng tôi có thể giúp bạn một cách nào đó ... Trân trọng


8

Sử dụng LogCat và cố gắng tìm ra nguyên nhân khiến ứng dụng bị sập.

Để xem Logcat nếu bạn sử dụng Android Studio, sau đó nhấn ALT + 6 hoặc

nếu bạn sử dụng Eclipse thì Window -> Mở phối cảnh -> Khác - LogCat

Chuyển đến LogCat, từ menu thả xuống chọn lỗi. Điều này sẽ chứa tất cả các thông tin cần thiết để giúp bạn gỡ lỗi. Nếu điều đó không có ích, hãy đăng LogCat dưới dạng chỉnh sửa cho câu hỏi của bạn và ai đó sẽ giúp bạn.


7

Nếu ứng dụng của bạn vì một số lý do gặp sự cố mà không có stacktrace tốt. Hãy thử gỡ lỗi từ dòng đầu tiên và đi từng dòng cho đến khi gặp sự cố. Sau đó, bạn sẽ có câu trả lời, dòng nào gây rắc rối cho bạn. Có lẽ sau đó bạn có thể bọc nó vào thử khối bắt và in lỗi đầu ra.


5

Bạn cũng có thể tự nhận thông báo lỗi này mà không có bất kỳ dấu vết ngăn xếp hoặc bất kỳ thông báo lỗi nào khác.

Trong trường hợp này, bạn cần đảm bảo bảng kê khai Android của bạn được định cấu hình chính xác (bao gồm mọi sự hợp nhất tệp kê khai xảy ra từ thư viện và mọi hoạt động đến từ thư viện) và đặc biệt chú ý đến hoạt động đầu tiên được hiển thị trong ứng dụng của bạn trong các tệp kê khai của bạn .


3
Tôi sẽ quan tâm nếu bạn có thể tải lên một dự án chứng minh hiện tượng này.
CommonsWare

5

Tai nạn trong quá trình phát triển

Hãy thử logview công cụ yêu thích của tôi để lấy nhật ký và phân tích chúng trong quá trình phát triển.
Đảm bảo đánh dấu ./logview./lib/logview.jarthực thi khi chạy trong Linux.

Nếu bạn không thích nó, có rất nhiều người xem nhật ký máy tính để bàn thay thế cho Android .

Tai nạn trong tự nhiên

Tích hợp một công cụ báo cáo sự cố theo thời gian thực như Firebase Crashlytics để có được các ngăn xếp ngoại lệ chưa được xử lý xảy ra trên thiết bị của người dùng.

Đọc cách phát hành ứng dụng Buggy (và sống để kể câu chuyện) để biết thêm về cách xử lý lỗi trong trường.


4

Mọi người mắc lỗi, và mã hóa cũng vậy.

Khi có bất kỳ điều errorgì xảy ra, luôn luôn kiểm tra logcat với văn bản có màu đỏ tuy nhiên bạn có thể tìm ra vấn đề thực sự trong văn bản màu xanh lam với gạch chân trong văn bản màu đỏ đó.

Hãy chắc chắn rằng nếu bạn tạo một cái mới activity, luôn luôn khai báo activitytrong AndroidManifesttệp.

Nếu thêm Quyền, hãy khai báo nó trong AndroidMainifesttệp.


4

Logcat - Để kiểm tra nhật ký trong giai đoạn phát triển của Android Studio

Ban đầu xóa Logcat và để ứng dụng gặp sự cố một lần nữa để bạn chỉ có thể nhận được chi tiết nhật ký bị hỏng. Bạn phải kiểm tra theo dõi Stack

Trong khi, thật không may, MyApp đã dừng lại. Có nhiều lý do cho nó. Bạn có thể kiểm tra tương tự trong nhật ký. Đối với điều này, bạn có thể sử dụng Log.e ("TAG", "Tin nhắn");

Lỗi thường gặp trong sự cố ứng dụng như:

  1. Lỗi mã hóa (Sử dụng sai từ khóa).
  2. Tên tài sản không phù hợp.
  3. Plugin không được hỗ trợ (có thể).
  4. Phiên bản không phù hợp (có thể).
  5. Hoạt động bị thiếu trong tệp AndroidManifest.
  6. Thiếu quyền trong tệp AndroidManifest.
  7. NullPulumException phổ biến nhất.
  8. Khai báo nhưng không xác định.

Để khắc phục lỗi sự cố ứng dụng:

  • Hãy ghi nhớ các điểm trên và đi qua nó.
  • Với lỗi, bạn sẽ nhận được tên tệp cũng có màu xanh lam (nhấp vào chúng và chuyển sang mã từ lỗi đang xảy ra).

3

Trước tiên, bạn cần kiểm tra vị trí và lý do ứng dụng của bạn bị sập (Unfortunately, MyApp has stopped.).Với sự trợ giúp của LOG, bạn có thể tìm ra sự cố.

Sau đó, bạn tìm thấy điểm nào mà ứng dụng của bạn đã dừng khắc phục điểm đó từ điểm của bạn.


3

Nếu bạn không có bất kỳ loại nhật ký thú vị nào trong thiết bị đầu cuối của mình (hoặc chúng không liên quan trực tiếp đến ứng dụng của bạn), có thể vấn đề của bạn là do thư viện gốc. Trong trường hợp đó, bạn nên kiểm tra các tệp "bia mộ" trong thiết bị đầu cuối của mình.

Vị trí mặc định cho các tệp bia mộ tùy thuộc vào mọi thiết bị, nhưng nếu đó là trường hợp, bạn sẽ có một nhật ký: Tombstone written to: /data/tombstones/tombstone_06

Để biết thêm thông tin, hãy kiểm tra https://source.android.com/devices/tech/debug .


0

Cũng chạy lệnh này trong terminal có thể giúp tìm ra vấn đề:

gradlew build > log.txt 2>details.txt

sau đó bạn nên đi đến vị trí tệp gradlew trong đọc hai tệp nhật ký ở trên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.