ডেভ এবং প্রোড ফায়ারবেস পরিবেশ পৃথক করুন


154

আমি ফায়ারবেসকে এমবিএএস হিসাবে ব্যবহার করার বিষয়ে বিবেচনা করছি, তবে আমি নিম্নলিখিত সমস্যার কোনও নির্ভরযোগ্য সমাধান খুঁজে পাইনি:

আমি দুটি পৃথক ফায়ারবেস পরিবেশ স্থাপন করতে চাই, একটি উন্নয়নের জন্য এবং একটি উত্পাদনের জন্য, তবে আমি বিকাশ এবং উত্পাদন পরিবেশের মধ্যে বৈশিষ্ট্যগুলির ম্যানুয়াল অনুলিপি (যেমন দূরবর্তী কনফিগারেশন সেটআপ, বিজ্ঞপ্তি বিধি ইত্যাদি) করতে চাই না ।

আমি নির্ভর করতে পারি এমন কোন সরঞ্জাম বা পদ্ধতি আছে কি? স্ক্র্যাচ থেকে দূরবর্তী কনফিগারেশন বা বিজ্ঞপ্তি বিধিগুলি সেট আপ করা কঠিন কাজ এবং খুব ঝুঁকিপূর্ণ হতে পারে।

কোনও পরামর্শ? দুটি পৃথক পরিবেশ থাকার চেয়ে ভাল পদ্ধতির কি আছে?

আপনি অন্য একটি উত্তর পোস্ট করার আগে যা পৃথক ফায়ারবেস অ্যাকাউন্ট সেটআপ করবেন তা ব্যাখ্যা করে: এটি প্রশ্ন নয়, আবার এটি পড়ুন। প্রশ্নটি হ'ল: আলাদা ডিভ এবং প্রোড অ্যাকাউন্টগুলির মধ্যে কীভাবে পরিবর্তন করা যায় বা তাদের মধ্যে ম্যানুয়ালি অনুলিপি করার চেয়ে আরও ভাল সমাধান।


3
একটি বৈশিষ্ট্য হিসাবে এটি দুর্দান্ত হতে হবে!
প্যাট্রিক


@ টিমারজ প্রথম উত্তরটি দেখুন: কেবল হোস্টিং এবং ডাটাবেসের সাথে প্রাসঙ্গিক, তবে অন্যান্য বৈশিষ্ট্যের সাথে নয়।
র্যাক

আমারও অনুরূপ সমস্যা ছিল I আমি এটি নিম্নলিখিত উপায়ে সমাধান করেছি: এটি পরীক্ষা করুন: stackoverflow.com/questions/51646512/… আমি এটি নিম্নলিখিত উপায়ে সমাধান করেছি: 1 একটি ডিবাগ কনফিগারেশন তৈরি করুন দয়া করে লিংকটি মিডিয়াম.com/@Miqubel/ অনুসরণ করুন … माध्यम . com/ @ Miqubel/২.তখন একটি নতুন ডাটাবেস তৈরি করুন দয়া করে লিংকটি অনুসরণ করুন: ফায়ারবেস.google.com/docs/datedia/usage/… 3. আপনার পণ্যের গন্ধের উপর ভিত্তি করে আপনার কোডে সংশ্লিষ্ট ডাটাবেসের সাথে সংযুক্ত করুন প্রোডাক্টটিতে
কুণাল খায়ের

1
সম্পূর্ণরূপে নতুন ট্যাগ তৈরি করার জন্য আপনার যুক্তি কী? এই ঠিকানাতে কোনও নতুন প্রযুক্তি ইতিমধ্যে [ফায়ারবেস] দ্বারা আচ্ছাদিত নয়?
মাইকেল ডড

উত্তর:


24

সবাই যেমন উল্লেখ করেছে - আপনার একাধিক প্রকল্প / ডাটাবেস প্রয়োজন।

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

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

সম্পাদনা করুন : ফায়ারস্টোর ব্যাকআপ / রফতানি / আমদানির তথ্য এখানে মেঘ ফায়ারস্টোর রফতানি এবং আমদানির তথ্য

