portaldacalheta.pt
  • Основен
  • Agile Talent
  • Дизайнерски Живот
  • Възходът На Дистанционното
  • Рентабилност И Ефективност
Подвижен

Съвети за разработване на приложение за Android: Моите научени уроци



Здравей! Аз съм Иван и от доста време разработвам приложения за Android. Или поне така изглежда. Навремето (говорим за 2009 г.) Android беше само бебе и аз го гледах малкият зелен човек растат оттогава. Опасявам се, че преди време Android успя да ме надрасне.

какво е корпоративен рисков капитал

В днешно време Android не е само включен десетки хиляди на различни телефони и таблети. На вас е китка на ръка , във вашия хол , във вашия кола и щом започнем да присвояваме IP адреси на неживи обекти, това ще бъде почти навсякъде около нас. Много земя дори за опитен разработчик на Android да покрие!



Също така има и над един милион приложения само в Google Play, без да се брои Amazon AppStore или пазари, от които по принцип не се интересуваме, като Китай. Нека не забравяме безброй компании за разработка на мобилни приложения които генерират милиарди приходи всяка година.



И така, как може независим разработчик да създадете успешно приложение на този огромен пазар с големи играчи? Нямам идея, не съм направил успешно приложение! Но направих сладък и бих искал да споделя моята история с вас.



Урок 1: Свържете точките

Успехът (обикновено) не се случва за една нощ и това не е първото ми приложение. Имам такива, вариращи от неочаквани хитове за развитие през уикенда като Македонски православен календар , с над 30 000 потребители на език, който не повече от 4 милиона души могат да разберат, до по-успешни неуспехи като Туитове , приложение с тежки половината покритие и ужасна база от малко над 600 активни потребители. Много уроци там!

Въпреки че тези приложения ми помогнаха да разбера малко по-добре съзнанието на „неуловимото създание, наречено Потребител“, това, което ме вдъхнови, беше двучасов проект. Първоначално разработено, за да ме превърне в милионер, след като 1 428 571 потребители закупиха приложението, тъй като Google взема 30 цента от всеки долар, Приложението Dollar е направен да тества моя акаунт на търговци.



Малко знаех, че години по-късно ще получа имейл от щастлива майка, в който се посочва, че това е най-добрият долар, който е похарчила, откакто момчето й се усмихва всеки път, когато приложението ми го прегръща.

Разработването на приложения за Android за начинаещи може да бъде лесно и забавно, когато се мащабира ефективно.



И така се роди идеята! Защо да не използваме основната човешка нужда от прегръдка и да я направим красива? Направете го за конкретна аудитория, интерактивен, предизвикателен, забавен за използване и още по-забавен за споделяне.

Урок 2: Разбиране на Android Market

Всички неща, които споменах по-горе, се добавиха към приложение за тапет на живо. Основите не са толкова трудни за отгатване. Android има по-голям пазарен дял от iOS, но потребителите на iOS купуват повече. Приложенията за съобщения са изключително популярни, но freemium игри на върха на приходите. Китай, Индия, Бразилия и Русия са нововъзникващи пазари, но липсват навици за харчене. Можете да прочетете App Annie Index за повече прозрения.



И така, как приложението за тапети на живо се вписва в това? На първо място, той елиминира повечето платформи от жив тапет е нещо за Android. Второ, това особеност е добавен в Android 2.1, така че има голяма общност и немалко красиви примери. Най-вече Paperland и Роман Нурик отворен код Muzei , може би най-добрата отправна точка за разработка на Android.

Въпреки че има много живи тапети, повечето от тях попадат в категорията живописни / метеорологични и много малко попадат в сладост претоварване категория. Това е нещо, което искахме да променим и да предложим нещо, което да ви усмихва всеки път, когато отключите телефона си, въпреки че сте го отключили по съвсем друга причина. Дадохме ви сладък малък пакет радост, за да ви прегърна, преди да си легнете през нощта или когато изключите алармата си сутрин. И още по-добре, направете го персонален и персонализиран.



