অন্যান্য সংস্থানগুলির রেফারেন্সগুলি বিল্ড-টাইম পিএনজি জেনারেশন দ্বারা সমর্থিত নয়


130

AndroidStudio 3.0 / Android গ্রেডল প্লাগইন 3.0

<vector>
  <path android:fillColor="@color/image_button_disabled"/>
</vector>

আমি এই ত্রুটি পেয়েছি:

অন্যান্য সংস্থাগুলির উল্লেখগুলি বিল্ড-টাইম পিএনজি জেনারেশন দ্বারা সমর্থিত নয়

এটির সমাধান করা কি সম্ভব হবে না এটি একটি অবহেলিত সমাধান?


উত্তর:


315

API এসডিকে সমর্থন করতে <24 আপনার অ্যাপে নিম্নলিখিত লাইনটি যুক্ত করুন build.gradle:

defaultConfig{
   vectorDrawables.useSupportLibrary = true
}

যদি আপনার minSdkVersion 24 বা উচ্চতর হয়, তবে আপনার সমস্যাটি তার নিজেরাই সমাধান করা হবে, কারণ ভেক্টরড্রাব্যাবলের এই এপিআই দিয়ে শুরু করার সম্পূর্ণ সমর্থন রয়েছে।

অ্যান্ড্রয়েড বিকাশকারীদের দেখুন : বিশদটির জন্য ভেক্টর ড্রয়াবলগুলি পশ্চাদপটে সামঞ্জস্য সমাধান


4
তবে কেন বিষয়টি সামনে আসছে এবং উপরের সমাধানটি কি কুইকফিক্স বা একটি ভাল কৌশল?
প্রাণেশর্মা


1
দ্রষ্টব্য: UseSupportLibrary হ'ল আমার পক্ষে ভুল সমাধান (ন্যূনতম SDK 16, টার্গেট 26), অ্যাপ্লিকেশন শুরুতে ক্রাশ হয়। আমাকে এটি অপসারণ করতে হয়েছিল, ভেক্টরগুলি থেকে @ রঙটি সরিয়ে ফেলতে হয়েছে এবং কেবল সমস্ত অ্যান্ড্রয়েড অনুসন্ধান এবং প্রতিস্থাপন করতে হয়েছিল: ফিল কালার = টুকরোটি ম্যানুয়ালি। এটি আসলে খুব দ্রুত, 10 সেকেন্ড নিন
djdance

আমি এই লাইনটি কোথায় যুক্ত করব?
রায়মসনসন

অ্যান্ড্রয়েড কী এর ভিতরে রয়মনসন Wonil এর উত্তর দেখুনএই থ্রেডে নিজেই ।
আরবিটি

14

আপনাকে সরাসরি কোনও সংস্থার উল্লেখ না করে হেক্স কোড ব্যবহার করতে হবে।

<vector
  <path
    android:fillColor="#FFF"/></vector>

1
এটি একটি রিগ্রেশন সংস্করণ ... আপনি যদি রঙ পরিবর্তন করতে চান তবে আপনি একে একে পরিবর্তন করতে পারবেন ... রঙ ফাইলে একটি রেফারেন্স তৈরি করা এবং এটি পরিবর্তন করা সহজ।
27:40

দুর্ভাগ্যক্রমে সেখানে আপনার অ্যাপ্লিকেশনটি কাজ করার একমাত্র উপায় বা আপনাকে আপনার গ্রেড সংস্করণটি হ্রাস করতে হবে
ওসেসা অ্যারোভা

3
আমারও একই সমস্যা আছে। পূর্বে সূক্ষ্মভাবে কাজ করা এমন বৈশিষ্ট্যটি কেন অক্ষম হবে? এটি সম্ভবত একটি বাগ আছে?
joomgcd

আমি সবেমাত্র এএস 3 এ আপডেট হয়েছি এবং এই সমস্যাটিও পেয়েছি। কেন সেই বৈশিষ্ট্যটি সরানো হবে?
মার্টি

