5

Khi tôi xây dựng Amazon (Kindle) hương vị của ứng dụng Android của tôi, tôi chạy vào trong này lỗi Runtime:Lỗi thời gian chạy Android Studio Stub! tại com.amazon.device.messaging.ADMMessageReceiver. <init>()

Caused by: java.lang.RuntimeException: Stub! 
at com.amazon.device.messaging.ADMMessageReceiver.<init>() 

Tôi cần file amazon-thiết bị-messaging.jar địa phương để biên dịch ứng dụng của tôi, tuy nhiên Tôi không cần phải bao gồm nó trong thời gian chạy như thiết bị amazon sẽ có các lớp học và phương pháp cần thiết. Làm cách nào để cập nhật tệp build.gradle của Android Studio của tôi để thực hiện việc này?

Trả lời

4

Tôi cũng gặp sự cố này. Khi thêm Amazon Tin nhắn Device jar như thư viện, Android Studio sẽ tự động tạo ra

dependencies { 
    compile files('libs/amazon-device-messaging-1.0.1.jar') 
} 

Tôi chỉ cần thiết để chuyển đổi đó để

dependencies { 
    provided files('libs/amazon-device-messaging-1.0.1.jar') 
} 

đó đã làm các trick cho tôi. Tôi muốn bỏ phiếu cho câu trả lời của bạn, @Clu, nhưng tôi không có danh tiếng đủ cao.

+0

Cảm ơn! Có lẽ tôi không cần chi tiết cấu hình bổ sung. Tôi sẽ thử gỡ bỏ nó để xem nó vẫn hoạt động. – clu

+0

Có vẻ như câu trả lời đơn giản của bạn là cách chính xác để làm điều này, cảm ơn! – clu

+0

Tôi có bình ADM bên trong một dự án thư viện android, mặc dù tôi đã đề cập đến sự phụ thuộc của bình ADM như được cung cấp bên trong tệp build.grade của dự án android-library. Nó vẫn nhận được lỗi này. Bất kỳ giúp đỡ? – sanath01

5

Để giải quyết vấn đề này, tôi đã sử dụng loại phụ thuộc provided.

Bên trong module dự án của tôi build.gradle tập tin, ngay trước khi đóng cửa dependencies tôi bao gồm những điều sau đây:

configurations { 
    provided 
} 

sourceSets { 
    main { 
     compileClasspath += configurations.provided 
    } 
} 

Và sau đó, trong việc đóng cửa phụ thuộc của tôi, tôi bao gồm những điều sau đây:

dependencies { 
    provided files('libs/amazon-device-messaging-1.0.1.jar') 
} 

Điều này đảm bảo rằng .jar chỉ được sử dụng cho thời gian biên dịch và không phải thời gian chạy. Tôi khá mới với Android Studio, và điều này đã cho tôi một thời gian để tìm ra; hy vọng điều này cũng sẽ giúp bạn chuyển sang Android Studio.

+1

Nếu thư viện và cuộc gọi đến thư viện nằm trong các gói khác nhau, 'được cung cấp' sẽ bị bỏ qua và thư viện bị loại ra sẽ được biên dịch vào APK. Điều này có thể được giải quyết bằng cách đặt thư viện vào kho lưu trữ Maven. –

1
  1. Thêm bình ADM vào kho lưu trữ cục bộ Maven.

Command:

  mvn install:install-file "-Dfile=amazon-device-messaging-1.0.1.jar" "-DgroupId=com.amazon.device.messaging" "-DartifactId=amazondevicemessaging" "-Dversion=1.0.1" "-Dpackaging=jar" 
  1. Bao gồm kho maven địa phương như phụ thuộc dự án:

Add “mavenLocal()” trong Gradle chính xây dựng kịch bản:

  allprojects { 
      repositories { 
          mavenCentral() 
          mavenLocal() 
      } 
  1. Liên kết Maven tạo tác trong dự án ADM.

Thêm dòng dưới đây ADMWrapperLib Gradle script (: :).

  provided 'com.amazon.device.messaging:amazondevicemessaging:1.0.1' 
Các vấn đề liên quan