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


120

আমি আমার বর্তমান অ্যাপটিতে গুগল অ্যানালিটিক্স এবং জিসিএম পরিষেবাদি যুক্ত করার কাজ করি work উভয় পরিষেবাদি বাস্তবায়নের জন্য গাইডে, গুগল বিকাশকারীকে একটি জেসন ফাইল তৈরি করতে বলে: google-Services.json এবং অ্যাপ্লিকেশনটির মূল ডিরেক্টরিতে রাখুন।

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

শুধু নিশ্চিতভাবে জানতে চাই, এই ফাইলটি আসলে কীসের জন্য? এর ব্যবহার কী এবং এটি কীভাবে কাজ করে?

উত্তর:


197

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

আগেরটা আগে

গ্রেড-প্লাগইন গুগল পরিষেবাগুলি যা ক্লাসপাথ দ্বারা প্রয়োগ করা হয় এবং প্রয়োগ সহ কেবলমাত্র একটি বিল্ড-টাইম প্লাগইন! সুতরাং এটি কেবল আপনার অ্যাপ্লিকেশনটির বিল্ড-প্রক্রিয়াটিকেই প্রভাবিত করে, তবে রানটাইম-প্রক্রিয়া নয়!

এই প্লাগইনটি কেবলমাত্র আপনার অ্যাপ্লিকেশনে গুগল-পরিষেবাগুলিকে একীভূত করার জন্য কেবলমাত্র এক দ্রুতগতিতে সাহায্যকারী হিসাবে বোঝানো হয়েছে। স্পষ্টতই, প্রক্রিয়াটি কিছুটা বিশৃঙ্খলাযুক্ত এবং নথিভুক্ত নয়, তাই গুগলকে এই প্রক্রিয়াটি কী করে তা পরিষ্কার করে দেওয়া উচিত ছিল।

আসলে, আমি প্লাগইন সংস্করণ com.google.gms: google-পরিষেবাদি: 1.4.0-beta3 এর জন্য উত্স কোড খুঁজে পেয়েছি এবং অ্যাপ্লিকেশন সম্পর্কিত কোনও সুনির্দিষ্ট রেফারেন্স পাইনি এবং অ্যাপ্লিকেশন আমন্ত্রণগুলির জন্য আমি কোনও গুগল এপিআই পাইনি! (তবে সম্ভবত এটির প্রজেক্ট আইডি সহ একটি জেনেরিক এপিআই প্রকল্প ব্যবহার করা হয়েছে, আমি এটি চেষ্টা করে দেখিনি)

এর মানে কি

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

$project.buildDir/generated/res/google-services/$variant.dirName/values/values.xml

উদাহরণস্বরূপ আপনার অ্যাপ্লিকেশনটির ডিবাগ-বিল্ড করার জন্য:

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

উদাহরণস্বরূপ, আপনি যদি জিসিএম টিউটোরিয়াল অনুসরণ করেন, JSON ফাইলটি নীচের অ্যান্ড্রয়েড-সংস্থান হিসাবে এপিআই প্রকল্পের আইডি অন্তর্ভুক্ত করবে:

<string name="gcm_defaultSenderId">project-id</string>

সুতরাং এই প্লাগইন এবং জেএসওএন ফাইলটি আপনার অ্যাপ্লিকেশনটি চালানো বা প্রকাশের জন্য অপরিহার্য নয়, নির্দিষ্ট গুগল এপিআই বৈশিষ্ট্যগুলির আরও সহজ সংহতকরণের জন্য কিছু বেসিক অ্যান্ড্রয়েড-রিসোর্স ফাইল উত্পন্ন করার জন্য এটি কেবলমাত্র একটি দ্রুত কর্ম সহায়ক art

উত্স কোডটি নীচে উল্লেখ করা হয়েছে যে Google- পরিষেবাদি প্লাগইন সর্বদা আপনার অ্যাপ্লিকেশন / বিল্ড.gradle এ সংজ্ঞায়িত প্রতিটি অ্যাপ-বৈকল্পের জন্য সেই অ্যান্ড্রয়েড-সংস্থান উত্পন্ন করে Notice

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

এটা কি না

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

আমি সূত্রগুলি কোথায় খুঁজে পেয়েছি সে সম্পর্কে লক্ষ্য করুন