Без повече шум и преди да влезем в технически подробности, с гордост ви представям: Ooshies - тапет на живо

Ooshies е името на приложението ми за Android. Може да не е било успешно, но ми помогна да науча уроците, необходими за написването на това ръководство за начинаещи разработчици на Android.



То съдържа:

  • безплатно приложение за тапет на живо, което ви прегръща
  • 12 уникални уши за избор
  • безплатно съдържание, което не може да се заключи и може да се закупи
  • актуални актуализации за времето
  • социално влизане и синхронизиране на данни
  • сезонни поздрави
  • много изненади
  • котка нинджа
  • споменахме ли прегръдки?

Успешните приложения за Android понякога просто ви карат да се усмихвате.

Урок 3: Опитайте се да го направите

Ooshies изглеждаше като доста ясна идея за приложение за Android. Нарисувайте фон, покрийте малко облаци и звезди, поставете мечка с балон отгоре и сте готови. Но не, това е Android! Това, което изглежда лесно, често е доста трудно и ние сме склонни да повтаряме същото често допускани грешки отново и отново. Ето кратко изложение на предизвикателствата, с които се сблъсках:

  1. Хардуерно ускорение - защо да рисувате с помощта на процесора, когато графичният процесор е толкова по-добър в него? Е, оказва се, че рисуването на растерни изображения върху платно не може да бъде хардуерно ускорено . Поне засега не.

  2. OpenGL - ако искаме хардуерно ускорение, трябва да използваме OpenGL ES или дори по-добре a рамка това върши по-голямата част от работата за нас.

  3. Растерно зареждане - добре познат проблем с консумацията на памет. Трябва да отделим 1 байт [0-255] памет за всеки канал в #ARGB, за да покажем един пиксел. Също така изображенията, които използваме, често имат по-висока разделителна способност от дисплея на устройството. Зареждането на всички тях бързо ще доведе до OutOfMemroyException .

  4. Домашни стартери - живите тапети ще бъдат хоствани в процеса на стартиране на дома, а различните стартери обикновено дават различни обратни обаждания към услугата за тапети на живо (най-вече Nova и TouchWiz).

  5. Живот на батерията - ако не е направено правилно, живите тапети и джаджите могат да изразходват много батерия. С целия шум за Lollipop (Android 5.0) ужасен живот на батерията първото приложение, което ще бъде, ще бъде живият тапет.

Така че, наслагването на растерно изображение, рисуването му върху платно и след това превключването на кадрите на докосване, за да се прегърне, не изглежда голяма работа, дори когато това се прави на процесора, нали? Точно така, не е проблем. Но кой иска статичен тапет на живо? Това побеждава целта. Тапетът трябва да реагира на докосванията ви, трябва да се движи, докато превъртате началните си екрани, трябва да извършва произволни действия на доброта и да ви кара да се чувствате щастливи.

И за това има трик за разработка на Android. Има термин, наречен ефект на паралакс за добавяне на дълбочина в двумерно пространство. Представете си, че карате кола. Къщата по-близо до вас се движи по-бързо от планината в далечината. Същият ефект може да бъде постигнат чрез преместване на обекти с различна скорост върху платно. Въпреки че всички те са в една и съща равнина, мозъкът ви възприема по-бързо движещите се обекти като по-близо до вас. Подобно на добавянето пуснете сенки , ефектът на паралакс добавя z-ос.

И тук целият ад се разпада! На повечето устройства, преместващи Ooshie, времето за наслагване и фона при различни скорости води до значителен спад на честотата на кадрите. Ето как се рисува единичен кадър:

canvas.drawBitmap(background, 0 - offsetX / 4, 0, null); canvas.drawBitmap(weatherOverlay, 0 - offsetX / 2, 0, null); if (!validDoubleTap) { canvas.drawBitmap(ooshieNormal, positionX - offsetX, positionY, null); } else { canvas.drawBitmap(ooshieTapped, positionX - offsetX, positionY, null); }