আপনি যদি ফায়ারবেস আরটিডিবি ব্যবহার করেন, এবং ফায়ার স্টোর না - এই ডকুমেন্টেশনটি সাহায্য করতে পারে: ফায়ারবেস অটোমেটেড ব্যাকআপস

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


1
ধন্যবাদ, এটি এখন পর্যন্ত সেরা উত্তর।
racks

4
কয়েক হাজার ব্যবহারকারী যে কোনও প্রকল্পের জন্য, আপনি কোনও প্রোডাকশন ডাটাবেস থেকে কোনও স্টেজিং বা ডেভলপমেন্ট সার্ভারে কিছু ডেটা সরিয়ে নেবেন । এটি লজ্জাজনক বিষয় যা ফায়ারবেসে তৈরি করা হয়নি, তবে এটি এমন কোনও বিষয় যা কোনও প্রকারের প্রকল্পের জন্য করা দরকার।

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

54

আপনি যদি ফায়ারবেস-সরঞ্জামগুলি ব্যবহার করেন তবে একটি কমান্ড রয়েছে firebase useযা আপনাকে কোন প্রকল্পের জন্য ব্যবহার করছে তা সেট আপ করতে দেয়firebase deploy

firebase use --addআপনার প্রকল্পগুলির একটি তালিকা এনেছে, একটি নির্বাচন করুন এবং এটি আপনাকে একটি উপনামের জন্য জিজ্ঞাসা করবে। সেখান থেকে আপনি এই প্রকল্পটি করতে পারেন firebase use aliasএবং করতে পারেন firebase deploy

আমার ব্যক্তিগত ব্যবহারে, আমার ফায়ারবেস কনসোলে প্রকল্প হিসাবে আমার অ্যাপ্লিকেশন এবং আমার অ্যাপ্লিকেশন ডেভ রয়েছে।


1
যতদূর আমি বুঝতে পেরেছি ফায়ারবেস সরঞ্জাম হোস্ট করা ফাইল এবং ডাটাবেস স্থাপনের জন্য দরকারী তবে এটি ডাটাবেস, বিশ্লেষণ বা দূরবর্তী কনফিগারেশনের সাথে কিছুই করে না। নাকি আমি কিছু মিস করছি?
racks

@ ক্র্যাকগুলি দেখে মনে হচ্ছে এটি সাম্প্রতিক, তবে আমি ডেটা সিডিং / ডেটা রক্ষণাবেক্ষণের জন্য ক্লিপটি ব্যবহার করতে চেষ্টা করতে যাচ্ছি উদাহরণস্বরূপ: firebase.googleblog.com/2015/11/…
ক্রিস

@ ক্রিস ধন্যবাদ, এটি কমপক্ষে একটি শুরু। এটি দেখতে বরং একটি ত্রুটিযুক্ত জিনিস বলে মনে হচ্ছে। শুভকামনা!
র্যাক

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

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

25

আমি বর্তমানে ফায়ারবেস ব্যবহার করছি না, তবে নিজের মতো করে বিবেচনা করছি। দেখতে যাওয়ার মতো মনে হচ্ছে কনসোলে একটি সম্পূর্ণ পৃথক প্রকল্প তৈরি করা। পুরাতন ফায়ারবেস সাইটে এটির প্রস্তাব দেওয়ার জন্য একটি ব্লগপোস্ট ছিল, যদিও এখন তা সরিয়ে ফেলা হবে বলে মনে হচ্ছে। https://web.archive.org/web/20160310115701/https://www.firebase.com/blog/2015-10-29-managing-development-environments.html

এছাড়াও এই আলোচনার প্রস্তাব একই: https://groups.google.com/forum/#!msg/firebase-talk/L7ajIJoHPcA/7dsNUTDlyRYJ


2
উত্তর করার জন্য ধন্যবাদ. দুটি পৃথক প্রকল্প থাকা সম্ভবত একমাত্র বিকল্প। তবে তাদের মধ্যে ডেটা অনুলিপি করা সবচেয়ে জটিল complicated আমি অবাক হই যে ফায়ারবেস সরঞ্জামগুলি বিধি, শ্রোতার সেটআপ ইত্যাদির অনুলিপি করতে পারে কিনা তা আমার কাছে মনে হয় এটি কেবল ডাটাবেস-সম্পর্কিত অপারেশনগুলির সাথে সম্পর্কিত: github.com/firebase/firebase-tools
racks

