(เช…เชจ) เช…เชงเชฟเช•เซƒเชค Habr เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ - HabrApp 2.0: เชเช•เซเชธเซ‡เชธ เชฎเซ‡เชณเชตเชตเซ€

เชเช• เชจเชฟเชธเซเชคเซ‡เชœ เช…เชจเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชคเชฆเซเชฆเชจ เช•เช‚เชŸเชพเชณเชพเชœเชจเช• เชธเชพเช‚เชœ, เชนเซเช‚, เชฌเชนเชพเชฐ เชจเซ€เช•เชณเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚ เช…เชงเชฟเช•เชพเชฐเซ€ เชนเซ‡เชฌเซเชฐ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจ, เชซเชฐเซ€ เชเช•เชตเชพเชฐ เชฎเซ‡เช‚ เชฎเชพเชฐเซ€ เช†เช‚เช—เชณเซ€เช“ เชตเชพเช‚เช•เชพ เช•เชฐเซ€, เชฆเชฐเซ‡เช• เชฌเชฟเชจ-เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชธเซเชตเชฟเชงเชพ เชฎเชพเชŸเซ‡ เชเช•. เช…เชนเซ€เช‚, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเชฎเซ‡ เชŸเชฟเชชเซเชชเชฃเซ€ เช•เชฐเซ€ เชถเช•เชคเชพ เชจเชฅเซ€, เช…เชนเซ€เช‚ เชคเชฎเชจเซ‡ เชฎเชค เช†เชชเชตเชพเชจเซ‹ เช…เชงเชฟเช•เชพเชฐ เชจเช•เชพเชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชซเซ‹เชฐเซเชฎเซเชฏเซเชฒเชพ เชธเซเช•เซเชฐเซ€เชจ เชชเชฐ เช•เซ‡เชฎ เชฆเซ‡เช–เชพเชคเชพ เชจเชฅเซ€?

(เช…เชจ) เช…เชงเชฟเช•เซƒเชค Habr เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ - HabrApp 2.0: เชเช•เซเชธเซ‡เชธ เชฎเซ‡เชณเชตเชตเซ€
เชคเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚: เช…เชฎเชจเซ‡ เช•เช‚เชˆเช• เช†เชฐเชพเชฎเชฆเชพเชฏเช•, เชธเซเช–เชฆ, เช…เชฎเชพเชฐเซ€ เชชเซ‹เชคเชพเชจเซ€ เช•เช‚เชˆเช•เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. Habr เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ€ เชชเซ‹เชคเชพเชจเซ€ เช…เชฐเชœเซ€ เชตเชฟเชถเซ‡ เชถเซเช‚?
เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡ เชนเซเช‚ เชคเชฎเชจเซ‡ เชฅเซ‹เชกเชพ เชธเซเช•เซเชฐเซ€เชจเชถเซ‰เชŸเซเชธ เช†เชชเซเช‚ เช›เซเช‚.

(เช…เชจ) เช…เชงเชฟเช•เซƒเชค Habr เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ - HabrApp 2.0: เชเช•เซเชธเซ‡เชธ เชฎเซ‡เชณเชตเชตเซ€เช•เช‚เชˆเช• เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เชคเซ‡ - เชจเชพ. habr.com เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ

