গুগল-সেবা.জসন বিভিন্ন পণ্য ফ্লেভারের জন্য


453

আপডেট: GCM অবমূল্যায়িত হয়েছে, এফসিএম ব্যবহার করুন

আমি এখানে Google বিকাশকারী পৃষ্ঠাগুলির গাইড অনুসরণ করে নতুন গুগল ক্লাউড মেসেজিং বাস্তবায়ন করছি

আমি এটি সফলভাবে চালিয়েছি এবং পরীক্ষা করেছি। তবে এখন আমার সমস্যা হ'ল আমার কাছে বিভিন্ন অ্যাপ্লিকেশনআইডি / প্যাকেজনাম এবং বিভিন্ন গুগল ক্লাউড মেসেজিং প্রকল্প আইডির সাথে বিভিন্ন পণ্যের স্বাদ রয়েছে। google-services.jsonএ করা হবে /app/google-services.jsonনা স্বাদে ফোল্ডার।

google-services.jsonঅনেক স্বাদের জন্য কনফিগারটি আলাদা করার কোনও উপায় আছে কি ?


মাভেনের জন্য, আমরা
মেনেন

1
আপনি যদি কেবল প্রেরক_ইড ব্যবহার করতে চান তবে গুগল কনসোল থেকে কোনও প্যাকেজের নাম ছাড়াই কী উত্পন্ন করুন।
মুর্তজা খুরশীদ হুসেন

apply plugin: 'com.google.gms.google-services'গ্রেড ফাইলের রেখায় gcmস্ট্রিংগুলি মনে হচ্ছে app/build/generated/res/google-services/debug/values/values.xml...
আলেকজান্ডার ফারবার

আমি এর জন্য সবচেয়ে ভাল উত্তর খুঁজে পেয়েছি এটি এই প্রশ্নের উপর
এসটেল

এটি পড়ার বিষয়ে নিশ্চিত হন: firebase.googleblog.com/2016/08/… এটি প্রতিটি সম্ভাবনা এবং ট্রেডঅফসকে অন্তর্ভুক্ত করে।
আলবার্ট ভিলা ক্যালভো

উত্তর:


509

গুগল প্লে পরিষেবাদি প্লাগইনটির ২.০ সংস্করণে স্বাদের জন্য সমর্থন অন্তর্ভুক্ত করেছে। যেহেতু এই সংস্করণgradle plugin com.google.gms:google-services:2.0.0-alpha3

তুমি এটি করতে পারো

app/src/
    flavor1/google-services.json
    flavor2/google-services.json

প্লাগইনটির সংস্করণ 3.0.0 এই জায়গাগুলিতে জেসন ফাইল অনুসন্ধান করে (আপনার flavorস্বাদ 1 এবং একটি বিল্ড ধরণের বিবেচনা করে debug):

/app/src/debug/google-services.json
/app/src/debug/flavor1/google-services.json
/app/google-services.json

এটি আমার জন্য এমনকি ফ্ল্যাওয়ারডাইমেনশনগুলি ব্যবহার করে কাজ করেছে। আমি এক মাত্রায় বিনামূল্যে এবং অর্থ প্রদান করেছি এবং অন্য মাত্রায় মক এন্ড প্রোড। আমার কাছে 3 বিল্ডটাইপস রয়েছে: ডিবাগ, রিলিজ এবং মঞ্চায়ন। ফ্রিপ্রড স্বাদে এটি আমার প্রকল্পে কেমন দেখাচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

আপনার প্রকল্পের বৈশিষ্ট্যের উপর কতগুলি google-Services.json ফাইল নির্ভর করবে তবে প্রতিটি গুগল প্রকল্পের জন্য আপনার কমপক্ষে একটি জসন ফাইলের প্রয়োজন হবে।

এই জেসন ফাইলগুলির সাথে এই প্লাগইনটি কী করে সে সম্পর্কে আপনি যদি বিশদ চান, তবে তা এখানে রয়েছে: https://github.com/googlesults/google-services/issues/54#issuecomment-165824720

অফিসিয়াল ডক্সে লিঙ্ক করুন: https://developers.google.com/android/guides/google-services-plugin

আপডেট হওয়া তথ্যের সাথে ব্লগ পোস্ট: https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html

এবং এই প্লাগইনের সর্বশেষতম সংস্করণটি পরীক্ষা করতে এখানে যান: https://bintray.com/android/android-tools/com.google.gms.google-services/view


13
এটি কোনও কারণে আমার জন্য কাজ করছে না - আমি গ্রেড বিল্ড ত্রুটি পেয়েছি so File google-services.json is missing from module root folder. The Google Services Plugin cannot function without it.তাই আমি বিল্ড স্ক্রিপ্টের মাধ্যমে প্রতিবার রুট ফোল্ডারে ফ্লেভারের ফাইলটি অনুলিপি করতে যাব।
ডডজি_কোডার

2
কবজির মতো কাজ করেছেন, এর জন্য godশ্বরের ধন্যবাদ। গুগল-পরিষেবাদি.জসন এবং তাদের এপিআইএস ব্যবহারের এই সম্পূর্ণ নতুন পদ্ধতিটি মনে হয় এক ধাপ পিছনের দিকে। কীভাবে এটি আরও সহজ হওয়ার কথা Don't
RED_

140
googl-Services.json একটি ঘৃণা ... কেবলমাত্র একটি API কী এবং প্রেরক আইডি প্লাগিংয়ের চেয়ে কিছু ক্রেজি জসন ফাইল পরিচালনা করা কীভাবে সহজ? দয়া করে গুগল বোকা থামান
গ্রেগ এনিস

19
কনফিগারেশন ফাইল জেনারেটরের নতুন সংস্করণটি একই কনফিগার ফাইলে একাধিক বৈশিষ্ট্য রাখে, কেবল স্বাদ স্তরে পৃথক পৃথকের পরিবর্তে অ্যাপ্লিকেশন স্তরে আবার একটি প্রয়োজন। আপনার দু'টি কনফিগারেশন একই "অ্যাপ নাম" ক্ষেত্রের অধীনে তৈরি হয়েছে তা নিশ্চিত করতে হবে।
শ্রোসলেলি

