Trong ứng dụng Android, tôi cần sử dụng SDK cụ thể cho một thiết bị ngoại vi nhất định.Thư viện/nhập khẩu khác nhau tùy thuộc vào loại xây dựng
Tất cả mọi thứ hoạt động tốt với một xây dựng biến thể duy nhất:
provided fileTree(include: ['peripheral.jar'], dir: 'libs')
compile fileTree(exclude: ['peripheral.jar'], dir: 'libs')
Vấn đề là SDK dựa trên một thư viện chia sẻ được cài đặt trong thiết bị ngoại vi thực tế. Nếu tôi cố gắng cài đặt ứng dụng trong bất kỳ thiết bị Android nào khác (vì mục đích gỡ lỗi của các chức năng còn lại), tôi nhận được lỗi INSTALL_FAILED_MISSING_SHARED_LIBRARY
.
Tôi nghĩ rằng tôi có thể sử dụng hai xây dựng phiên bản:
release
, có sử dụng SDKdebug
, mà không sử dụng SDK
Tôi đã thử bao gồm SDK chỉ ở loại xây dựng release
:
releaseProvided fileTree(include: ['peripheral.jar'], dir: 'libs')
releaseCompile fileTree(exclude: ['peripheral.jar'], dir: 'libs')
Nhưng sau đó, tôi không thể biên dịch dự án vì thiếu hàng nhập khẩu.
Vì vậy, tôi nhân đôi lớp chỉ có sử dụng những hàng nhập khẩu:
Trong main/java/package/PeripheralManager.java
:
public class ScannerManager {
// fake
}
Trong release/java/package/PeripheralManager.java
:
import peripheral; <- IT FAILS WHEN COMPILING
public class ScannerManager {
// real code
}
Không quan trọng kiểu build tôi đã chọn, tôi có thể không biên dịch dự án nếu việc nhập không được giải quyết theo một trong các biến thể ...
Bạn có thể thử dùng nhiều lần để tránh trùng lặp hay không. –
Tôi chưa bao giờ sử dụng điều đó trước đây. Bạn có nghĩ rằng điều này không thể được giải quyết bằng cách sử dụng các loại xây dựng? – thelawnmowerman
Hy vọng nó sẽ giúp ích, tôi có thể chia sẻ câu trả lời ở đây không? –