বিল্ড ফ্লেভারগুলি ব্যবহার করুন - উত্স ফোল্ডারগুলি গঠন এবং বিল্ড.gradle সঠিকভাবে rad


166

দয়া করে নোট করুন: জাভিয়ারের উত্তর পরে সম্পাদিত উত্তর

আমি অ্যান্ড্রয়েড স্টুডিওতে একই অ্যাপ্লিকেশন প্রকল্পের জন্য বিভিন্ন বিল্ড ফ্লেভারগুলি ব্যবহার করার চেষ্টা করছি । যাইহোক, আমি এটি সঠিকভাবে কাজ করার জন্য কনফিগার করার জন্য একটি ভীষণ সময় ব্যয় করছে বলে মনে হচ্ছে।

পদক্ষেপ:

  1. 'টেস্ট' নামে একটি নতুন অ্যান্ড্রয়েড স্টুডিও প্রকল্প তৈরি করুন।
  2. Build.gradle * খুলুন এবং নিম্নলিখিত লাইনগুলি যুক্ত করুন:

    productFlavors {
    flavor1 {
        packageName 'com.android.studio.test.flavor1'
        }
    flavor2 {
        packageName 'com.android.studio.test.flavor2'
        }
    }
  3. অ্যান্ড্রয়েড স্টুডিও পুনরায় চালু করার পরে, আমি এখন বিল্ড ভেরিয়েন্ট বিভাগের অধীনে 4 টি বিল্ড ভেরিয়েন্ট দেখতে পাচ্ছি । অর্থ আমরা এতক্ষণে পণ্যগুলির স্বাদগুলি সেট আপ করতে সফল ছিলাম। **
  4. ফ্লেভার 1 এর জন্য একটি নতুন উত্স ফোল্ডার তৈরি করেছে ; তবে আমি এটি সঠিক উপায়ে করছি কিনা তা নিশ্চিত নই। আমি এটি কীভাবে করেছি তা এখানে:

    • মনে রাখবেন যে এই প্রকল্পের জন্য আমার প্যাকেজটির নাম: com.foo.test
    • srcফ্লেভারে ডান ক্লিক করুন , ফ্লেভার 1 এর জন্য, আমি প্রকৃতপক্ষে এককভাবে কাঠামোর মতো করে এক্সপ্লোরারটিতে পৃথক ফোল্ডার তৈরি করেছি src/flavor1/java/com/foo/test/MainActivity.java
    • উপরের অংশটি ভালভাবে কাজ করেছে, যেহেতু 'জাভা' ফোল্ডারটি নীল রঙে রয়েছে , যার অর্থ আইডিই এর একটি সক্রিয় উত্স ডিরেক্টরিটি জানে। এছাড়াও, প্যাকেজটি স্বয়ংক্রিয়ভাবে তৈরি হয়েছিল। তবুও, আমি নকল শ্রেণীর সন্ধানের জন্য সতর্কতা পাচ্ছি। স্ক্রিনশটটি এখানে দেখুন।
    • ফ্লেভার 2 এর জন্য, আমি প্যাকেজটি ম্যানুয়ালি তৈরি করার চেষ্টা করেছি, তবে ফ্লেভার 2 এর জন্য 'এসসিআর' ফোল্ডারটি নীল রঙে নেই বলে মনে হয় এবং তাই ডান ক্লিক করলে বিকল্পগুলি আলাদা হয় এবং 'নতুন প্যাকেজ' আমার ব্যবহারের জন্য উপলব্ধ হয় না। এখানে চিত্র দেখুন।
    • নোট করুন যে ফ্লেভার 1 এর জন্য, আমি একটি 'রেজ' ডিরেক্টরিও তৈরি করেছি, যা নীল হয়ে যায়, তবে এর পরেও, আমি অন্যরকম ব্যবহার করতে চাইলে কোনও অ্যান্ড্রয়েড রিসোর্স ফাইল, বা অ্যান্ডোরিড রিসোর্স ডিরেক্টরি তৈরি করার ক্ষমতা সরবরাহ করে না বিভিন্ন স্বাদ জন্য resoruces।

আমি কি ভুল কিছু করছি? নাকি আমি কিছু মিস করছি? তোমার আরো তথ্য জানার থাকলে আমাকে বলো.