5
অ্যান্ড্রয়েড স্টুডিও ৩.১.৪ অনুসারে /app/src/flavor1/google-services.json ব্যবহার করে আর কাজ করে না। ফাইলগুলি অবশ্যই অবশ্যই /app/src/flavor1/debug/google-services.json এবং /app/src/flavor1/re कृपया/google-services.json এ থাকা উচিত।
নুরাইডার

71

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

আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশন আইডি (সাধারণত প্যাকেজের নাম) এর জন্য একটি ফায়ারবেস অ্যাপ দরকার। গ্র্যাডল বিল্ড ভেরিয়েন্টের জন্য একটি অ্যাপ্লিকেশন আইডি পাওয়া সাধারণ (আপনি গ্র্যাডল বিল্ড টাইপ এবং গ্রেডল বিল্ড ফ্লেভারগুলি ব্যবহার করেন তবে এটি সম্ভবত হবে)


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

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

ফায়ারবেস কনসোলে আপনাকে প্যাকেজের নাম অনুসারে একটি অ্যাপ যুক্ত করতে হবে। কল্পনা করুন যে আপনার কাছে 2 টি স্বাদ (দেব এবং লাইভ) এবং 2 বিল্ড প্রকার (ডিবাগ এবং প্রকাশ) রয়েছে। আপনার কনফিগারেশনের উপর নির্ভর করে তবে সম্ভবত আপনার 4 টি পৃথক প্যাকেজ নাম রয়েছে:

  • com.stackoverflow.example (সরাসরি - প্রকাশ)
  • com.stackoverflow.example.dev (লাইভ - দেব)
  • com.stackoverflow.example.debug (ডিবাগ - প্রকাশ)
  • com.stackoverflow.example.dev.debug (ডিবাগ - দেব)

ফায়ারবেস কনসোলে আপনার জন্য 4 টি পৃথক অ্যান্ড্রয়েড অ্যাপ্লিকেশন দরকার। (প্রত্যেকটিতে আপনাকে ডিবাগের জন্য SHA-1 যুক্ত করতে হবে এবং আপনি যে প্রতিটি কম্পিউটার ব্যবহার করছেন তাতে লাইভ করতে হবে)

আপনি যখন গুগল-পরিষেবাদি.জসন ফাইলটি ডাউনলোড করেন, আসলে আপনি যে অ্যাপটি ডাউনলোড করেন তা থেকে আসলেই কিছু আসে যায় না, সেগুলির মধ্যে আপনার সমস্ত অ্যাপ্লিকেশনের সাথে সম্পর্কিত একই তথ্য থাকে।

এখন আপনার অ্যাপ্লিকেশন স্তরে (অ্যাপ /) এই ফাইলটি সনাক্ত করতে হবে locate

এখানে চিত্র বর্ণনা লিখুন

আপনি যদি ফাইলটি খোলেন তবে আপনি দেখতে পাবেন যে এতে যদি আপনার সমস্ত প্যাকেজ নামের সমস্ত তথ্য থাকে।

প্লাগইন হতে একটি ব্যথা পয়েন্ট ব্যবহার। এটি কাজ করার জন্য আপনাকে আপনার ফাইলের নীচে প্লাগইন সনাক্ত করতে হবে। সুতরাং এই লাইন ..

apply plugin: 'com.google.gms.google-services'

... আপনার অ্যাপ্লিকেশন build.gradle ফাইলের নীচে থাকা দরকার।

এখানে বলা বেশিরভাগের জন্য এটি পূর্ববর্তী সংস্করণগুলিতেও প্রযোজ্য। আমার কাছে বিভিন্ন কনফিগারেশনের জন্য আলাদা আলাদা ফাইল কখনও ছিল না তবে ফায়ারবেস কনসোলের সাহায্যে এখন আরও সহজ কারণ তারা আপনার সমস্ত কনফিগারগুলির জন্য প্রয়োজনীয় সমস্ত কিছু দিয়ে একটি একক ফাইল সরবরাহ করে।


আমি ডেভেলপার্স. google.com/mobile/add থেকে খনি উত্পন্ন করি এবং একটি প্যাকেজের নাম রাখার একমাত্র সুযোগ রয়েছে। এটি স্থাপন করার জন্য ফায়ারবেস স্থানটি কোথায়, বা কোনও গুগল-পরিষেবাদি.জসন ফাইলটি একাধিক স্বাদের সাথে দেখতে কেমন লাগে
সিকিউএম

@ সিকিউএম আমি উত্তরটি আপডেট করেছি কিছু লিঙ্ক যুক্ত করে। আপনি ফায়ারবেস ডকুমেন্টেশন পরীক্ষা করে দেখতে পারেন এবং উত্তরে বর্ণিত ফায়ারবেস কনসোলে আপনি জেএসএন ফাইল তৈরি করতে পারেন।
সোতি

7
এটি সত্যিই ভাল উত্তর এবং এটি এই প্রশ্নের একমাত্র সঠিক উত্তর হওয়া উচিত।
Nando

1
আপনি যখন এটি উপরে বর্ণনা করেছেন ঠিক তেমনই একই সমস্যার মধ্যে পড়ে আমি নিজেই এটি আবিষ্কার করেছিলাম। আমি এখানে উত্তরসূরির জন্য উত্তর জমা দিতে এসেছি কেবলমাত্র আপনি ইতিমধ্যে এটি সম্পন্ন করেছেন তা খুঁজে পেতে। সংস্করণ 3.0.0 সহ, এটি অবশ্যই সেরা উত্তর।
তাশ পেমিভা