"เช…เชธเซเชตเชฟเชงเชพเช“" เชจเซ€ เชธเซ‚เชšเชฟ

  • เชคเชฎเซ‡ เชเชตเชพ เชชเซเชฐเช•เชพเชถเชจเชจเซ‡ เชฐเซ‡เชŸ เช•เชฐเซ€ เชถเช•เชคเชพ เชจเชฅเซ€ เช•เซ‡ เชœเซ‡เชจเซเช‚ เชฐเซ‡เชŸเชฟเช‚เช— 0 เชฅเซ€ เช…เชฒเช— เชนเซ‹เชฏ
  • เชŸเชฟเชชเซเชชเชฃเซ€ เชฒเช–เชตเซ€ เชนเช‚เชฎเซ‡เชถเชพ เชถเช•เซเชฏ เชจเชฅเซ€
  • เชฎเชคเชฆเชพเชจ เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชจเชฅเซ€
  • เชถเซเชฏเชพเชฎ เชฅเซ€เชฎเชฎเชพเช‚ เชซเซ‹เชฐเซเชฎเซเชฏเซเชฒเชพ เชฆเซ‡เช–เชพเชคเชพ เชจเชฅเซ€ (เช•เชพเชณเชพ เชชเชฐ เช•เชพเชณเซ‹)
  • เชฌเชงเชพ เชฌเซเช•เชฎเชพเชฐเซเช•เซเชธ เช‰เชชเชฒเชฌเซเชง เชจเชฅเซ€

เชนเชพ, เช—เชฏเชพ เชตเชฐเซเชทเซ‡ เช“เช—เชธเซเชŸเชฅเซ€ เชเชช เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชคเซ‡ เชนเชœเซ เชชเชฃ เช–เชฐเชพเชฌ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชคเซ‡เชจเซ‡ เช เซ€เช• เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชญเชพเช— เชเช•. เชเช•เซเชธเซ‡เชธ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช.

เชเชกเชชเซ€ Google เช•เซเชตเซ‡เชฐเซ€ "habrahabr API" เชคเซ‡ เช•เชนเซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชคเชฆเซเชฆเชจ เชœเซ‚เชจเซเช‚ เช›เซ‡ เชญเช‚เชกเชพเชฐ Github เชชเชฐ, เชคเซเชฏเชพเชฐเชฅเซ€ เช…เชชเชกเซ‡เชŸ เชฅเชฏเซ‡เชฒ เชจเชฅเซ€ เชจเชตเซ‡เชฎเซเชฌเชฐ 21 2016, เช…เชจเซ‡ เช†, เชเช• เช•เซเชทเชฃ เชฎเชพเชŸเซ‡, เช…เชขเซ€ เชตเชฐเซเชท.

เช† PHP เช›เซ‡ เชคเซ‡ เชนเช•เซ€เช•เชคเชจเซ‡ เช…เชตเช—เชฃเซ€เชจเซ‡, เชจเซ€เชšเซ‡ เชธเซเช•เซเชฐเซ‹เชฒ เช•เชฐเซ‹ เช…เชจเซ‡ เชตเชพเช‚เชšเซ‹:

เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ ID เชฎเซ‡เชณเชตเชตเซ€

เชฒเชพเชญ เชฒเซ‡ เช›เซ‡ เช† เชซเซ‹เชฐเซเชฎ Habrahabr เชชเชฐ, เชคเชฎเชพเชฐเซ‡ เชธเช‚เช•เซเชทเชฟเชชเซเชคเชฎเชพเช‚ เชจเชตเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‹ เชธเชพเชฐ เช…เชจเซ‡ เชคเซ‡ เชนเซ‡เชคเซเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เชœเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซ‡ API เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชคเซเชฏเชพเช‚ เช•เซ‹เชˆ เชชเซเชฐเชถเซเชจ เชจเชฅเซ€, เชœเซ‹ เชคเชฎเชพเชฐเซ‡ เชเช•เซเชธเซ‡เชธ เชฎเซ‡เชณเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ, เชคเซ‹ เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช…เชฎเซ‡ เชเช• เชชเชคเซเชฐ เชฒเช–เซ€เช เช›เซ€เช (เชธเช‚เช•เซเชทเชฟเชชเซเชค):

เชเช• เชชเชคเซเชฐ

PWA เชชเชฐ เช†เชงเชพเชฐเชฟเชค Habr เชฎเชพเชŸเซ‡ เช…เชฐเชœเซ€ เช•เชฐเชตเชพเชจเซ€ เชˆเชšเซเช›เชพ เช›เซ‡. เช†เชจเชพ เช…เชจเซ‡เช• เช•เชพเชฐเชฃเซ‹ เช›เซ‡. 