* আমার প্রকল্পে দুটি বিল্ড.gradle ফাইল রয়েছে বলে মনে হচ্ছে । প্রজেক্ট ফোল্ডারের (\ গ্রেডেল টেস্ট) মূলের মধ্যে একটি, এটি খালি। দ্বিতীয়টি \ গ্রেডল টেস্টের সাবফোল্ডারের মূলের উপর অবস্থিত, এছাড়াও 'গ্রেডেল টেস্ট' (গ্রেডল টেস্ট-গ্রেডেলস্টেস্ট) লেবেলযুক্ত, এটি সেই যা ইতিমধ্যে কোডটি খোলার আগেই ছিল; অতএব, এটি আমি সম্পাদিত।

** আমি গ্রেড সেটিংস পরীক্ষা করেছি এবং স্পষ্টতই ব্যবহার করুন স্বতঃ-আমদানি ইতিমধ্যে সক্ষম হয়েছিল তবুও , বিল্ড. gradle ফাইলটিতে পরিবর্তনগুলি বিল্ড ভেরিয়েন্টগুলি স্বয়ংক্রিয়ভাবে আপডেট করে নাদ্রষ্টব্য: আমি বিল্ড - পুনর্নির্মাণ প্রকল্প, এবং / অথবা বিল্ড - মেক প্রজেক্টটি, যেতে হবে না ব্যবহার করেও চেষ্টা করেছি। আমাকে এখনও প্রকল্পটি বন্ধ করতে হবে এবং পরিবর্তনগুলি কার্যকর করতে পুনরায় খুলতে হবে।


নোট যে applicationIdএখন পরিবর্তে সমর্থিত packageName
হামজেহ সোবহ

উত্তর:


220

আপনি যদি গ্রেডল বিভাগের অধীনে স্টুডিও পছন্দগুলিতে পেয়ে থাকেন তবে আপনি আপনার প্রকল্পের জন্য স্বতঃ-আমদানি সক্ষম করতে পারবেন (আমরা এটি পরে ডিফল্টরূপে সক্ষম করব)। এটি যখনই আপনি এটি সম্পাদনা করেন তবে স্টুডিওটিকে আপনার বিল্ড.রাডল পুনরায় আমদানি করতে দেবে।

স্বাদ তৈরির অর্থ এই নয় যে আপনি তাদের জন্য কাস্টম কোড ব্যবহার করছেন তাই আমরা ফোল্ডারগুলি তৈরি করি না। এগুলি আপনার নিজের তৈরি করা দরকার।

আপনি যদি আমার আইও টকটির দিকে নজর দেন তবে আপনি দেখতে পাবেন কীভাবে আমরা স্বাদ থেকে মানগুলি একসাথে মিশ্রিত করি এবং বৈকল্পিক তৈরি করতে টাইপ তৈরি করি।

জাভা উত্সের জন্য:

src/main/java
src/flavor1/java
src/debug/java

সমস্ত 3 একক আউটপুট তৈরি করতে ব্যবহৃত হয়। এর অর্থ তারা একই ক্লাসটি সংজ্ঞায়িত করতে পারে না।

আপনি যদি দুটি ফ্লেভারে একই শ্রেণির আলাদা সংস্করণ রাখতে চান তবে আপনাকে এটি উভয় স্বাদে তৈরি করতে হবে।

src/flavor1/java/com/foo/A.java
src/flavor2/java/com/foo/A.java

এবং তারপরে আপনার এসআরসি / মেইন / জাভাতে কোড করতে পারে

import com.foo.A

নির্বাচিত গন্ধের উপর নির্ভর করে com.foo.A এর সঠিক সংস্করণ ব্যবহার করা হয়েছে।