offset е процент от разстоянието, което потребителят е превъртял. Това е обратен разговор, който осигурява механизмът за тапети:

@Override public void onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep, float yOffsetStep, int xPixelOffset, int yPixelOffset){ super.onOffsetsChanged(xOffset, yOffset, xOffsetStep, yOffsetStep, xPixelOffset, yPixelOffset); // athe current offset should be a fraction of the screen offset to achieve parallax if (!isPreview()) { float newXOffset = xOffset * 0.15f; wallpaperDrawHelper.setOffsetX(newXOffset); if (isVisible() && hasActiveSurface) { wallpaperDrawHelper.drawFrame(false); } } }

Трябва да отбележа, че всичко това би било излишно, ако знаех как да работя с OpenGL! Това е на моя ВСИЧКО списък, тъй като всичко по-сложно от това, което имаме сега, ще изисква хардуерно ускорение. Но засега трябва да работя по-усилено, а не по-умно (отворен съм за предложения в коментарите). Ето какво направихме:

Урок 4: Работете с това, което имате

Като големи поддръжници на minSdk=15 по инициатива, от самото начало елиминирахме всички устройства 2.x. Усилията за поддържане на обратна съвместимост са по-големи от възможните приходи от потребители, които не могат не желаят да надстроят телефоните си. Така че, в повечето случаи ще можем да постигнем гладко изживяване с добавена опция за деактивиране на паралакса при желание.

Съгласно това ръководство за разработка на Android исках да дам възможност да деактивирам паралакса.

Друга голяма оптимизация е как се справяме със растерните изображения. Много подобен ефект на паралакс може да се постигне с изчертаване на две растерни карти вместо три:

  1. Ooshie наслагване - изрязано и внимателно мащабирано растерно изображение на Ooshie (може да бъде достъпно)

  2. Комбинирано наслагване - комбиниран растерно изображение на фона и времето, което се движи с част от скоростта на Ooshie

Този трик за разработка на Android спестява памет и ускорява времето за рисуване, за да се влоши леко ефектът на паралакс.

Когато превъртате началните екрани, кадрите ще се рисуват доста често (в идеалния случай повече от 30 пъти в секунда). Важно е да не ги рисувате, когато началният екран не се вижда (някои заключени екрани, някои чекмеджета на приложения, отваряне / превключване на приложения и т.н.), за да се сведе до минимум използването на процесора.

Всичко това е тясно свързано с актуализациите за времето. Първоначално имаше повтаряща се задача, която се изпълняваше на всеки час или два, за да се синхронизира времето, но това наистина беше прекалено много. Ако потребителят не може да види тапета, информацията за времето е без значение. Така че сега актуализациите за времето се случват само когато се вижда тапет.

long lastUpdate = prefStore.getLong(SharedPrefStore.Pref.WEATHER_TIMESTAMP); if (System.currentTimeMillis() - lastUpdate > Consts.WEATHER_UPDATE_INTERVAL){ // update the weather if obsolete Intent intent = new Intent(getApplicationContext(), WeatherUpdateService.class); startService(intent); }

И така, ето, тук е контролният списък за оптимизирано с памет гладко софтуерно растерно рисуване:

  1. Комбинирайте растерни изображения веднъж
  2. Начертайте по-малко растерни изображения
  3. Преначертайте само при поискване
  4. Избягвайте фонови задачи
  5. Предложете на потребителите известен контрол върху процеса

Урок 5: Тест. Тест. Тест

Не мога да подчертая колко е важно това! Никога, повтарям НИКОГА , пуснете приложението си, преди да го тествате! И не искам да кажа, че ВИЕ трябва да направите тестването. Вие написахте кода, знаете как работи и влияете на резултата, като знаете очакванията. Не говоря за JUnit тестване (макар и препоръчително), а за поетапни пускания i.e. алфа и бета тестване .

Ако се занимавате с разработка на софтуер за Android, условията са ясни, но ето кратко изложение:

  1. Alpha testers - малка група от хора, състояща се от вашите съотборници и хора от бранша, за предпочитане разработчици на Android. Шансовете са, че те ще имат устройства от висок клас и ще играят наоколо с опции за разработчици . Те ще ви изпращат следи от стекове, отчети за грешки и дори ще ви дават някои съвети и трикове за оптимизиране на кода / потребителския интерфейс. Перфектен за ранни версии с частични / липсващи функции.

  2. Бета тестери - много по-широка аудитория с различни демографски данни. Тук трябва да се публикуват стабилни версии. Дори нивото ви на нинджа да е твърде високо, никога не можете да предсказвате, камо ли да отчитате всички възможни дистрибуции на Android и начините, по които хората използват телефоните си.

След като преминахме алфата, си помислих, че сме готови. Но, момче, сбърках ?! Оказа се, че не всички потребители на Android имат устройства Nexus с най-новия софтуер! Кой би знаел? :)

Ето някои проблеми с разработката на Android, базирани на това разкритие:

  1. Различните стартери имат различни начални екрани по подразбиране - обикновено първия или средния и, доколкото знам, няма начин да разбера, че е разположен.

  2. Трудно е да центрирате Ooshie, без да знаете положението на началния екран по подразбиране - по този начин плъзгачът за настройки за регулиране на изместването на паралакса.

  3. Обикновеният потребител не знае какво изместване на паралакса означава - на страницата с настройки трябва да се използва много по-проста терминология.

  4. Случайният потребител ще предложи следващата ви функция.

Затова бих искал да благодаря на всички наши бета тестери за упоритата работа, която свършиха. Надявам се, че получаването на всички най-нови функции преди някой друг е достойна награда за тяхната отдаденост. Ако искате, можете също да бъдете част от нашата Google+ бета общност .

Бета тестването е критична стъпка за начинаещите Android, които трябва да имат предвид, когато започнат да програмират своите успешни приложения за Android.

Урок 6: Нека данните говорят

Създаването на приложение за Android, което се откроява днес, е малко по-трудно от създаването на приложение за калкулатор, когато през 2009 г. нямаше такова. Създаването на перфектното приложение е трудно. Главно защото съвършенството е в очите на наблюдателя. Това, което е добро за мен, не означава непременно, че е добро и за вас. Ето защо е важно да оставите приложението да расте. Нашият контролен списък за нови функции показва, че имаме достатъчно работа за цялата 2015 г. Наред с други неща, скоро ще включим:

  1. Звучи
  2. Сезонен фон
  3. Персонализации (цвят на фона, метеорологични пакети, ooshie кожи и др.)
  4. Ooshies, специфични за региона (напр. Бабушки)
  5. Много нови уши и начини за отключването им

Сега може да сме запазили приложението в бета версия, докато всичко свърши, но по този начин изхвърляме ценни данни. Не всички бета тестери ще отделят част от деня си, за да ви изпратят отзивите. Това е мястото, където можете да се възползвате от използването на инструменти за получаване на обратна връзка. Можете да използвате Google Analytics, Flurry, Mixpanel, Crashalytics, АКРА и др. за събиране на данни за използването.

Например, анализирайки данните, забелязахме, че потребителите не кликват много бутона за настройки, така че го направихме по-очевиден и добавихме бърз урок за настройване на настройките.

Въпреки че това е фонов процес, той може да се използва за допълнително подобряване на потребителското изживяване. Защо не покажете на потребителя колко пъти:

  1. той / тя получи прегръдка
  2. колко дъждовни дни бяха озарени от усмивка
  3. колко кранове са необходими, за да отключите Ooshie с мини игра
  4. колко приятели са инсталирали приложението заради вас

Всяко ръководство за разработка на Android трябва да изтъква важността на Google Analytics за оптимизиране на приложението ви!

Това е важно, защото осигурява последствия за техните действия. Не правете същата грешка, която прави нашата образователна система, правейки потребителите пасивни потребители на съдържание. Накарайте ги да отговарят. Дайте им възможност да контролират собствените си устройства и да създадат свой собствен опит. Ако успеете да опаковате всичко това в сладък пакет, който открадва усмивка при първото изпръскване, тогава не е твърде извлечено, за да поискате от потребителя нежелани услуги за отключване на съдържание.

В крайна сметка трябва да развиете разработката на приложението си за Android въз основа на тези данни като ръководство. Въпреки че е предназначено основно за майки / деца, това приложение може да стане популярно в други демографски данни. Може да не се вписва в нашата оригинална визия, но нуждите на потребителите трябва да бъдат удовлетворени. В противен случай ще намерят някой, който може.

Заключение

Нека се върнем към най-успешния ми провал Туитове . Въпреки няколко награди и огромно медийно отразяване, приложението не успя да задържи потребителите си (причините, които са извън обхвата на тази статия).

Успехът не винаги е очевиден. Благодарение на целия опит научих много. Изнесох поне дузина лекции на тема Как (не) да се провали като стартиране на различни събития и хакатони и успя да привлече няколко клиенти в ApeeScape.

Още по-важно е, че се опитвам да не повтарям същите грешки при разработването на Android с Ooshies, като следвам съветите и триковете в това ръководство.

За да завършим това дълго ръководство, това, което определяме като успех, е на по-късен етап тясно свързано с това, което си поставихме като цел в началото. Най-често срещаната мярка за успех е, разбира се, печеленето на много пари. Без значение дали приложението ви го прави или не, трябва да се опитате да го направите и повярвайте ми накрая ще станете по-добър човек (надявам се този, който успее да научи OpenGL). Ще създадете нови приятели, малко врагове и ако имате късмет / достатъчно умни, ще зарадвате много потребители.

Можете да проверите нашите уебсайт или изтеглете Ooshies, за да опитате.

Въведение в теорията на машинното обучение и нейните приложения: Визуален урок с примери

Наука За Данни И Бази Данни

Въведение в теорията на машинното обучение и нейните приложения: Визуален урок с примери
Създаване на наистина модулен код без зависимости

Създаване на наистина модулен код без зависимости

Управление На Проекти

Популярни Публикации
Широки срещу тесни набори от умения: Демистифицирани умения за софтуерно инженерство
Широки срещу тесни набори от умения: Демистифицирани умения за софтуерно инженерство
Талантът не е стока
Талантът не е стока
iOS 9 Betas и WatchOS 2 за разработчици
iOS 9 Betas и WatchOS 2 за разработчици
Ръководство за многообработващи мрежови сървърни модели
Ръководство за многообработващи мрежови сървърни модели
Как да създадете персонализирани шрифтове: 7 стъпки и 3 казуса
Как да създадете персонализирани шрифтове: 7 стъпки и 3 казуса
 
Настройка на производителността на базата данни на SQL за разработчици
Настройка на производителността на базата данни на SQL за разработчици
Събуждане на спяща индустрия: Нарушаване на индустрията на матраците
Събуждане на спяща индустрия: Нарушаване на индустрията на матраците
Figma срещу Sketch срещу Axure - Преглед, основан на задачи
Figma срещу Sketch срещу Axure - Преглед, основан на задачи
Разбиране на нюансите на класификацията на шрифтовете
Разбиране на нюансите на класификацията на шрифтовете
Възраст преди красотата - Ръководство за дизайн на интерфейси за възрастни възрастни
Възраст преди красотата - Ръководство за дизайн на интерфейси за възрастни възрастни
Популярни Публикации
  • как да разберете дали имате изтичане на памет
  • какъв принцип на перцептивна организация е показан тук
  • гещалт принцип на общата съдба
  • дизайнерското мислене може да осигури процес за ________.
  • node js javascript от страна на клиента
Категории
  • Agile Talent
  • Дизайнерски Живот
  • Възходът На Дистанционното
  • Рентабилност И Ефективност
  • © 2022 | Всички Права Запазени

    portaldacalheta.pt