1
এটি একটি কর্মক্ষেত্র হিসাবে কাজ করে, তবে "ডান" উত্তরটি আপনার @ যোগ vectorDrawables.useSupportLibrary = trueকরার জন্য @ mwa91 এর উত্তর build.gradle
শান বারবেউ

9

এই ত্রুটির জন্য সামান্য বিট প্রসঙ্গ:

  • অ্যান্ড্রয়েড 5.0 (এপিআই স্তর 21) আনুষ্ঠানিকভাবে ভেক্টর ড্রয়াবল সমর্থন করার প্রথম সংস্করণ ছিল।
  • আপনি যদি 20 এর চেয়ে কম minSdkVersion ব্যবহার করেন তবে ভেক্টর আঁকার জন্য দুটি সমাধান রয়েছে
    • অ্যান্ড্রয়েড স্টুডিওর ভেক্টর সম্পদ স্টুডিও পিএনজি উত্পন্ন করে। কটাক্ষপাত দয়া করে অ্যান্ড্রয়েড স্টুডিও ডকুমেন্ট । কিন্তু, অন্যান্য সংস্থাগুলির উল্লেখগুলি বিল্ড-টাইম পিএনজি জেনারেশন দ্বারা সমর্থিত নয়।
    • সমর্থন লাইব্রেরি ব্যবহার করুন
  • বা, minSdkVersion এর জন্য 21 বা ততোধিক ব্যবহার করুন

সমর্থন লাইব্রেরির জন্য, আপনার বিল্ড.gradle ফাইলটিতে একটি বিবৃতি যুক্ত করুন:

android {
  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }
}

dependencies {
  compile 'com.android.support:appcompat-v7:23.2.0'
}

@ মাইকহানাফাই আপনি কি দয়া করে দস্তাবেজের দিকে লক্ষ্য রাখতে পারেন কেন মিনিএসডিকি ভার্সন 24 হবে? ধন্যবাদ।
Wonil

নীচের বার্তাটি minSdkVersion এ 24 পর্যন্ত না বাড়িয়ে দেওয়া হয় I আমার কাছে কোনও ব্যাখ্যা নেই এবং গ্রেড বিল্ডটি সফল না হওয়া অবধি মানটি বাড়িয়েই এটি পেয়েছি। ত্রুটি: java.lang.RuntimeException: java.lang.RuntimeException: প্রক্রিয়া চলাকালীন ত্রুটি। বিল্ড-টাইম পিএনজি জেনারেশন দ্বারা সংস্থানগুলি সমর্থন করে না। বিশদগুলির জন্য বিকাশকারী.অ্যান্ড্রয়েড . com/ tools/ help/ vector- asset- studio.html দেখুন ।
মাইক হানাফেই

3
@ মাইকহানাফেই মিনিএসডিকি ভার্সনটি অবশ্যই 24 টি হতে হবে যদি আপনি অ্যান্ড্রয়েড: ফিলিপ টাইপ ব্যবহার করেন তবে কখনও কখনও অ্যান্ড্রয়েড ভেক্টর অ্যাসেটটি স্বয়ংক্রিয়ভাবে প্রবেশ করে Just এটি এ থেকে মুক্তি পান।
সিমোন

1
@ সিমোন এই পরামর্শের জন্য আপনাকে ধন্যবাদ। আমার ক্ষেত্রে বিষয়টি ছিল।
আব্দুল রেহমান ইয়াওর খান

ডিফল্ট fillTypeহল nonZeroকিন্তু এটি শুধুমাত্র থেকে পৃথক evenOddনির্দিষ্ট ক্ষেত্রে: w3.org/TR/SVG/painting.html#FillRuleProperty
hmac

4

ভেক্টরের আঁকতে কেবল রঙের রেফারেন্সটি ফিলক্লোর এট্রিবিটিতে ব্যবহার করবেন না হেক্সা কোড ব্যবহার করুন