2
না কি নিশ্চিত যে এই দেখা করেছি, কিন্তু আপনি একটি firebase-সার্ভার বিরুদ্ধে আপনার দেব চালাতে পারেন কিনা: firebase.googleblog.com/2015/04/...
krico

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

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

3
: এছাড়াও এই পড়া firebase.googleblog.com/2016/08/...
racs

8

আমি যেভাবে এটি করেছি:

  1. আমার ফায়ারবেসে 2 টি প্রকল্প ছিল - একটি ডিওডির জন্য অন্যটি প্রোডের জন্য
  2. স্থানীয়ভাবে আমার অ্যাপ্লিকেশনেও দুটি শাখা ছিল - একটির নাম DEV, অন্যটির নাম PROD
  3. আমার ডিইভি শাখায় আমার কাছে সর্বদা ডিইভি ফায়ারবেস প্রকল্পের জেএসওএন ফাইল থাকে এবং একইভাবে পিআরডি-র জন্য

এইভাবে আমার জেএসওএনগুলি বজায় রাখার দরকার নেই।


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

5

এই ব্লগপোস্টটি একটি ডিবাগ এবং রিলিজ বিল্ড প্রকারের সাথে একটি খুব সাধারণ পদ্ধতির বর্ণনা দেয়।

সংক্ষেপে:

  • বিভিন্ন অ্যাপ্লিকেশন আইডি প্রত্যয় ব্যবহার করে প্রতিটি বিল্ড ধরণের জন্য ফায়ারবেসে একটি নতুন অ্যাপ তৈরি করুন।
  • আপনার অ্যান্ড্রয়েড প্রকল্পটি সর্বশেষতম JSON ফাইলের সাথে কনফিগার করুন।
  • অ্যাপ্লিকেশনআইডসফিক্স ব্যবহার করে, বিল্ড ধরণের উপর নির্ভর করে ফায়ারবেসে বিভিন্ন অ্যাপ্লিকেশনের সাথে মেলে অ্যাপ্লিকেশন আইডি পরিবর্তন করুন।

=> বিস্তারিত বর্ণনার জন্য ব্লগপোস্টটি দেখুন।

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

আশা করি এইটি কাজ করবে!


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

2
দয়া করে মনে রাখবেন এই একই প্রকল্পের ভিতরে দুই অ্যাপস তাই আপনি এই ধরনের বিশ্লেষণ কিছু থেকে আলাদা পরিষেবাকে হবে কিন্তু ডাটাবেজের এতো ভাগ করা হবে পরিবেশের এখানে ব্যাখ্যা একটি বাস্তব বিচ্ছেদ নয় সৃষ্টি firebase.googleblog.com/2016/08/...
AntPachon

5

আপনার বিভিন্ন বিল্ড প্রকার পরিচালনা করতে হবে

এই অনুসরণ করুন

  1. প্রথমে ফায়ারবেস কনসোলে একটি নতুন প্রকল্প তৈরি করুন, আপনার আইডিটি YOURAPPNAME-DEV হিসাবে আইডি করুন

  2. "অ্যান্ড্রয়েড অ্যাপ যুক্ত করুন" বোতামটি ক্লিক করুন এবং একটি নতুন অ্যাপ্লিকেশন তৈরি করুন। নাম হিসাবে এটি com.yourapp.debug, উদাহরণস্বরূপ। নতুন গুগল-পরিষেবাদি.জসন ফাইল স্বয়ংক্রিয়ভাবে ডাউনলোড করা হবে

  3. আপনার প্রকল্পের অধীনে এসসিআর ডিরেক্টরিতে "ডিবাগ" নামে নতুন ডিরেক্টরি তৈরি করুন এবং নতুন গুগল-পরিষেবাদি.জসন ফাইলটি এখানে অনুলিপি করুন

  4. আপনার মডিউল স্তরে build.gradle এ এটি যুক্ত করুন

    debug {
            applicationIdSuffix ".debug"
        }
    

