प्रारंभ करना

यह सेक्शन, इंजीनियर को पांच मिनट में क्रॉस-प्रोफ़ाइल कॉल, SDK टूल के साथ काम करते हैं और उनकी जांच करने का तरीका बताते हैं. ऐसा करने की कोशिश न करें - यह किसी रेफ़रंस या गाइड के तौर पर इस्तेमाल करने के लिए नहीं बनाया गया है. बस एक परिचय की तरह.

कस्टम प्रोफ़ाइल अवेयर क्लास और तरीके

कनेक्ट किए गए ऐप्लिकेशन के SDK टूल से, आपको अपनी क्लास और तरीकों के बारे में इस तरह से जानकारी दी जा सकती है क्रॉस-प्रोफ़ाइल. यह ऐसी क्लास और मेथड जनरेट करता है जिनसे आपको व्याख्या करने की सुविधा का इस्तेमाल करें.

उदाहरण के लिए, SDK टूल के एनोटेशन के साथ इस क्लास को चुनें:

public class CalendarDatabase {

  @CrossProfile // SDK annotation
  public void deleteEvent(Event event, Account account) {
    // complex logic with database calls
  }
}

यह प्रोफ़ाइल के साथ प्रीफ़िक्स वाली एक क्लास जनरेट करता है, जिससे आप इस एपीआई को कॉल कर सकते हैं आपकी पसंद की प्रोफ़ाइल का इस्तेमाल कर सकती है. उदाहरण के लिए: java profileCalendarDatabase.work().deleteEvent(event, account);

ज़्यादा मुश्किल उदाहरण

असल में, आपकी क्लास और तरीके ज़्यादा जटिल होंगे. उदाहरण के लिए, आपके मौजूदा एपीआई में, ListenableFuture रिटर्न टाइप इस्तेमाल किए जा सकते हैं. ऐसा करने के लिए, आपको इनकी ज़रूरत पड़ सकती है का इस्तेमाल करें. इस उदाहरण पर ध्यान दें:

public class CalendarDatabase {

  @CrossProfile // SDK annotation
  public ListenableFuture<Collection<Event>> getEvents() {
    // complex logic with database calls
  }
}
// Merge results from both profiles into a set
profileCalendarDatabase.both()
  .getEvents()
  .transform((Map<Profile, Collection<Event>> events) -> {
    return events.values()
        .stream()
        .flatMap(Collection::stream)
        .collect(Collectors.toSet());
  }, directExecutor());

जनरेट की गई ये क्लास और तरीके, पूरी तरह की सुरक्षा के साथ उम्मीद के मुताबिक काम करते हैं और IDE कोड पूरा हुआ.

आपके एनोटेट किए गए एपीआई के हर रिटर्न और पैरामीटर टाइप को SDK टूल की तरह काम करता है. हालांकि, यह सूची, सेट, सरणियों की नेस्टिंग और जेनरिक प्रिमिटिव, कोई भी पार्स किया जा सकने वाला टाइप, और किसी भी क्रम में लगाए जा सकने वाले टाइप के साथ-साथ ListenableFuture, Optional, और प्रोटो. हालांकि, आपके पास यह ऐसे टाइप पर काम करता है जो SDK टूल पर नेटिव तौर पर काम नहीं करते. उदाहरण के तौर पर, यह ListenableFuture<List<Map<CustomProto, CustomParcelableType[]>>> का आसानी से समर्थन करेगा.

टेस्ट करना

SDK टूल को यूनिट टेस्टिंग को आसान बनाने के लिए डिज़ाइन किया गया है. जनरेट की गई हर प्रोफ़ाइल क्लास के लिए, इससे जुड़ी FakeProfile क्लास है, ताकि आप काम दे सकें और निजी मामले. उदाहरण के लिए:

// Create an instance of the SDK-generated fake connector class. This
// class lets you control the availability of the profiles, which
// profile you are now running on.
private final FakeCrossProfileConnector connector =
  new FakeCrossProfileConnector();

// Create an instance of your real/fake/mock class for both profiles.
private final CalendarDatabase personalCalendarDatabase =
  new FakeCalendarDatabase();
private final CalendarDatabase workCalendarDatabase =
  new FakeCalendarDatabase();

// Create an instance of the SDK-generated fake profile-aware class.
private final FakeProfileCalendarDatabase profileCalendarDatabase =
  FakeProfileCalendarDatabase.builder()
    .personal(personalCalendarDatabase)
    .work(workCalendarDatabase)
    .connector(connector)
    .build();

// Pass profileCalendarDatabase into your classes under test, or set
// Dagger up to inject the fake automatically.