2016-02-28 15 views
9

Sau khi đã định cấu hình chạy ngay lập tức, nút chạy có một thunderbolt nhỏ màu vàng.Trong khi tôi chạy ứng dụng, Android Studio vẫn thực hiện bản dựng đầy đủ &, thông báo đầy đủ được liệt kê trong hình.Chạy tức thì không hoạt động do "nhiều quá trình"

Tôi đã tìm kiếm tài liệu chính thức trong http://tools.android.com/tech-docs/instant-run, nhưng không có bất kỳ điều gì về "nhiều quá trình" .Tôi tự hỏi "nhiều quá trình" có nghĩa là biên dịch hoặc ứng dụng android của tôi.

Tôi nên định cấu hình gì để tắt nhiều quy trình và trải nghiệm ngay lập tức?

Trả lời

9

Run tức thì không được kích hoạt cho ứng dụng của bạn bởi vì nó được sử dụng nhiều quy trình.

Như đã trình bày trên các công cụ Android Địa điểm dự án (http://tools.android.com/recent/androidstudio20beta6availableinthecanarychannel):

"Ứng dụng đã được sử dụng nhiều quy trình (thông qua android: quá trình trong manifest). Đã không được cập nhật đúng với Run tức thì Đối với thời điểm hiện tại, chúng tôi đã tắt tính năng Chạy tức thì trong một kịch bản như vậy. "

Do đó, để trải nghiệm ngay lập tức, bạn phải đảm bảo ứng dụng của bạn không sử dụng nhiều quy trình. Kiểm tra tệp AndroidManifest.xml của bạn để biết điều này.

Có thể là việc sử dụng nhiều quy trình đến từ thư viện được nhập. LeakCanary, ví dụ, sử dụng nhiều quy trình, được định nghĩa trong tệp AndroidManifest.xml của riêng nó. Cách tốt nhất để tìm vị trí này được xác định là tìm kiếm toàn bộ dự án của bạn (Cmd-Shift-F trong Android Studio trên OS X) cho "android: process".

+3

tôi cần phải loại bỏ LeakCanary và ProcessPhoenix từ ứng dụng của tôi để làm được việc này . Đó là những thủ phạm. Ngoài ra, đáng chú ý là tôi đã được thông báo rằng điều này đã được khắc phục và sẽ được phát hành trong AS 2.0.0-beta7. – loeschg

+0

Làm tốt lắm! Cảm ơn bạn đã cập nhật, sẽ tốt nếu điều này được khắc phục trong bản phát hành tiếp theo. – Jannik

+0

Xin lỗi vì đã đến trễ. Kết luận sau này của tôi giống như câu trả lời của bạn. Cảm ơn ~ – futureer

3

Tôi đã gặp sự cố này khi chạy ProcessPhoenix. Thay vì vô hiệu hóa nó hoàn toàn, tôi chỉ vô hiệu hóa nó để xây dựng gỡ lỗi của tôi.

Thay vì compile tôi sử dụng
releaseCompile 'com.jakewharton:process-phoenix:2.0.0'

Và để không phá vỡ xây dựng tôi sử dụng phản ánh để kích hoạt quá trình ứng dụng khởi động lại:

try { 
    Class clazz = Class.forName("com.jakewharton.processphoenix.ProcessPhoenix"); 
    Method triggerRebirthMethod = clazz.getMethod("triggerRebirth", Context.class); 
    triggerRebirthMethod.invoke(this, new Object[]{getActivity()}); 
} catch (Exception e) { 
    // Exception handling 
} 

Vì vậy, bây giờ tôi vẫn có thể sử dụng Run tức thì và giữ bao gồm lib. :)

(Tất nhiên, phản ánh không bao giờ là lý tưởng, nhưng quá trình ứng dụng khởi động lại chỉ được sử dụng trong một trường hợp đặc biệt hiếm trong ứng dụng.)

Các vấn đề liên quan