এখন আপনি যখন "ডিবাগ" ফোল্ডার থেকে কোনও ডিবাগ বিল্ড গুগল-পরিষেবাদি.জসন তৈরি করবেন তখন আপনি যখন মডিউল রুট ডিরেক্টরি থেকে রিলিজ মোডে গুগল-পরিষেবাদি.জসন তৈরি করবেন তখন বিবেচনা করা হবে।


কারও কাছে যদি অফিসিয়াল ডকুমেন্টেশন প্রয়োজন হয় তবে গুগল সার্ভিসেস গ্রেডল প্লাগইন srcএখানে বিল্ডটাইপ -এর সাব-ডাইরেক্টরির অধীনে গুগল- সার্ভিস.জসন সন্ধান করতে জানে
মাইকেল ওসোফস্কি

4

আমার পরিস্থিতির সমাধানের জন্য আমি তিনটি ফায়ারবেস প্রকল্প তৈরি করেছি, প্রতিটি একই অ্যান্ড্রয়েড প্রকল্পের সাথে (অর্থাত্ অন্যের প্রস্তাবনা applicationIdব্যবহার না করেই একই applicationIdSuffix)। এর ফলে তিনটি গুগল-সার্ভিস.জসন ফাইল তৈরি হয়েছিল যা আমি আমার কন্টিনিউস ইন্টিগ্রেশন (সিআই) সার্ভারে কাস্টম এনভায়রনমেন্ট ভেরিয়েবল হিসাবে সংরক্ষণ করেছি । বিল্ডের প্রতিটি ধাপের জন্য (ডেভ / স্টেজিং / প্রোড), আমি সংশ্লিষ্ট google-Services.json ফাইলটি ব্যবহার করেছি used

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

.gitlab-ci.ymlএই সেটআপটির জন্য কাজ করা একটি স্ট্রিপ ডাউন এখানে :

# This is a Gitlab Continuous Integration (CI) Pipeline definition
# Environment variables:
#   - variables prefixed CI_ are Gitlab predefined environment variables (https://docs.gitlab.com/ee/ci/variables/predefined_variables.html)
#   - variables prefixed GNDR_CI are Gitlab custom environment variables (https://docs.gitlab.com/ee/ci/variables/#creating-a-custom-environment-variable)
#
# We have three Firebase projects (dev, staging, prod) where the same package name is used across all of them but the
# debug signing certificate is only provided for the dev one (later if there are other developers, they can have their
# own Firebase project that's equivalent to the dev one).  The staging and prod Firebase projects use real certificate
# signing so we don't need to enter a Debug signing certificate for them.  We don't check the google-services.json into
# the repository.  Instead it's provided at build time either on the developer's machine or by the Gitlab CI server
# which injects it via custom environment variables.  That way the google-services.json can reside in the default
# location, the projects's app directory.  The .gitlab-ci.yml is configured to copy the dev, staging, and prod equivalents
# of the google-servies.json file into that default location.
#
# References:
# https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html
# /programming/57129588/how-to-setup-firebase-for-multi-stage-release

stages:
  - stg_build_dev
  - stg_build_staging
  - stg_build_prod

jb_build_dev:
  stage: stg_build_dev
  image: jangrewe/gitlab-ci-android
  cache:
    key: ${CI_PROJECT_ID}-android
    paths:
      - .gradle/
  script:
    - cp ${GNDR_CI_GOOGLE_SERVICES_JSON_DEV_FILE} app/google-services.json
    - ./gradlew :app:assembleDebug
  artifacts:
    paths:
      - app/build/outputs/apk/

jb_build_staging:
  stage: stg_build_staging
  image: jangrewe/gitlab-ci-android
  cache:
    key: ${CI_PROJECT_ID}-android
    paths:
      - .gradle/
  dependencies: []
  script:
    - cp ${GNDR_CI_GOOGLE_SERVICES_JSON_STAGING_FILE} app/google-services.json
    - ./gradlew :app:assembleDebug
  artifacts:
    paths:
      - app/build/outputs/apk/