আপনি গুগল-পরিষেবাদি গ্রেড-প্লাগইন সংহত করার পরে এবং আপনার প্রকল্পের সিঙ্ক করার পরে, গ্রেডল স্বয়ংক্রিয়ভাবে গুগল-পরিষেবাদি নির্ভরতা এর অনুরূপ পাথের জন্য ডাউনলোড করে দেয় (উইন্ডোজে আপনাকে লিনাক্সের জন্য আপনার হোম / .গ্র্যাডাল সন্ধান করতে হবে):

C:\Users\user\.gradle\caches\modules-2\files-2.1\com.google.gms\google-services\1.4.0-beta3\f1580f62e3be313eba041ce19b64fd3f44cf8951\google-services-1.4.0-beta3-sources.jar

আপনি যদি এই জার-ফাইলটি বের করেন তবে আপনি দুটি ফাইল পাবেন:

GoogleServicesPlugin.groovy
GoogleServicesTask.java

যার মধ্যে গ্রেড-প্লাগইনটির সরল উত্স কোড রয়েছে।

GoogleServicesPlugin.groovy

অ্যাপ-ভেরিয়েন্টগুলি পরিচালনা করার এবং পাথের প্রাথমিক সংজ্ঞা ইত্যাদি অন্তর্ভুক্ত করে

GoogleServicesTask.java

প্রকৃত কার্য-সংজ্ঞা রয়েছে, এটি কী করে তা দেখার জন্য নিম্নলিখিত পদ্ধতিটির সন্ধান করুন:

@TaskAction
public void action() throws IOException { 

2
আরও ভাল উত্তর। তবুও প্রস্তাবিত পন্থা অনুসরণ করার চেষ্টা করার পরেও সমস্যাগুলি মনে হচ্ছে ( ডেভেলপার্স. com/analytics/devguides/collection/android/v4) "গৃহীত উত্তর" একটি হাস্যকর এসও ধারণা যা সম্পূর্ণরূপে ব্যক্তির ধৈর্যের উপর নির্ভর করে যা পারে এটা সিদ্ধান্ত ...
axd

7
আপনি এটি পোস্ট করার পরে এটির পরিবর্তিত হতে পারে বলে এটিতে একটি ফলো-আপ নোট। Google পরিষেবাগুলি Gradle প্লাগইন নির্দেশিকা প্লাগইন একটি 2nd ফাংশন পদ বলে। এটি "আপনি যে পরিষেবাগুলিকে সক্ষম করেছেন সেগুলির জন্য প্রয়োজনীয় প্রাথমিক গ্রন্থাগারগুলির" জন্য কিছু নির্ভরতা যুক্ত করারও দাবি করে, পাশাপাশি নির্ভরতা সংঘর্ষের জন্য পরীক্ষা করে (সংস্করণ মিশ্রণ থেকে)। আমি উত্সগুলিতে খনন করেছি এবং এটি "সংকলন com.google.android.gms: play-পরিষেবাদি-পরিমাপ" ইনজেকশন করতে দেখা যায় appears কেবলমাত্র একটি এফওয়াইআই যদি কেউ সেই পপ আপ দেখে এবং কেন তা নিশ্চিত নয়।
Android3000

3
ফাইলটিতে কয়েকটি কী কী রয়েছে তা বিবেচনা করে এটি সংস্করণ নিয়ন্ত্রণে যুক্ত করা কি নিরাপদ? যতদূর আমি এটি কেবল আঙুলের ছাপ বলতে পারি, তাই আমি এটি নিরাপদ বলে গণ্য করি। তবে আমি পুরোপুরি নিশ্চিত নই।
exhuma

1
@ মজাদার আমার ব্যক্তিগত মতামত, আপনি যদি কোনও বেসরকারী বা সংস্থা-অভ্যন্তরীণ প্রকল্পে কাজ করছেন, তবে এটি সংস্করণ নিয়ন্ত্রণে পরীক্ষা করা ঠিক হবে। অন্যদিকে, আমি কখনই ওপেন সোর্স প্রকল্পগুলির জন্য জেসন-ফাইলটিকে সংস্করণ নিয়ন্ত্রণে পরীক্ষা করতে পারব না, স্পষ্টতই।
arne.jans

1
@ arne.jans আপনি কি প্রেরককে গতিশীলভাবে সেট করতে সক্ষম হন, বা আপনি এটি কেবল মানগুলি। xML এ হার্ডকোড করেছেন? সার্ভার থেকে আমার প্রেরককে ডায়নামিকভাবে আনা দরকার, এবং এফসিএম-তে নিবন্ধকরণ করার চেয়েও।
Bresiu

37

এই ফাইলটি আসলে কী এর জন্য:

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

অফিসিয়াল ডকুমেন্টেশন বলছে:

অ্যাপ্লিকেশনটি একটি GoogleApiClient তৈরি করে, অ্যাপ্লিকেশনটি কোন স্কোপ এবং API- এ অ্যাক্সেস করবে তা উল্লেখ করে। GoogleApiClient সংযুক্ত হলে, ব্যবহারকারী সাইন ইন হয়।

এটি বিভাগে কীভাবে কাজ করে তা দেখুন ।


3
আপনার উত্তর করার জন্য আপনাকে ধন্যবাদ। আপনি যদি সাহায্য করতে ইচ্ছুক হন তবে বিস্মিত হলেও কিছু প্রশ্ন রয়েছে। আমি দেখেছি আপনার লিঙ্কটি সাইন ইন পরিষেবাদিগুলিতে পোস্ট। তবে আমি যদি কেবলমাত্র আমার অ্যাপ্লিকেশনটিতে গুগল অ্যানালিটিক্স এবং জিসিএম পরিষেবা ব্যবহার করি, সাইন ইন করার দরকার নেই, তবে কি আমার এখনও এই ফাইলটি রাখা দরকার? ধন্যবাদ!
আর্থার ওয়াং

3
হ্যাঁ, বিশ্লেষণ বা জিসিএমের জন্য আপনার এই কনফিগারেশন ফাইলটিও দরকার। ডকুমেন্টেশনের দ্বিতীয় ধাপে আপনাকে একটি কনফিগারেশন ফাইল লিঙ্কটি পেতে হবে। আপনি যদি জিসিএম বা বিশ্লেষণের জন্য এই কনফিড ফাইলটি ব্যবহার করছেন তবে আপনাকে নির্বাচন করতে হবে। এই ফাইলটিতে স্রেফ আপনার বিকাশকারী পরিচয় রয়েছে (যেমন এপিআই কী, আপনার বিকাশের পিসির এসএইএ 1 হ্যাশ ইত্যাদি)
মোহাম্মদ আরমান

2
@ AndroidGuy দেরিতে প্রতিক্রিয়া জন্য দুঃখিত। আমি মনে করি আপনাকে সর্বশেষতম প্রকাশিত SHA1 কীহ্যাশ সহ নতুন কনফিগারেশন google-Services.json ফাইল তৈরি করতে হবে। অন্যান্য বুদ্ধিমান কিছু বৈশিষ্ট্য প্লে স্টোরে প্রকাশের পরে কাজ নাও করতে পারে। পূর্ববর্তী বিভ্রান্তির জন্য দুঃখিত, আমি আমার আগের মন্তব্যটি মুছে ফেলব কারণ এটি কাউকে ভুল দিক হতে দেবে।
মোহাম্মদ আরমান

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

6
সিকিউরিটির কী হবে? গুগল-পরিষেবাদি.জসনকে এপিপি থেকে পুনরায় তৈরি করা যায় এবং পড়া যায়? আমি ভিতরে বিকাশকারী এবং এপিআই কী দেখি। আমি এটি অন্যদের দ্বারা পরিচিত হওয়া পছন্দ করি না ...
তিনো

4

আপনার মডিউলে google-Services.json যুক্ত করুন এবং একটি ক্লিন এবং একটি রিবিল্ড করুন। আপনার প্রকল্পের বৈশিষ্ট্য সহ অ্যাপ্লিকেশন / বিল্ড / জেনারেট / রেজ / গুগল-পরিষেবা / ডিবাগ / মান / মানসমূহ। এক্সএমএলে একটি এক্সএমএল ফাইল উত্পন্ন হবে এবং আপনি সাধারণ এক্সএমএল স্ট্রিংয়ের মতো সহজেই অ্যাক্সেস করতে পারবেন। উদাহরণ:

String serverClientId = getString(R.string.default_web_client_id);

সমস্ত স্ট্রিং এবং গুগল সার্ভিস.জসন ডকটিতে আরও তথ্যের সাথে একটি তালিকা রয়েছে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.