เชชเซเชฐเชฅเชฎ เช…เชจเซ‡ เชธเซŒเชฅเซ€ เชธเซเชชเชทเซเชŸ: Android เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชฐเซ€ เชตเซเชฏเช•เซเชคเชฟเช—เชค เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹เชจเซ‡ เชชเซ‚เชฐเซเชฃ เช•เชฐเชคเซ€ เชจเชฅเซ€.

เชฌเซ€เชœเซเช‚: เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช‡เชฎเซ‡เช‡เชฒ เชฆเซเชตเชพเชฐเชพ เช†เชตเชคเซ€ เชคเชฎเชพเชฎ เชชเซเชฐเช•เชพเชฐเชจเซ€ เชตเชธเซเชคเซเช“ เชตเชฟเชถเซ‡ เชชเชฐเซเชฏเชพเชชเซเชค เชธเซเชฅเชพเชจเชฟเช• เชธเซ‚เชšเชจเชพเช“ เชจเชฅเซ€ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ เชŸเชฟเชชเซเชชเชฃเซ€เช“).

เชคเซเชฐเซ€เชœเซเช‚: เชฎเชพเชฐเซ€ เชฐเซเชšเชฟเช“เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชคเชพ, เชฎเชจเซ‡ เชฐเซเชšเชฟ เชงเชฐเชพเชตเชคเชพ เชฒเซ‹เช•เซ‹/เชนเชฌ เชชเชฐ เชตเซเชฏเช•เซเชคเชฟเช—เชค เชกเชพเชฏเชœเซ‡เชธเซเชŸ (เชเช• เชชเชฐเชฟเชชเซเชฐเซ‡เช•เซเชทเซเชฏ เชคเชฐเซ€เช•เซ‡).

เชœเชตเชพเชฌ, เช…เชฒเชฌเชคเซเชค, เช–เซ‚เชฌ เชธเซเช–เชฆ เชจ เชนเชคเซ‹, เชชเชฐเช‚เชคเซ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชชเซเชฐเชฎเชพเชฃเชฟเช•:

เช•เชฎเชจเชธเซ€เชฌเซ‡, เช…เชฎเชพเชฐเชพ API เชจเซ€ เชเช•เซเชธเซ‡เชธ เชนเชพเชฒเชฎเชพเช‚ เช‰เชชเชฒเชฌเซเชง เชจเชฅเซ€. เช…เชฎเซ‡ API เชจเซ‡ เช†เช–เชฐเซ€ เชฐเซ‚เชช เช†เชชเชตเชพเชจเซเช‚ เชธเชฎเชพเชชเซเชค เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชเช•เซเชธเซ‡เชธ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชจเซเช‚ เชซเชฐเซ€ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ€ เชฏเซ‹เชœเชจเชพ เชฌเชจเชพเชตเซ€เช เช›เซ€เช, เชชเชฐเช‚เชคเซ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชนเชœเซ เชธเซเชงเซ€ เช•เซ‹เชˆ เชšเซ‹เช•เซเช•เชธ เชคเชพเชฐเซ€เช–เซ‹ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเซ‡ เชนเชพเชฒเชฎเชพเช‚ เช…เชจเซเชฏ เชชเซเชฐเชพเชฅเชฎเชฟเช•เชคเชพเชจเชพ เช•เชพเชฐเซเชฏเซ‹เชจเซ‡ เช‰เช•เซ‡เชฒเชตเชพเชฎเชพเช‚ เชตเซเชฏเชธเซเชค เช›เซ€เช.

"เชญเชฒเซ‡, เช•เชˆเช‚ เชตเชพเช‚เชงเซ‹ เชจเชนเซ€เช‚! เช…เชฎเซ‡ เช•เช‚เชˆเช• เชฒเชˆเชจเซ‡ เช†เชตเซ€เชถเซเช‚!" - เชฎเซ‡เช‚ เชฎเชพเชฐเซ€ เชœเชพเชคเชจเซ‡ เช•เชนเซเชฏเซเช‚ เช…เชจเซ‡ เชœเซ‹เชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚.