6
মনে রাখবেন যে আপনার সমস্ত স্বাদ একই ফায়ারবেস প্রকল্পের মধ্যে থাকলে কেবল এটি কাজ করে। যদি একাধিক প্রকল্প ব্যবহার করা হয় (আমি একটি ফায়ারবেস প্রকল্পে দেব এবং মঞ্চ রাখার প্রবণতা রাখি এবং ভিন্ন গুগল একাউন্টে পৃথক ডেডিকেটেড প্রোজেক্টে উত্সাহিত করি), আপনার ইয়ায়ার কুকিল্কার দ্বারা বর্ণিত সমাধানের প্রয়োজন আছে। আসলে প্লাগইনটি বিভিন্ন ধরণের পথকে সমর্থন করে বলে মনে হয় - বিল্ড করার সময় আপনি প্লাগইনটি গুগল-পরিষেবাদি.জসন ফাইলটি কোথায় গিয়েছিল সে সম্পর্কে একটি ইঙ্গিত পাবেন: "[এসআরসি / প্রোডের খোঁজ করার সময় গুগল-পরিষেবাদি.জসন খুঁজে পাওয়া যায়নি) s / ডিবাগ, এসআরসি / ডিবাগ / প্রোড, এসসিআর / প্রোড, এসসিআর / ডিবাগ, এসআরসি / প্রোডাব্যাগ] "
জেএইচ এইচ

43

একটি মিডিয়াম পোস্ট লিখেছেনএই ইস্যুতে ।

একই রকম সমস্যা ছিল (স্বাদের পরিবর্তে বিল্ডটাইপগুলি ব্যবহার করে) এবং এটি ঠিক ঠিক করে ফেলা হয়েছে।

গ্রেডলের নির্ভরতা পরিচালন ব্যবস্থার সুবিধা নিন। আমি দুটি কাজ তৈরি করেছি, switchToDebugএবং switchToRelease। যে কোনও সময় assembleReleaseচালানো প্রয়োজন, switchToReleaseএটিও চালানো হয়। ডিবাগ একই।

def appModuleRootFolder = '.'
def srcDir = 'src'
def googleServicesJson = 'google-services.json'

task switchToDebug(type: Copy) {
    def buildType = 'debug'
    description = 'Switches to DEBUG google-services.json'
    from "${srcDir}/${buildType}"
    include "$googleServicesJson"
    into "$appModuleRootFolder"
}

task switchToRelease(type: Copy) {
    def buildType = 'release'
    description = 'Switches to RELEASE google-services.json'
    from "${srcDir}/${buildType}/"
    include "$googleServicesJson"
    into "$appModuleRootFolder"
}

afterEvaluate {
    processDebugGoogleServices.dependsOn switchToDebug
    processReleaseGoogleServices.dependsOn switchToRelease
}

সম্পাদনা: প্রতি-গন্ধ স্তরে এটি সংশোধন করতে processDebugFlavorGoogleServices/ processReleaseFlavorGoogleServicesটাস্ক ব্যবহার করুন ।


তবে এটি বিল্ডটাইপগুলির জন্য কাজ করে, স্বাদে নয় যেমন ওপি পোস্ট করেছে
bryant1410

1
@ ব্রায়ান্ট ১৪১০ আপনি যদি কোনও গন্ধ ব্যবহার করেন তবে - আমি অনুমান করছি যে পরিবর্তে আপনি প্রক্রিয়াডিব্যাগফ্লেভার গুগল সার্ভিসেস টাস্কে প্রবেশ করতে পারেন।
জাকট্যাকার্ডি

আমি মনে করি আপনার উত্তরটি এটিকে পরিবর্তন করা উচিত, কারণ প্রশ্নটি বিল্ডটাইপগুলি নয়, স্বাদ সম্পর্কিত। আমি মনে করি আপনি এই উত্তরটি দ্বিতীয় বিকল্প হিসাবেও ছেড়ে দিতে পারেন
bryant1410

1
@ ব্রায়ান্ট ১৪১০ মূলত কোনও গন্ধ বা বিল্ডটাইপের জন্য যুক্তিটি একই রকম। আপনার এটি নির্ধারণ করতে সক্ষম হওয়া উচিত
জাকট্যাকার্ডি

1
@ ইগোরগানাপলস্কি হ্যাঁ, দুটি সংস্করণ
জাকট্যাকার্ডি

13

ভাল আমি একই সমস্যার মধ্যে চলেছি এবং কোনও নিখুঁত সমাধান পেতে পারি না। এটি ঠিক একটি কর্মক্ষেত্র। আমি ভাবছি গুগল স্বাদ সম্পর্কে কীভাবে ভাবেনি ...? এবং আমি আশা করি তারা শীঘ্রই আরও ভাল সমাধানের প্রস্তাব দেবেন।

আমি কি করছি:

আমার দুটি স্বাদ রয়েছে, প্রত্যেকটিতে আমি সংশ্লিষ্ট গুগল-পরিষেবাদি.জসন: src/flavor1/google-services.jsonএবংsrc/flavor2/google-services.json

তারপরে বিল্ড গ্রেডে আমি ফ্লেভারটির উপর নির্ভর করে app/ডিরেক্টরিটিতে ডিরেক্টরিটি অনুলিপি করি :

android {

// set build flavor here to get the right gcm configuration.
//def myFlavor = "flavor1"
def myFlavor = "flavor2"

if (myFlavor.equals("flavor1")) {
    println "--> flavor1 copy!"
    copy {
        from 'src/flavor1/'
        include '*.json'
        into '.'
    }
} else {
    println "--> flavor2 copy!"
    copy {
        from 'src/flavor2/'
        include '*.json'
        into '.'
    }
}

// other stuff
}

সীমাবদ্ধতা: আপনাকে ম্যানুয়ালি পরিবর্তন করতে হবেmyFlavor প্রতিবার যখন আপনি আলাদা স্বাদের জন্য দৌড়াতে চান প্রতিটি সময় আপনাকে গ্রেডে (কারণ এটি হার্ডকোডযুক্ত)।

আমি বর্তমান বিল্ড ফ্লেভারটি পেতে অনেক উপায়ে চেষ্টা করেছি afterEvaluate কাছাকাছি ... এখন পর্যন্ত এর চেয়ে ভাল সমাধান আর পাইনি।

আপডেট, অন্য সমাধান: সমস্ত স্বাদের জন্য একটি গুগল-পরিষেবাদি.জসন:

এছাড়াও প্রতিটি স্বাদের জন্য আলাদা আলাদা প্যাকেজের নাম থাকতে পারে এবং তারপরে গুগল বিকাশকারী কনসোলে আপনাকে প্রতিটি স্বাদে দুটি আলাদা অ্যাপ তৈরি করতে হবে না, তবে একই অ্যাপ্লিকেশনে মাত্র দুটি পৃথক ক্লায়েন্ট। তারপরে আপনার কাছে কেবলমাত্র একটিতে google-services.jsonআপনার উভয় ক্লায়েন্ট থাকবে। অবশ্যই, আপনি আপনার স্বাদগুলির ব্যাকএন্ড কীভাবে প্রয়োগ করছেন তার উপর এটি নির্ভর করে। যদি তারা পৃথক না হয় তবে এই সমাধান আপনাকে সাহায্য করবে না will


আপনার অর্থ এই যে যদি
ব্যাকেন্ডগুলি

সমস্ত আপনার উভয় পক্ষের স্বাদগুলির সংজ্ঞা নির্ভর করে; ক্লায়েন্ট এবং সার্ভার আমার ক্ষেত্রে, বিভিন্ন প্যাকেজ নাম, বিভিন্ন সার্ভার url এবং বিভিন্ন ডাটাবেস। সুতরাং সার্ভারটি সংশ্লিষ্ট ডাটাবেসে ব্যবহারকারীকে বিজ্ঞপ্তি প্রেরণ করবে। ব্যবহারকারী এ এর ​​স্বাদ 1 এর জন্য টোকেন 1 এবং ফ্লেভার 2 এর জন্য টোকেন 2 রয়েছে। আপনার যদি আলাদা ডাটাবেস এন্ট্রি থাকে তবে আপনার কোনও সমস্যা হবে না।
আহেমেড_খান_89

আমি কোন কাজগুলি তৈরি করার চেষ্টা করেছি যা অনুলিপি করেছে এবং তারপরে একটি নির্দিষ্ট ডিবাগ প্রক্রিয়া বা রিলিজ প্রক্রিয়াতে তাদের অনুরোধ করা হয়েছে এবং এটি কাজ করেছে বলে মনে করার জন্য। এই ws এর আগে পোস্ট করুন
humblerookie

1
আপনার আপডেটে উল্লিখিত হিসাবে google-services.jsonউভয়ের জন্য একটির ব্যবহার releaseএবং debugআমার পক্ষে কাজ করেছেন। আমি যদি মনে করি আপনি কেবল নিজের বিল্ডকে বিভক্ত করার চেষ্টা করছেন তবে এটি সবচেয়ে সহজ সমাধান debug। রেফারেন্সের জন্য, আপনি এখানে ফাইলটি তৈরি করতে পারেন: developers.google.com/mobile/add?platform=android
yuval

12

আহমেদ_খান_89 এর উত্তর অনুসারে , আপনি আপনার পণ্যের স্বাদের ভিতরে "কপি কোড" রাখতে পারেন।

productFlavors {
    staging {
        applicationId = "com.demo.staging"

        println "Using Staging google-service.json"
        copy {
            from 'src/staging/'
            include '*.json'
            into '.'
        }
    }
    production {
        applicationId = "com.demo.production"

        println "Using Production google-service.json"
        copy {
            from 'src/production/'
            include '*.json'
            into '.'
        }
    }
}

তারপরে আপনাকে ম্যানুয়ালি সেটিংস পরিবর্তন করতে হবে না।


2
@ জাকট্যাকার্ডি তবে প্রশ্ন স্বাদের জন্য, বিল্ড টাইপের জন্য নয়
ব্রায়ান্ট ১৪১০

1
এই একটি সমাধান ভাল হিসাবে নয় medium.com/@ZakTaccardi/...
ZakTaccardi

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

এটি স্বাদের জন্য কাজ করে। Build.gradle এ ম্যানুয়ালি ভেরিয়েবলগুলি পরিবর্তন করার দরকার নেই।
ভিটো ভালভ

9

আমি এখান থেকে তৈরি গুগল- পরিষেবাদি.জসন ফাইলটি ব্যবহার করছি: https://developers.google.com/mobile/add?platform=android&cntapi=gcm&cnturl=https :% 2F%2Fdevelopers.google.com%2Fcloud- ম্যাসেজিং % 2Fandroid% 2Fclient & cntlbl = চালিয়ে% 20Adding% 20GCM% 20Support এবং% 3Fconfigured% 3Dtrue

জেএসএন-কাঠামোয় ক্লায়েন্ট নামে একটি জেএসওএন-অ্যারে রয়েছে। আপনার যদি একাধিক স্বাদ থাকে তবে কেবল এখানে আলাদা আলাদা বৈশিষ্ট্য যুক্ত করুন।

{
  "project_info": {
    "project_id": "PRODJECT-ID",
    "project_number": "PROJECT-NUMBER",
    "name": "APPLICATION-NAME"
  },
  "client": [
    {
      "client_info": {
        "mobilesdk_app_id": "1:PROJECT-NUMBER:android:HASH-FOR-FLAVOR1",
        "client_id": "android:PACKAGE-NAME-1",
        "client_type": 1,
        "android_client_info": {
          "package_name": "PACKAGE-NAME-1"
        }
      },
      "oauth_client": [],
      "api_key": [],
      "services": {
        "analytics_service": {
          "status": 1
        },
        "cloud_messaging_service": {
          "status": 2,
          "apns_config": []
        },
        "appinvite_service": {
          "status": 1,
          "other_platform_oauth_client": []
        },
        "google_signin_service": {
          "status": 1
        },
        "ads_service": {
          "status": 1
        }
      }
    },
    {
      "client_info": {
        "mobilesdk_app_id": "1:PROJECT-NUMBER:android:HASH-FOR-FLAVOR2",
        "client_id": "android:PACKAGE-NAME-2",
        "client_type": 1,
        "android_client_info": {
          "package_name": "PACKAGE-NAME-2"
        }
      },
      "oauth_client": [],
      "api_key": [],
      "services": {
        "analytics_service": {
          "status": 1
        },
        "cloud_messaging_service": {
          "status": 2,
          "apns_config": []
        },
        "appinvite_service": {
          "status": 1,
          "other_platform_oauth_client": []
        },
        "google_signin_service": {
          "status": 1
        },
        "ads_service": {
          "status": 1
        }
      }
    }
  ],
  "client_info": [],
  "ARTIFACT_VERSION": "1"
}