এই মত ব্যবহার করুন

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
<path
    android:fillColor="#1abc9c"
    android:pathData="M9,11L7,11v2h2v-2zM13,11h-2v2h2v-2zM17,11h-2v2h2v-2zM19,4h-1L18,2h-2v2L8,4L8,2L6,2v2L5,4c-1.11,0 -1.99,0.9 -1.99,2L3,20c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.9,-2 -2,-2zM19,20L5,20L5,9h14v11z"/>

এর পরিবর্তে

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
<path
    android:fillColor="@color/colorPrimary"
    android:pathData="M9,11L7,11v2h2v-2zM13,11h-2v2h2v-2zM17,11h-2v2h2v-2zM19,4h-1L18,2h-2v2L8,4L8,2L6,2v2L5,4c-1.11,0 -1.99,0.9 -1.99,2L3,20c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.9,-2 -2,-2zM19,20L5,20L5,9h14v11z"/>


2
এটি একটি প্যাচ, আমি সমস্ত অঙ্কনযোগ্যকে নকল না করে আমার অ্যাপটিকে পুনরায় থিম করতে সক্ষম হতে চাই, এটি ভেক্টোরিয়াল রাখার পরিবর্তে পিএনজি তৈরি করছে। লোকেরা @ mwa91 এর সমাধান ব্যবহার করা উচিত।
কিকিওয়া

4

যদি আপনার minSdkVersion 21 হয় আপনি এই লাইনটি যুক্ত করে পিএনজি প্রজন্মকে অক্ষম করতে পারবেন:

// set to an empty list to disable the feature
vectorDrawables.generatedDensities = [] 

এই লাইনটি সরিয়ে ফেললে এখনও পিএনজি তৈরি হবে।

উত্স: http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.VectorDrawablesOptions.html


0

নিম্নলিখিত কাজগুলি করে আমি এটিকে ঘিরে কাজ করতে সক্ষম হয়েছি:

  1. একটি অঙ্কনযোগ্য-v21 ফোল্ডার তৈরি করুন এবং আপনার সমস্ত অঙ্কনযোগ্য xmls অনুলিপি করুন যা সেখানে ভেরিয়েবল ব্যবহার করে
  2. মূল অঙ্কনীয় ফোল্ডারে স্ট্যাটিক রঙ ব্যবহার করতে সমস্ত আইকন পরিবর্তন করুন

এইভাবে সংকলক কাজ করবে


1
হ্যাঁ, সম্ভবত এআইপি 21 21 অ্যান্ড্রয়েড 5.0 (ললিপপ) সমর্থন করে যা ভেক্টর ড্রয়াবল স্থানীয়ভাবে সমর্থন করে। তবে, পূর্ববর্তী সংস্করণগুলির সাথে ডিভাইসগুলিতে তখন কোনও সঠিক চিত্র থাকতে পারে: ডেভেলপার.অ্যান্ড্রয়েড.
com

0

আমি মনে করি আপনি android:fillColor="@color/image_button_disabled"এই কোডটি ভেক্টর আঁকার জন্য ব্যবহার করছেন ।

// image_button_disabled.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/circular_image_color_pressed" android:state_pressed="true" />
    <item android:color="@color/circular_image_color_normal" />
</selector>

এটি সমর্থিত নয়।

কেবল এটির সাথে প্রতিস্থাপন করুন android:fillColor="#c4ca5e"


0

পর্যন্ত যোগ করতে @ mwa91 উত্তর

যদি আপনার আঁকার যোগ্য গতিশীল থাইশিংয়ের প্রয়োজন হয় তবে আপনার লেআউটগুলি আপডেট করার জন্য এবং @ এমওয়া answer৯ উত্তর সহ গিয়ে সমস্ত android:src="@drawable/..."বৈশিষ্ট্য পরিবর্তনের জন্য আপনার সময় নেই app:srcCompat="@drawable/...", আপনি সর্বদা আঁকতে হেক্স রঙের মানটি ব্যবহার করতে পারেন এবং পরে চিত্রকল্পে অঙ্কনযোগ্যকে রঙ করতে পারেন:

<ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:src="@drawable/your_drawable"
      android:tint="@color/image_button_disabled"
      />
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.