เชฌเซ€เชœเซ‹ เชญเชพเช—. เชŠเช‚เชกเชพ เช–เซ‹เชฆเช•เชพเชฎ.

เชคเชฐเซเช•เชจเชพ เช†เชงเชพเชฐเซ‡, เชœเซ‹ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชšเชพเชฒเซ€ เชฐเชนเซ€ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡เชจเซ€ เชชเชพเชธเซ‡ API เชจเซ€ เชเช•เซเชธเซ‡เชธ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚ เชนเชพเชฐเซเชกเชตเชพเชฏเชฐเซเชก เช›เซ‡. เชšเชพเชฒเซ‹ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€เช.

เช…เชฎเซ‡ เชŸเซเชฐเชพเชซเชฟเช• เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เชนเซ‹เชตเชพเชฅเซ€, เชตเชพเชฏเชฐเชถเชพเชฐเซเช• เช…เชฎเชพเชฐเซ€ เชชเชธเช‚เชฆเช—เซ€ เช›เซ‡. เช•เซ‡เชŸเชฒเชพเช• เชชเซ€เชกเชพ เชตเชฟเชจเชพ เชจเชนเซ€เช‚, เชกเซ‡เชธเซเช•เชŸเซ‹เชช เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชฆเซเชตเชพเชฐเชพ เชซเซ‹เชจเชจเซ‡ เช‡เชจเซเชŸเชฐเชจเซ‡เชŸ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช…เชฎเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช–เซ‹เชฒเซ€เช เช›เซ€เช เช…เชจเซ‡ เชตเชฟเชจเช‚เชคเซ€เช“ เชœเซ‹เชˆเช เช›เซ€เช:

(เช…เชจ) เช…เชงเชฟเช•เซƒเชค Habr เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ - HabrApp 2.0: เชเช•เซเชธเซ‡เชธ เชฎเซ‡เชณเชตเชตเซ€
เชคเซ‡ เชธเซเชชเชทเซเชŸ เช›เซ‡ เช•เซ‡ เช•เชถเซเช‚ เชธเซเชชเชทเซเชŸ เชจเชฅเซ€

เชนเชพ, เชฌเชงเซเช‚ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸเซ‡เชก เช›เซ‡, เชชเชฐเช‚เชคเซ เชนเซเช‚ เช•เซเชฐเชฟเชชเซเชŸเซ‹เช—เซเชฐเชพเชซเซ€ เชธเชพเชฅเซ‡ เช—เชกเชฌเชก เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชจเชฅเซ€. เชชเช›เซ€ เชคเชฎเชพเชฐเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เช…เช‚เชฆเชฐ เชœ เชœเซ‹เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชกเซ€เช•เชฎเซเชชเชพเช‡เชฒ เชธเชฎเชพเชตเชพเชฏเซ‡เชฒ apk, เชšเชพเชฒเซ‹ เชœเซ‹เชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ€เช. เช•เซ‹เชˆเชชเชฃ API เชจเซ‡ เชถเซเช‚ เชœเซ‹เชˆเช เช›เซ‡? เช–เชฐเซเช‚, เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸ, เชคเซ‡ เชธเซเชฅเชพเชจ เชœเซเชฏเชพเช‚ เชฌเชงเซ€ เชตเชฟเชจเช‚เชคเซ€เช“ เชœเชพเชฏ เช›เซ‡. เช† เช•เชฆเชพเชš http(s) เช›เซ‡, เชšเชพเชฒเซ‹ "https://" เชถเซ‹เชงเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เช:

เชซเชพเชˆเชฒเชฎเชพเช‚ AuthLinkManager.smali เช…เชฎเซ‡ เชถเซ‹เชงเซ€เช เช›เซ€เช

.field OAUTH:Ljava/lang/String; = "https://habrahabr.ru/auth/o/%s/"
.field OAUTH_PARAMS:Ljava/lang/String; = "?client_id=%s&response_type=token&redirect_uri=%s"
.field OAUTH_REDIRECT_URL:Ljava/lang/String; = "http://cleverpumpkin.ru"