আমার প্রকল্পে আমি একই প্রকল্প-আইডি ব্যবহার করছি এবং যখন আমি উপরের ইউআরএলে দ্বিতীয় প্যাকেজ-নাম যুক্ত করছি, গুগল আমাকে জসন-ডেটাতে একাধিক ক্লায়েন্টযুক্ত একটি ফাইল সরবরাহ করে।

কমপ্যাক্ট JSON- ডেটার জন্য দুঃখিত। আমি এটি সঠিকভাবে ফর্ম্যাট করতে পারি না ...


8

google-Services.json ফাইলটি বিজ্ঞপ্তি পাওয়ার জন্য অপ্রয়োজনীয়। আপনার বিল্ড.gradle ফাইলটিতে প্রতিটি স্বাদের জন্য কেবল একটি ভেরিয়েবল যুক্ত করুন:

buildConfigField "String", "GCM_SENDER_ID", "\"111111111111\""

রেজিস্ট্রেশন করার সময় getString (R.string.gcm_defaultSenderId) এর পরিবর্তে এই ভেরিয়েবলটি বিল্ডকনফিগ.জিসিএম_এসইএনডিআইডি ব্যবহার করুন:

instanceID.getToken(BuildConfig.GCM_SENDER_ID, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

6

1.) গুগল-পরিষেবাদি.জসন আসলে কী করে?

এটি অনুসরণ করুন: https://stackoverflow.com/a/31598587/2382964

২) কীভাবে google-Services.json ফাইলটি আপনার অ্যান্ড্রয়েড স্টুডিও প্রকল্পকে প্রভাবিত করে?

এটি অনুসরণ করুন: https://stackoverflow.com/a/33083898/2382964

সংক্ষেপে দ্বিতীয় ইউআরএলটির জন্য, আপনি যদি আপনার প্রকল্পে গুগল-পরিষেবাদি.জসন যুক্ত করেন তবে অবশ্যই এই পথটিতে বৈকল্পিকের google-servicesজন্য একটি স্বয়ংক্রিয় উত্পাদিত ফোল্ডার থাকতে হবেdebug

app/build/generated/res/google-services/debug/values/values.xml

৩) কী করবেন, এটি করাতে?

project_levelbuild.gradle এ গুগল-পরিষেবা নির্ভরতা যুক্ত করুন , আপনি version 3.0.0যদি অ্যাপ_কম্প্যাক্ট লাইব্রেরি ব্যবহার করছেন তবে আপনি এটিও ব্যবহার করতে পারেন।

// Top-level build.gradle file
classpath 'com.google.gms:google-services:2.1.2'

এখন app_levelbuild.gradle এ আপনাকে নীচে যুক্ত করতে হবে।

// app-level build.gradle file
apply plugin: 'com.google.gms.google-services'

৪) আপনার কাঠামোতে গুগল-পরিষেবা.জসন ফাইলটি কোথায় রাখবেন put

কেস ১) যদি আপনার কোনও বিল্ড_ফ্লেভার না থাকে তবে এটি কেবল /app/google-service.jsonফোল্ডারের ভিতরে রেখে দিন ।

কেস ২) যদি আপনার একাধিক বিল্ড_ফ্লেভার থাকে এবং আপনার মধ্যে আলাদা-আলাদা google_services.json ফাইল থাকে app/src/build_flavor/google-service.json

কেস ৩) যদি আপনার একাধিক বিল্ড_ফ্লেভার থাকে এবং আপনার মধ্যে একক google_services.json ফাইল রয়েছে app/google-service.json


4

কোনও অতিরিক্ত গ্রেড স্ক্রিপ্টিংয়ের দরকার নেই।

গুগল 'android_client_info' নামে বিভিন্ন প্যাকেজের নাম যুক্ত করা শুরু করে। এটি গুগল-পরিষেবাদি.জসনে নীচের মত দেখাচ্ছে

"android_client_info": {
      "package_name": "com.android.app.companion.dev"
    }

সুতরাং, নিম্নলিখিত পদক্ষেপগুলি বিভিন্ন গুগল-পরিষেবাদি.জসন নির্বাচন করার জন্য যথেষ্ট।

  1. 2 স্বাদ আছে
  2. গুগল অ্যানালিটিক্স কনফিগারেশন পৃষ্ঠায় একটি নতুন দেব স্বাদের প্যাকেজ যুক্ত করুন এবং গুগল-পরিষেবাদি.জসন ডাউনলোড করুন।
  3. নতুন কনফিগারেশন ফাইলটিতে লক্ষ্য করুন, আপনার স্বাদের প্যাকেজ আইডির দুটিই রয়েছে
  4. আপনার যে কোনও ফ্লেভার বিল্ড প্রস্তুত করুন।

হ্যাঁ, ওটাই!..


1
আমি নিশ্চিত না যে 2) এবং 3) ঠিক কী বোঝায়। প্লে স্টোরের লিঙ্কিংয়ের পাশাপাশি আমি বিশ্লেষণ.google.com.com এ কোথাও পাই না যেখানে প্যাকেজগুলির নাম যুক্ত করতে পারি। আমি জসন ডাউনলোড করতে পেলাম কেবলমাত্র জায়গাটি এখান থেকে বিকাশকারীদের মধ্যে ডকুমেন্টার্স / মোবাইল / অ্যাড এবং এটি একাধিক প্যাকেজ নাম যুক্ত করার অনুমতি দেয় না। এটি কি অ্যানড্রয়েড_ক্লিয়েন্ট_ইনফোতে ম্যানুয়ালি প্যাকেজটির নাম যুক্ত করে কাজ করবে?
আরবার্গ

1
@arberg আপনি একই প্রকল্পে একাধিক প্যাকেজ নাম যুক্ত করতে পারেন এবং তারপরে ফাইলটি ডাউনলোড করতে পারেন। এখানে চেক করুন: github.com/googlesults/google-services/issues/54
Christer

4

আমাদের ডিবাগ বিল্ডগুলির জন্য আলাদা প্যাকেজের নাম রয়েছে (* .debug) সুতরাং আমি কিছু চাই যা স্বাদ এবং বিল্ডটাইপের উপর ভিত্তি করে কাজ করে, এর ধরণে স্বাদ সম্পর্কিত কিছু না লিখে processDebugFlavorGoogleServices

