2014-11-02 13 views
5

Tôi có một thư viện với một số widget trong trung tâm maven. Khi tôi thêm thư viện đó như là một sự phụ thuộc (từ maven trung ương) cho một dự án sử dụng gradle, tôi nhận được:Android Library Declare-Styleable Runtime Error

java.lang.NoClassDefFoundError: com.my.pacakge.R$styleable 

Nếu tôi tự tải về .aar và bao gồm trong dự án, tất cả mọi thứ hoạt động tốt. Tôi đã thử sử dụng hoàn thành mã của Android Studio để xem liệu có bao gồm R của thư viện hay không. Khi tôi sử dụng phụ thuộc maven, gõ com.my.pacakge.R trả về không có kết quả, nhưng khi tôi sử dụng một địa phương .aar nó trả về R cho thư viện.

Dưới đây là mã thư viện:

// widget constructor 
public ForegroundImageView(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ForegroundImageView); 
    Drawable foreground = a.getDrawable(R.styleable.ForegroundImageView_android_foreground); 
    if (foreground != null) { 
     setForeground(foreground); 
    } 
    a.recycle(); 
} 

// attrs.xml 
<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="ForegroundImageView"> 
     <attr name="android:foreground"/> 
    </declare-styleable> 
</resources> 
+0

Vui lòng cho chúng tôi biết tệp xây dựng nơi bạn bao gồm sự phụ thuộc. –

+0

Tôi có cùng một vấn đề với aar của tôi. Tôi không thể đặt thư viện của mình trên maven vì nó không thể sử dụng các thuộc tính có thể tạo kiểu. "publishNonDefault false" không hoạt động đối với tôi. – NeoKree

Trả lời