เช† เชเชจเซเชกเซเชฐเซ‹เช‡เชก เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ เชฎเชพเชŸเซ‡เชจเซ‹ เช•เซ‹เชก เช›เซ‡ (เชฆเชพเชฒเชตเชฟเช• เชตเซ€.เชเชฎ.), เชฎเชจเซเชทเซเชฏเซ‹ เชฎเชพเชŸเซ‡ เช–เซ‚เชฌ เชธเชฎเชœเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชนเชœเซ เชชเชฃ เชคเชฆเซเชฆเชจ เชฎเชพเชนเชฟเชคเซ€เชชเซเชฐเชฆ. เช† เชคเซเชฐเชฃ เชธเซเชฅเชฟเชฐเชพเช‚เช•เซ‹, เชคเซ‡เชฎเชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เช…เชจเซ‡ เชจเชพเชฎ, เชคเซ‡เชฎเชœ GitHub เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€ เชฆเซเชตเชพเชฐเชพ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชชเชฆเซเชงเชคเชฟเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชเช•เซเชธเซ‡เชธ เชŸเซ‹เช•เชจเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡. GET.

เชšเชพเชฒเซ‹ เช†เช—เชณ เชœเซ‹เชˆเช. เชธเชฐเซเชšเชฎเชพเช‚ เช†เช—เชณ เชœเซ‡ เชซเชพเชˆเชฒ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡ เช›เซ‡ NetworkModule.smali:

const-string v0, "https://habr.com/api/v1/"

เช…เชจเซ‡ เช…เชนเซ€เช‚ เชคเชฎเชพเชฐเซ€ เชตเชฟเชจเช‚เชคเซ€เช“ เชธเชพเชฅเซ‡ เชœเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชธเซเชฅเชพเชจ เช›เซ‡!

เชธเซเชต-เชฒเซ‡เช–เชฟเชค เช•เซเชฒเชพเชฏเช‚เชŸ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เชคเซ‡ เชฎเชพเชŸเซ‡, เชฎเชพเชคเซเชฐ เชเช• เชœ เชตเชธเซเชคเซ เชถเซ‹เชงเชตเชพเชจเซเช‚ เชฌเชพเช•เซ€ เช›เซ‡ - client_id, เชœเซ‡ เชธเช‚เชญเชตเชคเชƒ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช…เชจเชจเซเชฏ เช“เชณเช–เช•เชฐเซเชคเชพ เช›เซ‡.

เชœเซ‹ เช•เซ‡, เชธเซเชคเซเชฐเซ‹เชค เช•เซ‹เชกเชฎเชพเช‚ เช† เชŸเซ‡เช•เซเชธเซเชŸ เชถเซ‹เชงเชตเชพเชฅเซ€ เชธเช‚เชฌเช‚เชงเชฟเชค เชฎเชพเชนเชฟเชคเซ€ เชถเซ‹เชงเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชจ เชนเชคเซ€...

เชชเชฐเช‚เชคเซ เช…เชšเชพเชจเช• เชเช• เชซเชพเช‡เชฒเชฎเชพเช‚ เชฎเชพเชฐเซ€ เช†เช‚เช–เซ‹เช เช•เซ‡เชŸเชฒเซ€เช• เชฐเชธเชชเซเชฐเชฆ เชฐเซ‡เช–เชพเช“ เชชเช•เชกเซ€:

const-string p8, "log-tag"
invoke-static {p8, p2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

เช†, เชœเซ‡เชฎ เชคเชฎเซ‡ เชธเชฎเชœเซ€ เชถเช•เซ‹ เช›เซ‹, เชฒเซ‹เช— เชเชจเซเชŸเซเชฐเซ€ เช›เซ‡. เชชเชฃ เชฐเซ‡เช•เซ‹เชฐเซเชกเชฟเช‚เช— เชถเซเช‚?

เชญเชพเช— เชคเซเชฐเชฃ. เช† เชฒเซ‹เช— เช›เซ‡!

เช…เชฎเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช adb logcat เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฒเซ‹เช— เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡.

(เช…เชจ) เช…เชงเชฟเช•เซƒเชค Habr เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ - HabrApp 2.0: เชเช•เซเชธเซ‡เชธ เชฎเซ‡เชณเชตเชตเซ€

เช…เชจเชชเซ‡เช•เซเชทเชฟเชค เชฐเซ€เชคเซ‡, เชฒเซ‰เช—เซเชธ เช…เชชเซ‡เช•เซเชทเชพ เช•เชฐเชคเชพเช‚ เชชเชฃ เชตเชงเซ เชตเชฟเช—เชคเชตเชพเชฐ เชนเซ‹เชตเชพเชจเซเช‚ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚.

เช…เชนเซ€เช‚ เช†เชชเชฃเซ€ เชชเชพเชธเซ‡ เชซเช•เซเชค เชคเซ‡ เชœ เชจเชฅเซ€ เชœเซ‡ เช†เชชเชฃเชจเซ‡ เชœเซ‹เชˆเช เช›เซ‡ client_idเชชเชฐเช‚เชคเซ เชŸเซ‹เช•เชจ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ/เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ, เช…เชจเซ‡ เชฒเซ‰เช—เชฟเชจ ะธ เชชเชพเชธเชตเชฐเซเชก เชธเชพเชฆเชพ เชฒเช–เชพเชฃเชฎเชพเช‚!

เช•เซ‡เชŸเชฒเชพเช• เชทเชกเชฏเช‚เชคเซเชฐ เชธเชฟเชฆเซเชงเชพเช‚เชคเซ‹เชฒเซ‰เช—เชฎเชพเช‚ เชฒเซ‰เช—เชฟเชจ เช…เชจเซ‡ เชชเชพเชธเชตเชฐเซเชกเชจเซ€ เชฎเชพเชคเซเชฐ เชนเชพเชœเชฐเซ€ เช•เช‚เชˆเชชเชฃ เชจเซเช•เชธเชพเชจ เช•เชฐเชคเซ€ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เช† เชฒเซ‰เช—เซเชธ เชฎเชพเชคเซเชฐ เชฐเซ‚เชŸ เช…เชงเชฟเช•เชพเชฐเซ‹ เชธเชพเชฅเซ‡ เช…เชฅเชตเชพ เช•เชจเซ‡เช•เซเชถเชจ เชฆเซเชตเชพเชฐเชพ เชตเชพเช‚เชšเซ€ เชถเช•เชพเชฏ เช›เซ‡. adb. เชชเชฐเช‚เชคเซ เช เชนเช•เซ€เช•เชคเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช•เซ‡ Habr เชตเชพเช‚เชšเชคเชพ เชฒเซ‹เช•เซ‹เชฎเชพเช‚ เชเชตเชพ Android เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เช›เซ‡ เชœเซ‡เชฎเชฃเซ‡ เชกเชฟเชฌเช—เชฟเช‚เช— เชธเช•เซเชทเชฎ เช•เชฐเซเชฏเซเช‚ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เช† เชเช• เชธเชฎเชธเซเชฏเชพ เชฌเชจเซ€ เชœเชพเชฏ เช›เซ‡.

เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชเชฐเชชเซ‹เชฐเซเชŸ เชชเชฐ "เชซเซเชฐเซ€ เชšเชพเชฐเซเชœเชฟเช‚เช—" เชเช•เชพเช‰เชจเซเชŸเชจเซ€ เชšเซ‹เชฐเซ€เชฎเชพเช‚ เชชเชฐเชฟเชฃเชฎเซ€ เชถเช•เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช•เซ‹เชจเซ‡ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡?
เช† เชฒเซ‹เช—เชฎเชพเช‚เชฅเซ€ เช†เชชเชฃเซ‡ เชฌเชนเชพเชฐ เช•เชพเชขเซ€ เชถเช•เซ€เช เช›เซ€เช:

  • client_id ะธ apikeyเชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เชเชชเซ€เช†เช‡;
  • เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช…เชงเชฟเช•เซƒเชคเชคเชพ URL (เชตเชฟเชšเชฟเชคเซเชฐ, เชชเชฐเช‚เชคเซ เช† เชชเชฆเซเชงเชคเชฟ เชตเชฟเชถเซ‡ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เช•เช‚เชˆ เชจเชฅเซ€, เช•เชฆเชพเชš เชคเซ‡ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡เชฒ เชจเชฅเซ€?)

เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฅเชฏเซเช‚. เช† เชจเชพเชจเชพ เชธเช‚เชถเซ‹เชงเชจเชจเชพ เช†เชงเชพเชฐเซ‡, เชเช• เชจเชพเชจเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเชฐ เช•เชพเชฎ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ - เชเช• เชฎเซ‹เชฌเชพเช‡เชฒ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซเช‚ เช†เชชเชฃเซเช‚ เชชเซ‹เชคเชพเชจเซเช‚ เช…เชฎเชฒเซ€เช•เชฐเชฃ. เชนเซเช‚ เชœเซ‡เช“ เชธเช‚เชฆเซ‡เชถ เชฒเช–เชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเชตเชพ เชฎเชพเช—เซ‡ เช›เซ‡ เชคเซ‡เชฎเชจเซ‡ เช…เชจเซ‡ เชฌเซ€เชœเชพ เชฌเชงเชพเชจเซ‡ - เชฎเชค เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เช•เชนเซเช‚ เช›เซเช‚ (เช•เชพเชฐเชฃ เช•เซ‡ เชนเซเช‚ เชธเชฎเชœเชตเชพ เชฎเชพเช‚เช—เซเช‚ เช›เซเช‚ เช•เซ‡ เช•เซ‹เชˆเชจเซ‡ เช†เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ).

เชคเชฎเชพเชฐเซเช‚ เชงเซเชฏเชพเชจ เชฌเชฆเชฒ เช†เชญเชพเชฐ!

เชซเช•เซเชค เชจเซ‹เช‚เชงเชพเชฏเซ‡เชฒเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชœ เชธเชฐเซเชตเซ‡เชฎเชพเช‚ เชญเชพเช— เชฒเชˆ เชถเช•เซ‡ เช›เซ‡. เชธเชพเช‡เชจ เช‡เชจ เช•เชฐเซ‹, เชฎเชนเซ‡เชฐเชฌเชพเชจเซ€ เช•เชฐเซ€เชจเซ‡.

เชถเซเช‚ เชคเชฎเซ‡ Habr เชฎเซ‹เชฌเชพเช‡เชฒ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เช›เซ‹?

  • เชนเชพ, เชนเซเช‚ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเช‚ เช›เซเช‚, เชนเซเช‚ เชคเซ‡เชจเชพเชฅเซ€ เช–เซเชถ เช›เซเช‚

  • เชนเชพ, เชนเซเช‚ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเช‚ เช›เซเช‚, เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช…เชธเซเชตเชฟเชงเชพเชจเซเช‚ เช•เชพเชฐเชฃ เชฌเชจเซ‡ เช›เซ‡

  • เชจเชพ, เชนเซเช‚ เชฎเชพเชฐเชพ เชซเซ‹เชจ เชชเชฐ เชตเซ‡เชฌ เชธเช‚เชธเซเช•เชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเช‚ เช›เซเช‚

  • เชจเชพ, เชนเซเช‚ เชฎเชพเชฐเชพ เช•เชฎเซเชชเซเชฏเซเชŸเชฐเชฅเซ€ Habr เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเช‚ เช›เซเช‚

357 เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เช เชฎเชคเชฆเชพเชจ เช•เชฐเซเชฏเซเช‚. 30 เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชฆเซ‚เชฐ เชฐเชนเซเชฏเชพ.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