আমি প্রতিটি স্বাদে "গুগল-পরিষেবাদি" নামে একটি ফোল্ডার তৈরি করেছি, যার মধ্যে ডিবিগ সংস্করণ এবং জাসন ফাইলের প্রকাশ সংস্করণ উভয়ই রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

আপনার গ্রেডল ফাইলের বিল্ডটাইপ বিভাগে, এটি যুক্ত করুন:

    applicationVariants.all { variant ->
            def buildTypeName = variant.buildType.name
            def flavorName = variant.productFlavors[0].name;

            def googleServicesJson = 'google-services.json'
            def originalPath = "src/$flavorName/google-services/$buildTypeName/$googleServicesJson"
            def destPath = "."

            copy {
                if (flavorName.equals(getCurrentFlavor()) && buildTypeName.equals(getCurrentBuildType())) {
                    println originalPath
                    from originalPath
                    println destPath
                    into destPath
                }
            }
    }

আপনি বিল্ড ভেরিয়েন্টটি স্যুইচ করলে এটি স্বয়ংক্রিয়ভাবে আপনার অ্যাপ্লিকেশন মডিউলটির মূলের ডান জাসন ফাইলটি অনুলিপি করবে।

আপনার বিল্ড.gradle এর মূলে বর্তমান স্বাদ এবং বর্তমান বিল্ড প্রকার পেতে দুটি পদ্ধতি যুক্ত করুন

def getCurrentFlavor() {
    Gradle gradle = getGradle()
    String  tskReqStr = gradle.getStartParameter().getTaskRequests().toString()

    Pattern pattern;

    if( tskReqStr.contains( "assemble" ) )
        pattern = Pattern.compile("assemble(\\w+)(Release|Debug)")
    else
        pattern = Pattern.compile("generate(\\w+)(Release|Debug)")

    Matcher matcher = pattern.matcher( tskReqStr )

    if( matcher.find() ) {
        println matcher.group(1).toLowerCase()
        return matcher.group(1).toLowerCase()
    }
    else
    {
        println "NO MATCH FOUND"
        return "";
    }
}

def getCurrentBuildType() {
    Gradle gradle = getGradle()
    String  tskReqStr = gradle.getStartParameter().getTaskRequests().toString()

        if (tskReqStr.contains("Release")) {
            println "getCurrentBuildType release"
            return "release"
        }
        else if (tskReqStr.contains("Debug")) {
            println "getCurrentBuildType debug"
            return "debug"
        }

    println "NO MATCH FOUND"
    return "";
}

এটি হ'ল, আপনার গ্রেড ফাইল থেকে স্বাদগুলি অপসারণ / যুক্ত / সংশোধন করার বিষয়ে চিন্তা করার দরকার নেই এবং এটি ডিবাগ বা স্বয়ংক্রিয়ভাবে গুগল-পরিষেবাদি.জসন রিলিজ পেতে পারে।


4

ফায়ারবেস এখন একটি গুগল-পরিষেবাদি.জসন ফাইলের সাথে একাধিক অ্যাপ্লিকেশন আইডিকে সমর্থন করে।

এই ব্লগ পোস্টটি এটিকে বিশদভাবে বর্ণনা করে।

আপনি ফায়ারবেসে একটি প্যারেন্ট প্রকল্প তৈরি করবেন যা আপনি আপনার সমস্ত রূপের জন্য ব্যবহার করবেন। তারপরে আপনি যে প্রতিটি অ্যাপ্লিকেশন আইডির জন্য সেই প্রকল্পের অধীনে ফায়ারবেসে আলাদা অ্যান্ড্রয়েড অ্যাপ্লিকেশন তৈরি করেন।

আপনি যখন আপনার সমস্ত রূপগুলি তৈরি করেন, আপনি একটি গুগল-পরিষেবাদি.জসন ডাউনলোড করতে পারেন যা আপনার সমস্ত অ্যাপ্লিকেশন আইডিকে সমর্থন করে। যখন তথ্যটি পৃথকভাবে দেখার জন্য প্রাসঙ্গিক হয় (অর্থাত ক্র্যাশ প্রতিবেদন) আপনি একটি ড্রপডাউন দিয়ে টগল করতে পারেন।


4

ফায়ারবেস ডক্স অনুসারে আপনি google-Services.json এর পরিবর্তে স্ট্রিং রিসোর্সও ব্যবহার করতে পারেন ।

যেহেতু এই সরবরাহকারীটি কেবল পরিচিত নাম সহ সংস্থানগুলি পড়ছে, অন্য বিকল্প হ'ল গুগল পরিষেবাগুলি গ্রেড প্লাগইন ব্যবহার না করে সরাসরি আপনার অ্যাপ্লিকেশনটিতে স্ট্রিং সংস্থান যুক্ত করা। আপনি এটি দ্বারা এটি করতে পারেন:

  • google-servicesআপনার মূল বিল্ড.gradle থেকে প্লাগইন সরানো হচ্ছে
  • google-services.jsonআপনার প্রকল্প থেকে মুছে ফেলা হচ্ছে
  • স্ট্রিং রিসোর্স সরাসরি যুক্ত করা হচ্ছে
  • 'com.google.gms.google-services'অ্যাপ্লিকেশন প্লাগইনটি মোছা হচ্ছে: আপনার অ্যাপ্লিকেশন build.gradle থেকে

উদাহরণ strings.xml:

<string name="google_client_id">XXXXXXXXX.apps.googleusercontent.com</string>
<string name="default_web_client_id">XXXX-XXXXXX.apps.googleusercontent.com</string>
<string name="gcm_defaultSenderId">XXXXXX</string>
<string name="google_api_key">AIzaXXXXXX</string>
<string name="google_app_id">1:XXXXXX:android:XXXXX</string>
<string name="google_crash_reporting_api_key">AIzaXXXXXXX</string>
<string name="project_id">XXXXXXX</string>

2
গুগল-পরিষেবাদি.জসন ফাইলে কোন কীটির মানটি যথাযথ স্ট্রিংয়ের সাথে সমান হয় তার সাথে মিল করতে আমার অসুবিধা হয়েছিল তবে আমি এটির সাহায্য পেয়েছিলাম: developers.google.com/android/guides/… অন্য কারও ক্ষেত্রে একই সমস্যা থাকলে পোস্ট করা হয়েছে।
সাইফুর রহমান মহসিন