jb_build_prod:
  stage: stg_build_prod
  image: jangrewe/gitlab-ci-android
  cache:
    key: ${CI_PROJECT_ID}-android
    paths:
      - .gradle/
  dependencies: []
  script:
    - cp ${GNDR_CI_GOOGLE_SERVICES_JSON_PROD_FILE} app/google-services.json

    # GNDR_CI_KEYSTORE_FILE_BASE64_ENCODED created on Mac via:
    # base64 --input ~/Desktop/gendr.keystore --output ~/Desktop/keystore_base64_encoded.txt
    # Then the contents of keystore_base64_encoded.txt were copied and pasted as a Gitlab custom environment variable
    # For more info see http://android.jlelse.eu/android-gitlab-ci-cd-sign-deploy-3ad66a8f24bf
    - cat ${GNDR_CI_KEYSTORE_FILE_BASE64_ENCODED} | base64 --decode > gendr.keystore

    - ./gradlew :app:assembleRelease
      -Pandroid.injected.signing.store.file=$(pwd)/gendr.keystore
      -Pandroid.injected.signing.store.password=${GNDR_CI_KEYSTORE_PASSWORD}
      -Pandroid.injected.signing.key.alias=${GNDR_CI_KEY_ALIAS}
      -Pandroid.injected.signing.key.password=${GNDR_CI_KEY_PASSWORD}
  artifacts:
    paths:
      - app/build/outputs/apk/

আমি এই সমাধানটি নিয়ে খুশি কারণ এটি বিল্ড.gradle ট্রিক্সের উপর নির্ভর করে না যা আমি বিশ্বাস করি যে এটি অত্যন্ত অস্বচ্ছ এবং এটি বজায় রাখা শক্ত। উদাহরণস্বরূপ, যখন আমি ব্যবহার করার পদ্ধতিগুলি applicationIdSuffixএবং বিভিন্ন buildTypeগুলি ব্যবহার করার চেষ্টা করেছি তখন আমি দেখতে পেলাম যে বিল্ড প্রকারগুলি ব্যবহার করে স্যুইচ করার চেষ্টা করার সময় আমি চালিত বা এমনকি সংকলনের জন্য গেমেটেড টেস্টগুলি পেতে পারি না testBuildType। অ্যান্ড্রয়েড এমন একটি বিশেষ সম্পত্তি দেবে বলে মনে হয়েছিল debug buildTypeযা আমি বুঝতে পারছি না।

কার্যতঃ, সিআই স্ক্রিপ্টগুলি যদিও আমার অভিজ্ঞতায় বেশ স্বচ্ছ এবং বজায় রাখা সহজ। প্রকৃতপক্ষে, আমি যে পদ্ধতির কাজটি বর্ণনা করেছি: আমি যখন এমুলেটরটিতে সিআই দ্বারা উত্পাদিত প্রতিটি APK চালিয়ে যাই তখন ফায়ারবেস কনসোলের "ইনস্টলেশন যাচাই করতে আপনার অ্যাপ্লিকেশন চালান" পদক্ষেপটি চলে গেছে

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

প্রতি:

অভিনন্দন, আপনি সফলভাবে আপনার অ্যাপে ফায়ারবেস যুক্ত করেছেন!

তিনটি অ্যাপ্লিকেশানের জন্য যেমন আমি এমুলেটরটিতে একে একে শুরু করেছি।


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

আমি @racs একমত কিন্তু দুর্ভাগ্যবশত যখন আমি লিখেছি stackoverflow.com/questions/37450439/... , এটি দ্বারা আপনার প্রশ্নের সদৃশ হিসাবে চিহ্নিত করা হয়েছিল stackoverflow.com/users/807126/doug-stevenson
মাইকেল Osofsky

1
ডগ ... তুমি কি করেছ! : ডিআই আপনার উত্তর এখানে আপত্তি করবেন না, আমি নিশ্চিত এটি পৃথক পরিবেশের জন্য সমাধান চাইছেন এমন কিছু লোকের পক্ষে এটি সহায়ক।
রাকস

