2016-06-28 13 views
7

मैं अपने ऐप में कुछ वेक्टर ड्रॉबल्स का उपयोग कर रहा हूं लेकिन केवल v21 और ऊपर के लिए - वे संसाधन फ़ोल्डर ड्रायबल-एडीडीपीआई-वी 21 में हैं और अन्य एपीआई स्तरों के लिए फ़ॉलबैक बिटमैप संस्करण भी हैं (drawable-hdpi .mdpi, ...)।एंड्रॉइड रोबोलेक्ट्रिक और वेक्टर ड्रॉबल्स

जब मैं इस config

@Config(sdk = 16, application = MyApp.class, constants = BuildConfig.class, packageName = "com.company.app") 

मैं इन ड्रॉएबल

Caused by: android.content.res.Resources$NotFoundException: File ./app/build/intermediates/data-binding-layout-out/dev/debug/drawable-anydpi-v21/ic_info_outline_white_24dp.xml from drawable resource ID #0x7f02010e 
Caused by: org.xmlpull.v1.XmlPullParserException: XML file ./app/build/intermediates/data-binding-layout-out/dev/debug/drawable-anydpi-v21/ic_info_outline_white_24dp.xml line #-1 (sorry, not yet implemented): invalid drawable tag vector 

build.gradle के प्रासंगिक भागों का उपयोग कर विचारों का फुलाना पर निम्न त्रुटि प्राप्त के साथ एक robolectric चलाने हैं:

android { 
     compileSdkVersion 23 
     buildToolsVersion "23.0.3" 
     defaultConfig { 
     applicationId "com.example.app" 
     minSdkVersion 16 
     targetSdkVersion 23 
     versionCode 79 
     versionName "0.39" 
     // Enabling multidex support. 
     multiDexEnabled true 
     vectorDrawables.useSupportLibrary = true 

     testApplicationId "com.example.app.test" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
     } 
     testOptions { 
     unitTests.returnDefaultValues = true 
     } 
    } 
    dependencies { 
    compile 'com.android.support:support-vector-drawable:23.4.0' 
    testCompile "org.robolectric:robolectric:3.1" 
    testCompile "org.robolectric:shadows-multidex:3.1" 
    testCompile "org.robolectric:shadows-support-v4:3.1" 
    } 

तो ऐसा लगता है कि मैंने एसडीके = 16 रोबॉलेक्ट्रिक निर्दिष्ट किया है drawable-anydpi-v21 से drawables ake।

  1. क्या यह एक बग roboelectric है? या

  2. क्या एपीके स्तर क्या है यह निर्दिष्ट करने का एक बेहतर तरीका है? या

  3. क्या रोबियोइलेक्ट्रिक वेक्टर टैग पढ़ने का कोई तरीका है? या

  4. ऐसा करने का कोई अन्य तरीका?

+0

क्या आप अपना 'build.gradle' दिखा सकते हैं? यह सुनिश्चित करने के लिए कि आप वेक्टर ड्रॉबल्स का उपयोग कैसे करते हैं –

+0

build.gradle – siliconeagle

+0

यह इस तरह काम नहीं करता है कि आपके पास 'डिफ़ॉल्ट कॉन्फिग { vectorDrawables.useSupportLibrary = true } 'है? –

उत्तर

0

आप एक काम कर सकते हैं। RoboElectric के स्रोत ले लो और

AppCompatDrawableManager.get().getDrawable(context, drawableId) 

संकलित roboelectric के साथ सभी लाइनों

ContextCompat.getDrawable(context, drawableId) 

की जगह और इसका इस्तेमाल करते हैं। यह रॉबॉयलेक्ट्रिक वैक्टरों का उपयोग करने की अनुमति देगा।

3

क्या आपको विशेष रूप से लक्षित करने के लिए अपने परीक्षणों की आवश्यकता है JELLYBEAN?

को देखते हुए आप विशेष रूप से जेलीबीन लक्षित करने के लिए अपने परीक्षण की आवश्यकता होती है, तो आप कर सकते हैं res/drawable-v21 फ़ोल्डर बजाय res/drawable-anydpi-21 की में अपने V21 + संपत्ति रखना चाहते हैं।

मुझे हाल ही में ImageView जोड़ने के बाद परीक्षणों के साथ एक ही त्रुटि मिल रही है जो VectorDrawable का उपयोग अपने स्रोत के रूप में करता है।

@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP, packageName = "com.package") 

आशा इस मदद करता है:

<ImageView 
    android:contentDescription="@string/content_image_description" 
    android:src="@drawable/banner" 
    android:layout_gravity="right" 
    android:layout_width="@dimen/banner_width" 
    android:layout_height="@dimen/banner_height" 
    /> 

robolectric v3.1 का उपयोग करना, मैं अपने परीक्षण पाने के लिए निम्नलिखित config एनोटेशन के साथ फिर से पारित करने में सक्षम था।

संबंधित मुद्दे