3

@ জাকট্যাকার্ডির উত্তরের উপর ভিত্তি করে এবং ধরে নিচ্ছেন যে আপনি উভয় স্বাদে একটি প্রকল্পই চান না, এটি আপনার build.gradleফাইলের শেষে যুক্ত করুন:

def appModuleRootFolder = '.'
def srcDir = 'src'
def googleServicesJson = 'google-services.json'

task switchToStaging(type: Copy) {
    outputs.upToDateWhen { false }
    def flavor = 'staging'
    description = "Switches to $flavor $googleServicesJson"
    delete "$appModuleRootFolder/$googleServicesJson"
    from "${srcDir}/$flavor/"
    include "$googleServicesJson"
    into "$appModuleRootFolder"
}

task switchToProduction(type: Copy) {
    outputs.upToDateWhen { false }
    def flavor = 'production'
    description = "Switches to $flavor $googleServicesJson"
    from "${srcDir}/$flavor/"
    include "$googleServicesJson"
    into "$appModuleRootFolder"
}

afterEvaluate {
    processStagingDebugGoogleServices.dependsOn switchToStaging
    processStagingReleaseGoogleServices.dependsOn switchToStaging
    processProductionDebugGoogleServices.dependsOn switchToProduction
    processProductionReleaseGoogleServices.dependsOn switchToProduction
}

আপনার ফাইল src/staging/google-services.jsonএবং থাকা দরকার src/production/google-services.json। আপনি যেগুলি ব্যবহার করেন তার স্বাদের নামগুলি প্রতিস্থাপন করুন।


3

আমি খুঁজে পেয়েছি যে জিসিএম যোগ করতে চায় এমন প্রকল্পগুলির জন্য গুগল-পরিষেবাদি প্লাগইনটি যথেষ্ট অকেজো। এটি কেবলমাত্র নিম্নলিখিত ফাইলটি উত্পন্ন করে যা আপনার প্রকল্প আইডিটিকে স্ট্রিং সংস্থান হিসাবে কেবল যুক্ত করে:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Your API key would be on the following line -->
    <string name="gcm_defaultSenderId">111111111111</string>
</resources>

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

String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),              GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

সমাধান

আপনি যদি বিভিন্ন বিল্ড প্রকারের বা পণ্যের স্বাদের জন্য এপিআই প্রকল্পগুলি স্যুইচ করতে সক্ষম হতে চান তবে আপনি কেবল নিজের নিজস্ব প্রতিরক্ষার সংজ্ঞা দিতে পারেন এবং getToken()এপিআই কল করার সময় উপযুক্ত একটি চয়ন করতে পারেন ।

private static final String SENDER_ID = "111111111111";
private static final String SANDBOX_SENDER_ID = "222222222222";

String token = instanceID.getToken(
        BuildConfig.DEBUG ? SENDER_ID : SANDBOX_SENDER_ID,
        GoogleCloudMessaging.INSTANCE_ID_SCOPE,
        null);

পণ্য স্বাদ জন্য

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


@ সুইমিংটোমার্স আপনি অকারণে গুগল-পরিষেবা প্লাগইন প্রয়োগ করতে পারেন। আপনি যদি এই পদ্ধতিটি ব্যবহার করেন তবে আপনি গুগল-পরিষেবা প্লাগইন প্রয়োগ করতে পারবেন না। জিসিএম ব্যতীত অন্য পরিষেবার জন্য আপনার যদি এই প্লাগইনটির প্রয়োজন হয় তবে গৃহীত উত্তরটি দেখুন।
কেজোনস

3

আপডেট:

বিল্ড ভেরিয়েন্টগুলির সাথে ফায়ারবেস সেটআপের ক্ষেত্রে, দয়া করে এই ব্লগটি উল্লেখ করুন যার বিস্তারিত নির্দেশাবলী রয়েছে।


2

গুগল-পরিষেবা প্লাগইনের মূল বিষয় হ'ল গুগল বৈশিষ্ট্যগুলির সংহতকরণকে সহজ করে তোলা।

যেহেতু এটি কেবল গুগল-পরিষেবাদি.জসন ফাইল থেকে অ্যান্ড্রয়েড-সংস্থান তৈরি করে, তাই জটিল জটিল গ্রেড-যুক্তি এই বিষয়টিকে উপেক্ষা করে।

সুতরাং যদি গুগল-ডক্স নির্দিষ্ট Google- বৈশিষ্ট্যগুলির জন্য কোন সংস্থানগুলি প্রয়োজন তা না বলে, আমি প্রতিটি প্রাসঙ্গিক বিল্ডটাইপ / গন্ধের জন্য JSON-ফাইল উত্পন্ন করার পরামর্শ দিচ্ছি, প্লাগইন দ্বারা কী সংস্থানগুলি উত্পন্ন হয় তা দেখুন এবং তারপরে সেই সংস্থানগুলি ম্যানুয়ালি রেখে দিন তাদের নিজ নিজ src / buildtypeORflavour / res ডিরেক্টরিতে।

গুগল-পরিষেবা প্লাগইন এবং তার পরে জেএসওএন-ফাইলের উল্লেখগুলি মুছুন এবং আপনার কাজ শেষ হয়েছে।

গুগল-পরিষেবাদি গ্রেড-প্লাগইন এর অভ্যন্তরীণ কর্ম সম্পর্কে বিস্তারিত তথ্যের জন্য আমার অন্যান্য উত্তর দেখুন:

https://stackoverflow.com/a/33083898/433421


আপনার উত্তরটি কীভাবে ব্যবহার করা হচ্ছে তা আমি বুঝতে পারি না, আমি 2 গুগল-পরিষেবা.জসন অন্তর্ভুক্ত করতে পারি। 1 ডিবাগের জন্য এবং অন্যটি মুক্তির জন্য
পেন্ডুদেভ

2

@ স্কটি কী বলেছে তা সরলকরণ। পণ্যের গন্ধের উপর নির্ভর করে আপনাকে একটি নির্দিষ্ট প্রকল্পের জন্য বিভিন্ন প্যাকেজের নাম সহ একাধিক অ্যাপ্লিকেশন তৈরি করতে হবে।