হ্যাঁ, আমরা আমাদের মোবাইল অ্যাপ্লিকেশনটির জন্য একটি সমাধান খুঁজছি যা ফায়ারবেস পরিষেবা সহ পৃথক পরিবেশ প্রয়োজন। এটি অবশ্যই আমাদের জন্য একটি ভাল সূচনা পয়েন্ট। আমরা এটি চেষ্টা করব।
এলটি

2

ফায়ারবেসে এর একটি পৃষ্ঠা রয়েছে যা এটি কীভাবে ডেভ এবং প্রোডের জন্য সেট আপ করতে হয় তার মধ্য দিয়ে যায়

https://firebase.google.com/docs/functions/config-env

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

উদাহরণস্বরূপ, "কিছু পরিষেবা" এর জন্য ক্লায়েন্ট আইডি এবং এপিআই কী সঞ্চয় করতে আপনি চালাতে পারেন:

firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"

বর্তমান পরিবেশের কনফিগারেশনটি পুনরুদ্ধার করুন আপনার প্রকল্পের জন্য পরিবেশ কনফিগারেশনে বর্তমানে কী সঞ্চিত রয়েছে তা পরীক্ষা করতে আপনি ফায়ারবেস ফাংশনগুলি ব্যবহার করতে পারেন: config: get। এটি JSON কে এই জাতীয় কিছু দেবে:

{
  "someservice": {
    "key":"THE API KEY",
    "id":"THE CLIENT ID"
  }
}

1
একটি 404 এ সমাধান করুন Next পরের বারের মতো সামগ্রীগুলিও অন্তর্ভুক্ত করুন!
CorayThan

1

আমি সবে পাওয়া তথ্যের ভিত্তিতে এই উত্তরটি আপডেট করছি।

ধাপ 1

ফায়ারবেইস.কম এ আপনার একাধিক পরিবেশ তৈরি করুন (যেমন; দেব, স্টেজিং, প্রোড)


mysite-দেব

mysite-উপস্থাপনকারী

mysite-শঙ্কু


ধাপ ২

ক। আপনি নিজের ডিফল্ট হতে চাইলে সরাসরি যান (যেমন; দেব)

খ। চালানfirebase deploy

গ। একবার মোতায়েন, চালানোfirebase use --add

ঘ। আপনার বর্তমানে থাকা বিভিন্ন প্রকল্প থেকে নির্বাচন করার জন্য একটি বিকল্প উপস্থিত হবে।

আপনি যে প্রকল্পটি যুক্ত করতে চান তাতে স্ক্রোল করুন: মাইসাইট-মঞ্চায়ন এবং এটি নির্বাচন করুন।

ঙ। তারপরে আপনাকে সেই প্রকল্পের জন্য একটি উলামের জন্য জিজ্ঞাসা করা হবে। মঞ্চ প্রবেশ করুন ।

প্রোড এবং দেবের জন্য আইটেমগুলি আবার চালাও, যাতে প্রতিটি পরিবেশের একটি উপাধি থাকে


আপনি কোন পরিবেশে আছেন তা জানুন

চালান firebase use default (mysite-dev)

* dev (mysite-dev)

staging (mysite-staging)

prod (mysite-dev)