এর অর্থ এ এর ​​উভয় সংস্করণের একই API থাকতে হবে (কমপক্ষে যখন এটি এসআরসি / মেইন / জাভা / এর ক্লাস দ্বারা ব্যবহৃত API এ আসে ...

সংশোধিত প্রশ্নের সাথে মেলে সম্পাদনা করুন

অতিরিক্তভাবে, একই উত্সটি কেবল উত্স ফোল্ডারে যে পারস্পরিকভাবে একচেটিয়া করা উচিত তা রাখা গুরুত্বপূর্ণ। এক্ষেত্রে src / flavore1 / java এবং src / flavor2 / java কখনই একসাথে নির্বাচিত হয় না, তবে মূল এবং flavore1 হয়।

আপনি যদি বিভিন্ন গন্ধে কোনও ক্রিয়াকলাপের আলাদা সংস্করণ সরবরাহ করতে চান তবে এটি এসআরসি / মেইন / জাভাতে রাখবেন না।

মনে রাখবেন যে আপনার যদি 3 টি স্বাদ থাকে এবং কেবল ফ্লেভার 1 এর জন্য একটি কাস্টম চাইতেন, যখন ফ্ল্যাভার 2 এবং ফ্লেভার 3 একই ক্রিয়াকলাপটি ভাগ করে নেন তবে আপনি এই দুটি অন্যান্য ক্রিয়াকলাপের জন্য একটি সাধারণ উত্স ফোল্ডার তৈরি করতে পারেন। নতুন উত্স ফোল্ডারগুলি তৈরি করতে এবং সেগুলি ব্যবহারের জন্য উত্স সেটটি কনফিগার করতে আপনার সম্পূর্ণ নমনীয়তা রয়েছে।

আপনার অন্যান্য বিষয়গুলিতে:

এটি স্বাভাবিক যে ২ য় স্বাদের উত্স ফোল্ডারটি নীল নয়। এটি সক্ষম করতে আপনাকে ২ য় স্বাদে স্যুইচ করতে হবে এবং তারপরে আপনি ভিতরে প্যাকেজ এবং ক্লাস তৈরি করতে সক্ষম হবেন। ততক্ষণ স্টুডিও এটিকে উত্স ফোল্ডার হিসাবে বিবেচনা করে না। আইডিইকে those নিষ্ক্রিয় উত্স ফোল্ডারগুলি সম্পর্কে সচেতন করতে আমরা ভবিষ্যতে আশা করি এটির উন্নতি করব ।

আমি মনে করি এটিও স্বাভাবিক যে আপনি রেজোল্ড ফোল্ডারে রিসোর্স ফাইল তৈরি করতে পারবেন না। এই সমস্ত অতিরিক্ত সংস্থান ফোল্ডারগুলি মোকাবেলায় মেনু সিস্টেম আপডেট করা হয়নি। এটি পরে আসবে।


1
আমি আমার উত্তরের শেষে কিছু নতুন উপাদান যুক্ত করেছি, তবে সদৃশটি বোঝায়। Src / main / java এবং src / flavore1 / java উভয়ই flaver1 নির্বাচন করার সময় আপনার উভয় ক্ষেত্রে একই ক্লাস থাকতে পারে না। আমার উত্তরে, লক্ষ্য করুন যে কীভাবে আমি কেবল একই স্বাদে 1 / জাভা এবং ফ্লেভার 2 / জাভাতে একই ক্লাসটি রেখেছি কারণ এগুলি একচেটিয়া এবং কখনও একসাথে সক্ষম হয় না।
জাভিয়ের ডুকরোহেট

আরে জাভিয়ার, আমি কীভাবে আমার স্বাদে কোনও ক্রিয়াকলাপের আলাদা সংস্করণ ব্যবহার করতে পারি তার আরও বিশদ বিবরণ দিতে পারেন? আমার একটি পরীক্ষার প্রকল্প রয়েছে যেখানে আমি আমার মেইনএকটিভিটির বিভিন্ন সংস্করণ ব্যবহার করতে চাই, তবে উভয় অ্যাপস (flavore1 এবং flavore2) এ কেবল প্রধান / জাভা সংস্করণ রয়েছে। আমি যখন মেইনএ্যাকটিভিটি মেইন / জাভাতে রাখি না, অ্যাপ্লিকেশনটি যখন আমি এটি শুরু করি তখন ক্রাশ হয়।
জেনস জেনসেন 11

@ জাভিয়ারডুক্রোয়েট কীভাবে বিভিন্ন রিসোর্সের পাশাপাশি স্বাদের উপর ভিত্তি করে বিভিন্ন কোড রাখার বিষয়ে, তবে সেগুলিকে বিভিন্ন মডিউলে রাখুন যাতে আমরা একই মূল প্রকল্পে কোড এবং সংস্থানগুলি মিশ্রিত না করে গন্ধের উপর ভিত্তি করে একটি মডিউল বা অন্যটি অন্তর্ভুক্ত করতে পারি? এটি কি সমর্থিত?
ভ্যালেরিও স্যান্টিনেল্লি

3
@ ভালেরিওসন্তাইনেলি আপনি প্রতি স্বাদ নির্ভরতা করতে পারেন। ব্যবহারflavorCompile ...
জাভেয়ের ডুকরোহেট

@ জাভিয়ার ডুক্রোহেট আপনার পরামর্শ অনুযায়ী আমি চেষ্টা করেছিলাম কিন্তু এটি আমার প্রত্যাশা অনুযায়ী কাজ করছে না। আপনি দেখতে পারেন কিভাবে আমার প্রকল্প সেখানে গঠিত হয়: stackoverflow.com/q/24410995/443136
Valerio Santinelli

19

অ্যান্ড্রয়েডে "পণ্য স্বাদ"

একই অ্যাপ্লিকেশনটির বিভিন্ন সংস্করণে ডিপেন্ডিং করে বিভিন্ন হোস্ট, আইকন, এমনকি প্যাকেজ নামগুলির সাথে কীভাবে কাজ করবেন সে সম্পর্কে আমাকে মাঝে মাঝে জিজ্ঞাসা করা হয়েছিল।

এটি করার অনেক কারণ এবং যেতে একটি সহজ উপায় রয়েছে: পণ্য স্বাদসমূহ।

আমি আপনার বিল্ড। স্প্রেড স্ক্রিপ্টে এই ধরণের জিনিসগুলি আগে বর্ণনা করেছি।

পণ্যের স্বাদ এই নিবন্ধটির কিছু অংশ পণ্যগুলির স্বাদ নিয়ে চিন্তাভাবনা করে লেখা হয়েছে, তাই, সেগুলি কী? অ্যান্ড্রয়েড ডকুমেন্টেশন সম্পর্কিত:

একটি পণ্য স্বাদ প্রকল্প দ্বারা অ্যাপ্লিকেশন বিল্ড একটি কাস্টমাইজড সংস্করণ সংজ্ঞায়িত করে। একটি একক প্রকল্পের বিভিন্ন স্বাদ থাকতে পারে যা উত্পন্ন অ্যাপ্লিকেশনটিকে পরিবর্তন করে।

আপনি কিভাবে তাদের সংজ্ঞা দিতে পারেন? আপনি অবশ্যই আপনার বিল্ড.gradle এ লিখতে হবে যে কোন স্বাদগুলি আপনি সংজ্ঞায়িত করতে চান:

productFlavors {  
        ...
        devel {
            ...
        }

        prod {
            ...
        }
    }

এখন, আমাদের অ্যাপ্লিকেশনটির দুটি ভিন্ন স্বাদ থাকবে। আপনি বিল্ড ভেরিয়েন্টস ট্যাবটির ভিতরেও এটি অ্যান্ড্রয়েড স্টুডিওতে পরীক্ষা করতে পারেন

রূপগুলি তৈরি করুন

একাধিক প্যাকেজের নাম

আপনি যদি আপনার ফোনে একটি অ্যাপ্লিকেশন ইনস্টল করতে চান তবে একটি অ্যাপ্লিকেশন ডেভলপমেন্ট স্টেট এবং একটিতে প্রোডাকশন স্টেটের জন্য থাকতে হবে। আপনারা জানেন যে, আপনি একই প্যাকেজটির নামের সাথে একটি অ্যাপ্লিকেশন ইনস্টল করতে পারেন (আপনি যদি আপনার ফোনে ইনস্টল করা অ্যাপ্লিকেশনটির মতো কিছু নতুন এপিপি ইনস্টল করার চেষ্টা করেন তবে এটি আপডেট করার চেষ্টা করবে)।

আপনার কেবলমাত্র কাজটি হ'ল এটি আপনার প্রতিটি পণ্যের স্বাদে এটি সংজ্ঞায়িত করা:

android {  
    productFlavors {
        devel {
            applicationId "zuul.com.android.devel"
        }
        prod {
            applicationId "zuul.com.android"
        }
    }
}

স্বাদের উপর নির্ভর করে একাধিক হোস্টকে অনুরোধগুলি প্রেরণ করুন আগের মতো, আপনার পণ্য স্বাদের কনফিগারেশনের ক্ষেত্রে আপনাকে অবশ্যই কিছু প্যারাম অন্তর্ভুক্ত করতে হবে।

android {  
    productFlavors {
        devel {
            applicationId "zuul.com.android.devel"
            buildConfigField 'String', 'HOST', '"http://192.168.1.34:3000"'

        }

        prod {
            applicationId "zuul.com.android"
               buildConfigField 'String', 'HOST', '"http://api.zuul.com"'

        }
    }
}

উদাহরণস্বরূপ, আমরা আপনাকে দেখানোর চেষ্টা করব যে আপনি কী সার্ভারটি নির্দেশ করছেন এবং স্বাদের উপর ভিত্তি করে পরিচালনা না করে অ্যাপোপিয়েট সার্ভারে অনুরোধ প্রেরণের জন্য আপনি কীভাবে এটিকে retrofit এর সাথে সংহত করতে পারেন। এই ক্ষেত্রে এটি জুউল অ্যান্ড্রয়েড অ্যাপ্লিকেশনটির একটি অংশ:

public class RetrofitModule {

    public ZuulService getRestAdapter() {
        RestAdapter restAdapter = new RestAdapter.Builder()
                .setEndpoint(BuildConfig.HOST)
                .setLogLevel(RestAdapter.LogLevel.FULL)
                .build();
        return restAdapter.create(ZuulService.class);
    }

}

আপনি দেখতে পাচ্ছেন যে আপনার সুনির্দিষ্টভাবে নির্ধারিত পরিবর্তনশীলটি অ্যাক্সেস করতে আপনাকে কেবল বিল্ডকনফিগক্লাস ব্যবহার করতে হবে lass

আপনার কোডের মাধ্যমে যে কোনও ভেরিয়েবল পাওয়া যায় এইচওএসটি ভেরিয়েবল কেবলমাত্র আপনার কোডটিতে প্রকাশ করতে পারবেন না। আপনি যা চান তা দিয়ে এটি করতে পারেন:

prod {  
    applicationId "zuul.com.android"
    buildConfigField 'String', 'HOST', '"http://api.zuul.com"'
    buildConfigField 'String', 'FLAVOR', '"prod"'
    buildConfigField "boolean", "REPORT_CRASHES", "true"
}

আপনি সেগুলি নিম্নলিখিত হিসাবে অ্যাক্সেস করতে পারেন:

BuildConfig.HOST  
BuildConfig.FLAVOR  
BuildConfig.REPORT_CRASHES  

স্বাদে পৃথক আইকন আপনি যদি স্বাদে বিভিন্ন আইকন রাখতে চান, তবে আপনি কোনটি খোলছেন তা দৃশ্যত সনাক্ত করতে পারবেন (আপনি নাম দিয়ে এটিও করতে পারেন ... তবে এটি স্থানটি ফিট করতে পারে না!), আপনার কেবল আছে প্রতিটি স্বাদে নতুন ডিরেক্টরি কাঠামো সংজ্ঞায়িত করতে।

উদাহরণ হিসাবে আমি সবেমাত্র দুটি স্বাদ ব্যবহার করেছি: ডেভেল এবং প্রোড। তারপরে, আমরা একটি দুটি নতুন ডিরেক্টরি কাঠামো সংজ্ঞায়িত করতে পারি যাতে আমরা আমাদের সংস্থানগুলি সংজ্ঞায়িত করতে পারি:

গঠন

এটি অন্যান্য ধরণের সংস্থান যেমন strings.xml, integers.xml, arrays.xmlইত্যাদির সাথে কাজ করে

সাইনিং সেটিংস কনফিগার করুন

গ্রেডল বিল্ড কনফিগারেশন ব্যবহার করে আপনার রিলিজ বিল্ড টাইপের জন্য স্বাক্ষরকারী কনফিগারেশনগুলি ম্যানুয়ালি কনফিগার করতে:

1. একটি কীস্টোর তৈরি করুন। কীস্টোর হ'ল একটি বাইনারি ফাইল যা ব্যক্তিগত কীগুলির একটি সেট থাকে। আপনাকে অবশ্যই আপনার কীস্টোরটি নিরাপদ এবং সুরক্ষিত জায়গায় রাখতে হবে। 2. একটি ব্যক্তিগত কী তৈরি করুন। একটি ব্যক্তিগত কী অ্যাপ্লিকেশন যেমন কোনও ব্যক্তি বা কোনও সংস্থার সাথে সনাক্ত করার জন্য সত্তাকে প্রতিনিধিত্ব করে। 3. মডিউল স্তরের বিল্ড.gradle ফাইলটিতে স্বাক্ষরকারী কনফিগারেশন যুক্ত করুন:

android {
...
defaultConfig {...}
signingConfigs {
    release {
        storeFile file("myreleasekey.keystore")
        storePassword "password"
        keyAlias "MyReleaseKey"
        keyPassword "password"
    }
}
buildTypes {
    release {
        ...
        signingConfig signingConfigs.release
    }
}

}

একটি স্বাক্ষরিত APK তৈরি করুন:

একটি স্বাক্ষরিত APK জেনারেট করার জন্য, মূল মেনু থেকে বিল্ড> জেনারেট সাইনড এপিএক নির্বাচন করুন। অ্যাপ / বিল্ড / এপিকে / অ্যাপ-রিলিজ.এপকে থাকা প্যাকেজটি এখন আপনার রিলিজ কীতে স্বাক্ষরিত হয়েছে।

রেফ: https://developer.android.com/studio/build/build-variants.html#signing,http://blog.brainattica.com/how-to-work-with-flavours-on-android/



7

দেখে মনে হচ্ছে নতুন স্বাদ যুক্ত করার পরে আপনার নিজের প্রকল্পটি পুনরায় লোড করা দরকার build.gradle। এর পরে, আপনি বিল্ড ভেরিয়েন্টস ভিউতে 4 টি বিল্ড ভেরিয়েন্ট দেখতে পাবেন (আপনি উইন্ডোর বাম প্রান্ত থেকে এটি অ্যাক্সেস করতে পারেন)।

অতিরিক্ত উত্স ডিরেক্টরিগুলি সম্পর্কিত, আপনার নিজের হাতে এগুলি তৈরি করা দরকার বলে মনে হচ্ছে: src/flavor1/javaএবং src/flavor2/java। আপনি দেখতে পাবেন যে "বিল্ড ভেরিয়েন্টস" ভিউতে স্বাদ পরিবর্তন করা বর্তমানে সক্রিয় উত্স ডিরেক্টরিগুলি পরিবর্তন করবে (ডিরেক্টরিটি যখন এটি একটি সক্রিয় উত্স ডিরেক্টরি হয় তখন নীল হয় )

অবশেষে, তার মানে gradle বস্তু তৈরি করবে "gradle আপনার নতুন স্বাদে জন্য নতুন sourceSets তৈরি করবে" android.sourceSets.flavor1এবং android.sourceSets.flavor2এবং আপনি আপনার build.gradle লিপিতে তাদের ব্যবহার করতে পারেন। তবে এই বিষয়গুলি গতিশীলভাবে তৈরি করা হয়েছে, এজন্য আপনি এগুলিতে এগুলি দেখতে পাবেন না build.gradle(আমি আপনাকে এটি পড়ার পরামর্শ দিচ্ছি: http://www.gradle.org/docs/current/userguide/tutorial_ using_tasks.html বিশেষত the..6: এটি ব্যাখ্যা করে ডায়নামিক টাস্ক তৈরি করা। গ্রেড স্ক্রিপ্ট একটি গ্রোভি স্ক্রিপ্ট, সুতরাং আমি আপনাকে গ্রোভির সাথেও পরিচিত হওয়ার পরামর্শ দিই)


2
আমি মনে করি আমদানি নোটটি Build Variantsদেখুন, আমি এটি লক্ষ্য করিনি।
ক্রিস জেনকিনস

2

আমার প্রকল্পটি গ্র্যাডলে স্থানান্তরিত করার সময় আমার একই সমস্যা ছিল। সমস্যাটি ছিল বিল্ডটি সঠিক সংস্থান ফোল্ডারটি খুঁজে পায় নি। আমি বিল্ড.gradle এ এন্ড্রয়েড উপাদানটির আওতায় এটি সংশোধন করেছি:

sourceSets {
        main {
            res.srcDirs = ['myProject/res']
        }
    }

0

কিছুটা গুরুত্বপূর্ণ যা আমাকে এবং বেশ কিছু সময়ের জন্য অবরুদ্ধ করে রেখেছিল তা হল সেই স্বাদের নাম যা গ্রেডের মধ্যে স্বাদ সংজ্ঞাটির অভ্যন্তরে সংজ্ঞায়িত প্যাকেজের বিপরীতে প্যাকেজের সাথে মেলে প্রয়োজন। উদাহরণ স্বরূপ:

src/flavor1/java/com/foo/A.java

মিলবে

productFlavors {
  flavor1 {
    packageName 'com.android.studio.test.foobar'
  }
}

কিন্তু

src/foobar/java/com/foo/A.java flav11 বিল্ড জন্য ব্যবহৃত হবে না।


0

গ্রেডে:

বিল্ড প্রকারের জন্য আপনার কেবল প্রয়োজন:

buildTypes {
   release{
    //proguard, signing etc.
   }
   debug {
    //development
   }
  }
}

এবং তারপরে স্বাদগুলির জন্য আপনার প্রয়োজনীয়গুলি যুক্ত করুন

productFlavors {
    pro {
        applicationIdSuffix '.paid'
        buildConfigField 'boolean', 'PRO', 'true'
    }
    free {
        applicationIdSuffix '.free'
        buildConfigField 'boolean', 'PRO', 'false'
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.