ধরুন আপনার প্রজেক্টের এবিসি এর বিভিন্ন পণ্য স্বাদ রয়েছে এক্স, ওয়াই যেখানে এক্স এর একটি প্যাকেজের নাম com.x রয়েছে এবং ওয়াইয়ের একটি প্যাকেজ নাম com আছে। তবে ফায়ারবেস কনসোলে আপনাকে একটি প্রকল্প এবিসি তৈরি করতে হবে যাতে আপনাকে দুটি অ্যাপ্লিকেশন তৈরি করতে হবে com.x এবং com.y. প্যাকেজের নাম সহ তারপরে আপনাকে গুগল-পরিষেবাদি.জসন ফাইলটি ডাউনলোড করতে হবে যেখানে দুটি ক্লায়েন্ট-ইনফরমেশন থাকবে যার মধ্যে এই প্যাকগুলি থাকবে এবং আপনি যেতে ভাল হবে।

জসনের স্নিপেট এমন কিছু হবে

{
  "client": [
    {
      "client_info": {
        "android_client_info": {
          "package_name": "com.x"
        }

    {
      "client_info": {
        "android_client_info": {
          "package_name": "com.y"
        }
      ]

    }

2

প্রকৃতপক্ষে, MyApp/app/ডিরেক্টরিতে কেবল একটি গুগল-পরিষেবাদি.জসন ভাল, এর সাথে অ্যাডিশনাল স্ক্রিপ্টের প্রয়োজন নেই com.google.gms:google-services:3.0.0। তবে ত্রুটির ধরণটি এড়াতে google-services.jsonঅ্যাপ ডিরেক্টরি থেকে ফাইলটি মুছতে সাবধান হনMyApp/app/src/flavor1/res/Execution failed for task ':app:processDebugGoogleServices'. > No matching client found for package


2

সুতরাং আপনি যদি প্রোগ্রামগতভাবে google-services.jsonআপনার সমস্ত রূপগুলি থেকে আপনার মূল ফোল্ডারে ফাইল অনুলিপি করতে চান । আপনি যখন কোনও নির্দিষ্ট ভেরিয়েন্টে স্যুইচ করেন আপনার জন্য এখানে একটি সমাধান

android {
  applicationVariants.all { variant ->
    copy {
        println "Switches to $variant google-services.json"
        from "src/$variant"
        include "google-services.json"
        into "."
    }
  }
}

এই পদ্ধতির একটি সতর্কতা google-service.jsonরয়েছে যা আপনার প্রতিটি ভেরিয়েন্ট ফোল্ডারে এখানে ফাইল থাকা দরকার একটি উদাহরণ।বৈকল্পিক চিত্র


1

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

আমি এখন ছবি পোস্ট করতে অলস, কিন্তু মূলত:

  • https://developers.google.com/mobile/add এ যান
  • প্ল্যাটফর্ম নির্বাচন করুন
  • আপনার অ্যাপ্লিকেশন নির্বাচন করুন
  • গুরুত্বপূর্ণ : "অ্যান্ড্রয়েড প্যাকেজ নাম" ফিল্ডে আপনার স্বাদ প্যাকেজের নাম টাইপ করুন
  • ... আপনার কনফিগারেশন ফাইলটি পেতে চালিয়ে যান। এটি ডাউনলোড করুন!

ফাইলটি কনফিগার করার সময় আপনি দেখতে পাবেন যে গুগল আপনাকে সার্ভার এপিআই কী + প্রেরক আইডি প্রদর্শন করে। এবং এটি সমস্ত প্যাকেজ (স্বাদ) জন্য একই

শেষে, আপনার স্বাদে কেবল একটি জসন ফাইলের প্রয়োজন।

এখানে আরও একটি প্রশ্ন আপনি নিবন্ধকরণ টোকেন পেতে নিবন্ধন করার সময় পরীক্ষা করতে হবে, প্রতিটি স্বাদে পার্থক্য আছে কিনা তা পরীক্ষা করে দেখুন। আমি এটি স্পর্শ করি না তবে এটি মনে হয় এটির পার্থক্য হওয়া উচিত। এখন অনেক দেরি হয়ে গেছে এবং আমি খুব ঘুমিয়েছি :) আশা করি এটি সাহায্য করবে!



0

আমি বর্তমানে একই অ্যাপ প্যাকেজে দুটি জিসিএম প্রকল্প আইডি ব্যবহার করছি। আমি আমার প্রথম জিসিএম প্রকল্পের গুগল-পরিষেবা.জসন রেখেছি তবে আমি প্রথম থেকে দ্বিতীয়টিতে চলেছি কেবলমাত্র SENDER_ID পরিবর্তন করে:

    String token = instanceID.getToken(SENDER_ID,GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

(এই মুহুর্তে আমি মনে করি যে google-Services.json বাধ্যতামূলক নয়)


0

উপরে @ আহমেদ_খান_89 উত্তর দ্বারা অনুপ্রাণিত আমরা সরাসরি গ্রেড ফাইলটিতে এটি রাখতে পারি।

android{

// set build flavor here to get the right Google-services configuration(Google Analytics).
    def currentFlavor = "free" //This should match with Build Variant selection. free/paidFull/paidBasic

    println "--> $currentFlavor copy!"
    copy {
        from "src/$currentFlavor/"
        include 'google-services.json'
        into '.'
    }
//other stuff
}

0

আপনার "google-Services.json" ফাইলটি যথাক্রমে অ্যাপ্লিকেশন / সিআরসি / স্বাদের অধীনে রাখুন তারপরে অ্যান্ড্রয়েড কোডের নীচে অ্যাড্রয়েডের অধীনে অ্যাপের বিল্ডড্র্যাডলে le

gradle.taskGraph.beforeTask { Task task ->
        if (task.name ==~ /process.*GoogleServices/) {
            android.applicationVariants.all { variant ->
                if (task.name ==~ /(?i)process${variant.name}GoogleServices/) {
                    copy {
                        from "/src/${variant.flavorName}"
                        into '.'
                        include 'google-services.json'
                    }
                }
            }
        }
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.