(যে কোনও একটি পরিবেশের বামে একটি তারকাচিহ্ন থাকবে That's আপনি বর্তমানে এটিই রয়েছেন It এটি নীল রঙেও হাইলাইট করা হবে)


পরিবেশের মধ্যে স্যুইচ করুন

দৌড়াতে firebase use stagingবা firebase use prodতাদের মধ্যে সরানো।

একবার আপনি যে পরিবেশে চান তা চালানোর পরে চালান firebase deployএবং আপনার প্রকল্পটি সেখানে স্থাপন করা হবে।

এখানে বেশ কয়েকটি সহায়ক লিঙ্ক রয়েছে ...

সিএলআই রেফারেন্স

একাধিক পরিবেশে স্থাপন করা

আশাকরি এটা সাহায্য করবে.


আপনি যখন একাধিক পরিবেশ বলছেন, আপনি একাধিক প্রকল্প বলতে চাইছেন?
ওয়ালিডভিবি

0

আমরা যেভাবে এটি করছি তা হ'ল বিভিন্ন পরিবেশের জন্য বিভিন্ন জসন কী ফাইল তৈরি করা। আমরা গুগল দ্বারা প্রস্তাবিত হিসাবে পরিষেবা অ্যাকাউন্ট বৈশিষ্ট্যটি ব্যবহার করেছি এবং উত্পাদনের জন্য একটি ডেভলপমেন্ট ফাইল এবং অন্যটি রয়েছে

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


0

ডেভ এবং টু প্রকল্পটি ফায়ারবেসে পরিবেশ তৈরি করুন তৈরি করুন জেএসএন ফাইলটি থ্রিজ থেকে ডাউনলোড করুন

এবং এসডিকে নীচে সেটআপ করুন: https://firebase.google.com/docs/android/setup বা ক্র্যাশলিটিক্সের জন্য: https://firebase.google.com/docs/crashlytics/get-stated?platform=android

প্রথমে নিম্নলিখিত বিল্ডগুলিতে প্রতিটি বিল্ডটাইপের জন্য সংশ্লিষ্ট google_services.json রাখুন:

app/src/debug/google_services.json
app/src/test/google_services.json
app/google_services.json

দ্রষ্টব্য: রুট অ্যাপ্লিকেশন / google_services.json এই ফাইলটি সেখানে বিল্ড ভেরিয়েন্ট অনুসারে রুট জসন ফাইলে জেসন কোডটি অনুলিপি করা উচিত

এখন, আসুন আপনার কয়েকটি গ্রেডের কাজগুলি শেষ করে দিন: উপযুক্ত google_services.json- কে অ্যাপ্লিকেশন / google_services.json এ সরিয়ে স্বয়ংক্রিয় করতে অ্যাপের বিল্ড অ্যাড্রেডল

এটি অ্যাপ / গ্রেডল ফাইলটিতে অনুলিপি করুন

task switchToDebug(type: Copy) {
description = 'Switches to DEBUG google-services.json'
from "src/debug"
include "google-services.json"
into "."
}

task switchToRelease(type: Copy) {
description = 'Switches to RELEASE google-services.json'
from "src/release"
include "google-services.json"
into "."
}

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

Zaks-MBP:my_awesome_application zak$ ./gradlew assembleRelease
Parallel execution is an incubating feature.
.... (other tasks)
:app:processReleaseGoogleServices
....
:app:assembleRelease

নোট করুন: অ্যাপ্লিকেশন: প্রক্রিয়ারেজি গুগল সার্ভিস কার্য। এই টাস্কটি মূল google_services.json ফাইল প্রক্রিয়া করার জন্য দায়ী। আমরা চাই সঠিক google_services.json প্রক্রিয়াজাত করা উচিত, তাই আমাদের অবশ্যই আমাদের কপি টাস্কটি তাত্ক্ষণিক আগে চালানো উচিত। এটি আপনার বিল্ডড্র্যাডলে যুক্ত করুন। পরে মূল্যায়ন ঘেরটি নোট করুন।

এটি অ্যাপ / গ্রেডল ফাইলটিতে অনুলিপি করুন

afterEvaluate {
processDebugGoogleServices.dependsOn switchToDebug
processReleaseGoogleServices.dependsOn switchToRelease
}

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


1
আপনি এই উত্তরের জন্য প্রচুর শক্তি রেখেছেন, তবে ১. এই প্রশ্নের সাথে কিছু করার নেই (দয়া করে এটি আবার পড়ুন), ২. আপনি যদি google-services.jsonফাইলটি ধরে রাখেন তবে আপনাকে মূল ফোল্ডারে কপি করতে হবে না 2. গন্ধ ফোল্ডার যে পুরোপুরি ঠিক আছে। পরিবর্তে assembleReleaseআপনি কেবল কোনও assembleTestReleaseকাজ শুরু করতে পারেন ।
র্যাকস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.