🗊Android-разработка: как начать, лучшие практики и интересные фишки

Категория: Технологии
Нажмите для полного просмотра!
Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №1Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №2Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №3Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №4Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №5Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №6Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №7Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №8Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №9Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №10Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №11Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №12Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №13Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №14Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №15Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №16Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №17Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №18Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №19Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №20Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №21Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №22Android-разработка:  как начать, лучшие практики и интересные фишки, слайд №23

Вы можете ознакомиться и скачать Android-разработка: как начать, лучшие практики и интересные фишки. Презентация содержит 23 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Android-разработка: 
как начать, лучшие практики и интересные фишки
Описание слайда:
Android-разработка: как начать, лучшие практики и интересные фишки

Слайд 2





О чём сегодня расскажу
Splash activity
Uncaught exception handling + logging
Кастомизация билд-системы android-проекта
Автоматизированное UI-тестирование (Selenium like)
Декомпиляция apk-файлов
Начинающим разработчикам
Описание слайда:
О чём сегодня расскажу Splash activity Uncaught exception handling + logging Кастомизация билд-системы android-проекта Автоматизированное UI-тестирование (Selenium like) Декомпиляция apk-файлов Начинающим разработчикам

Слайд 3





Splash activity
Задача 
	при запуске приложения загрузить какие-либо данные с сервера, либо синхронизироваться с сервером
Splash activity
	входная точка приложения, выполняет эти операции, потом переходим на главный скрин приложения
Описание слайда:
Splash activity Задача при запуске приложения загрузить какие-либо данные с сервера, либо синхронизироваться с сервером Splash activity входная точка приложения, выполняет эти операции, потом переходим на главный скрин приложения

Слайд 4





Splash activity
public class Splash extends GenericActivity {
	@Override
public void onCreate() {
        	           // Можем показывать пользователю картинку либо progress bar пока  идёт загрузка
           setContentView(R.layout.splash);

           new AsyncTask<Void, Void, Void> () {
	     @Override
	     protected void doInBackground() {
		                synchronizeWithServer();
		                loadData();
		                // Из AsyncTask можно обновлять UI c  помощью
		                // publishProgress(int progress); 
		     }
	     @Override
	     protected void onPostExecute() {
	               // После выполнения синхронизации запускаем 
		               // главный скрин приложения
		               startActivity(MainActivity.class);
	     }
          }.execute();
}
}
Описание слайда:
Splash activity public class Splash extends GenericActivity { @Override public void onCreate() { // Можем показывать пользователю картинку либо progress bar пока идёт загрузка setContentView(R.layout.splash); new AsyncTask<Void, Void, Void> () { @Override protected void doInBackground() { synchronizeWithServer(); loadData(); // Из AsyncTask можно обновлять UI c помощью // publishProgress(int progress); } @Override protected void onPostExecute() { // После выполнения синхронизации запускаем // главный скрин приложения startActivity(MainActivity.class); } }.execute(); } }

Слайд 5





Uncatched exception handling + 
logging
	Логирование в файл во время работы приложения
	Обработчик для uncaught исключений. Отправка e-mail с логами при возникновении исключения. Удобно для отладки.
Описание слайда:
Uncatched exception handling + logging Логирование в файл во время работы приложения Обработчик для uncaught исключений. Отправка e-mail с логами при возникновении исключения. Удобно для отладки.

Слайд 6





Кастомизация билд-системы андроид проекта
Задача
	приложение с большим объёмом графики, нужна поддержка устройств с различными разрешениями, для которых много графики различается
Версии 
	320x240, 480x320, 800x480, 1024x600 (android 2 и 3), 1280х768 (android 2 и 3)
Объём графики: 4 Мб для каждой версии
Общая графика: 1.5 Мб
Графика для каждого разрешения: 2.5 Мб
Итого: 19 Mб! 
	в основном не нужная пользователю графика
пользователь не захочет скачивать приложения из-за большого объёма
При добавлении новых разрешений устройств, объём приложения будет только расти
Описание слайда:
Кастомизация билд-системы андроид проекта Задача приложение с большим объёмом графики, нужна поддержка устройств с различными разрешениями, для которых много графики различается Версии 320x240, 480x320, 800x480, 1024x600 (android 2 и 3), 1280х768 (android 2 и 3) Объём графики: 4 Мб для каждой версии Общая графика: 1.5 Мб Графика для каждого разрешения: 2.5 Мб Итого: 19 Mб! в основном не нужная пользователю графика пользователь не захочет скачивать приложения из-за большого объёма При добавлении новых разрешений устройств, объём приложения будет только расти

Слайд 7





Кастомизация билд-системы андроид проекта
Решение
	отдельная apk для каждого разрешения только со своей графикой
Реализация
	Сборка приложения ant-скриптом с подставлением нужной графики,
	bat-файл для сборки семи apk
Описание слайда:
Кастомизация билд-системы андроид проекта Решение отдельная apk для каждого разрешения только со своей графикой Реализация Сборка приложения ant-скриптом с подставлением нужной графики, bat-файл для сборки семи apk

Слайд 8





Apache Ant
	Утилита для автоматизации сборки приложений (аналог утилиты make в UNIX)
	Процесс сборки описывается в XML-файле build.xml
    http://ant.apache.org/
Описание слайда:
Apache Ant Утилита для автоматизации сборки приложений (аналог утилиты make в UNIX) Процесс сборки описывается в XML-файле build.xml http://ant.apache.org/

Слайд 9





Apache Ant
Targets (функции)
Откомпилировать весь проект, очистить временные файлы, …
Между ними можно устанавливать зависимости
Tasks (элементарные действия)
javac – откомпилировать java-код
copy – скопировать файлы
delete – удалить файлы
exec – вызвать программу и т.д.
Описание слайда:
Apache Ant Targets (функции) Откомпилировать весь проект, очистить временные файлы, … Между ними можно устанавливать зависимости Tasks (элементарные действия) javac – откомпилировать java-код copy – скопировать файлы delete – удалить файлы exec – вызвать программу и т.д.

Слайд 10





Пример Ant сценария
	   <?xml version="1.0"?>
	   <project default="build" basedir=".">
   <property name="src.dir" location="${basedir}/src"/>
   <property name="res.dir" location="${basedir}/res"/>
   <property name="classes.dir" location="${basedir}/classes"/>
   <property name="dst.dir" location="${basedir}/build"/>
   <property name="jar.name" location="application"/>

   <target name="build" depends="clean" description="Builds the application">
       <mkdir dir="${dst.dir}"/>
       <mkdir dir="${classes.dir}"/>

       <javac srcdir="${src.dir}« destdir="${classes.dir}“ debug="false« deprecation="true« optimize="true" ></javac>

       <copy todir="${classes.dir}">
           <fileset dir="${src.dir}" includes="**/*.*" excludes="**/*.java"/>
       </copy>

       <jar jarfile="${dst.dir}/${jar.name}.jar">
           <fileset dir="${classes.dir}"/>
       </jar>
   </target>

   <target name="clean" description="Removes all temporary files">
       <delete dir="${classes.dir}"/>
       <delete dir="${dst.dir}"/>
   </target>
</project>
Описание слайда:
Пример Ant сценария <?xml version="1.0"?> <project default="build" basedir=".">    <property name="src.dir" location="${basedir}/src"/>    <property name="res.dir" location="${basedir}/res"/>    <property name="classes.dir" location="${basedir}/classes"/>    <property name="dst.dir" location="${basedir}/build"/>    <property name="jar.name" location="application"/>    <target name="build" depends="clean" description="Builds the application">        <mkdir dir="${dst.dir}"/>        <mkdir dir="${classes.dir}"/>        <javac srcdir="${src.dir}« destdir="${classes.dir}“ debug="false« deprecation="true« optimize="true" ></javac>        <copy todir="${classes.dir}">            <fileset dir="${src.dir}" includes="**/*.*" excludes="**/*.java"/>        </copy>        <jar jarfile="${dst.dir}/${jar.name}.jar">            <fileset dir="${classes.dir}"/>        </jar>    </target>    <target name="clean" description="Removes all temporary files">        <delete dir="${classes.dir}"/>        <delete dir="${dst.dir}"/>    </target> </project>

Слайд 11





Сборка android-приложения
http://asantoso.wordpress.com
Описание слайда:
Сборка android-приложения http://asantoso.wordpress.com

Слайд 12





Дорабатываем стандартные скрипты
Скрипты находятся в папке с SDK 
…/Android/android-sdk/tools/ant
Типы скриптов:
main_rules (приложения)
test_rules (тестовые проекты)
lib_rules (библиотеки)
Targets, которые можно переопределить
-pre-build (перед началом сборки)
-pre-compile
-post-compile
Описание слайда:
Дорабатываем стандартные скрипты Скрипты находятся в папке с SDK …/Android/android-sdk/tools/ant Типы скриптов: main_rules (приложения) test_rules (тестовые проекты) lib_rules (библиотеки) Targets, которые можно переопределить -pre-build (перед началом сборки) -pre-compile -post-compile

Слайд 13





Структура файлов
MyAndroidApplication
/android2
	/res_320x240
		/drawable
		/values
	/res_480x320
	/res_800x480
	/res_1024x700
	/res_1280x768
/src 
	/assets
/bin
/build
/gen
/src
/res
	/drawable
	/values
/lib
AndroidManifest.xml
build.xml
Описание слайда:
Структура файлов MyAndroidApplication /android2 /res_320x240 /drawable /values /res_480x320 /res_800x480 /res_1024x700 /res_1280x768 /src /assets /bin /build /gen /src /res /drawable /values /lib AndroidManifest.xml build.xml

Слайд 14





Bat-файл сборки нескольких версий
      call ant release -Dresolution.current=320x240 -Dsdk.current=android2
call ant release -Dresolution.current=480x320 -Dsdk.current=android2
call ant release -Dresolution.current=800x480 -Dsdk.current=android2
call ant release -Dresolution.current=1024x600 -Dsdk.current=android2
call ant release -Dresolution.current=1280x768 -Dsdk.current=android2
call ant release -Dresolution.current=1024x600 -Dsdk.current=android3
call ant release -Dresolution.current=1280x768 -Dsdk.current=android3
Описание слайда:
Bat-файл сборки нескольких версий call ant release -Dresolution.current=320x240 -Dsdk.current=android2 call ant release -Dresolution.current=480x320 -Dsdk.current=android2 call ant release -Dresolution.current=800x480 -Dsdk.current=android2 call ant release -Dresolution.current=1024x600 -Dsdk.current=android2 call ant release -Dresolution.current=1280x768 -Dsdk.current=android2 call ant release -Dresolution.current=1024x600 -Dsdk.current=android3 call ant release -Dresolution.current=1280x768 -Dsdk.current=android3

Слайд 15





Автоматизированное 
UI-тестирование 
андроид-приложений

Robotium
Описание слайда:
Автоматизированное UI-тестирование андроид-приложений Robotium

Слайд 16





Robotium
Как Selenium, только для Android
Пишем тест-кейсы, фреймворк прокликивает приложение
Не обязательно иметь исходный код приложения, достаточно apk
http://code.google.com/p/robotium
Описание слайда:
Robotium Как Selenium, только для Android Пишем тест-кейсы, фреймворк прокликивает приложение Не обязательно иметь исходный код приложения, достаточно apk http://code.google.com/p/robotium

Слайд 17





Пример использования Robotium
public class MyApplicationUITest extends ActivityInstrumentationTestCase2<MyActivity> {
private Solo solo;
public NotePadTest() {
	super("com.mycompany.myapp.activity", MyActivity.class);
}

public void setUp() throws Exception {
	solo = new Solo(getInstrumentation(), getActivity());
}

	// Тут пишем тесовые методы

@Override
public void tearDown() throws Exception {
	try {
		//Robotium will finish all the activities that have been opened
		solo.finalize(); 
	} catch (Throwable e) {
		e.printStackTrace();
	}
	getActivity().finish();
	super.tearDown();
} 
}
Описание слайда:
Пример использования Robotium public class MyApplicationUITest extends ActivityInstrumentationTestCase2<MyActivity> { private Solo solo; public NotePadTest() { super("com.mycompany.myapp.activity", MyActivity.class); } public void setUp() throws Exception { solo = new Solo(getInstrumentation(), getActivity()); } // Тут пишем тесовые методы @Override public void tearDown() throws Exception { try { //Robotium will finish all the activities that have been opened solo.finalize(); } catch (Throwable e) { e.printStackTrace(); } getActivity().finish(); super.tearDown(); } }

Слайд 18





Пример использования Robotium
	@Smoke
public void testAddNote() throws Exception {
	// Go to help page
	ImageView navigation = (ImageView) solo.getView(R.id.view_navigation);
	// View about screen
	solo.clickOnView(navigation);
	solo.assertCurrentActivity("help", HelpActivity.class);

	// Return from help to main screen
	TextView title = (TextView) solo.getView(R.id.view_navigation_title);
	solo.clickOnView(title);

	solo.assertCurrentActivity("MyActivity", MyActivity.class); 
}
Описание слайда:
Пример использования Robotium @Smoke public void testAddNote() throws Exception { // Go to help page ImageView navigation = (ImageView) solo.getView(R.id.view_navigation); // View about screen solo.clickOnView(navigation); solo.assertCurrentActivity("help", HelpActivity.class); // Return from help to main screen TextView title = (TextView) solo.getView(R.id.view_navigation_title); solo.clickOnView(title); solo.assertCurrentActivity("MyActivity", MyActivity.class); }

Слайд 19





Robotium: Black box и White box
Black box 
не знаем кода приложения и id элементов интерфейса
White box 
есть исходный код, знаем id элементов пользовательского интерфейса
сложней, если id меняются
больше возможностей
Описание слайда:
Robotium: Black box и White box Black box не знаем кода приложения и id элементов интерфейса White box есть исходный код, знаем id элементов пользовательского интерфейса сложней, если id меняются больше возможностей

Слайд 20





Robotium: основные методы
assertCurrentActivity(String message, Class expected)
clickLongOnScreen(int x, int y)
clickOnScreen(int x, int y)
ArrayList<Activity> getAllOpenedActivities()
sleep(int time)
clickOnView(View view)
enterText(EditText editText, String text)
В документации ещё много интересных штук!
drag(float fromX, float toX, float fromY, float toY, int stepCount)
Описание слайда:
Robotium: основные методы assertCurrentActivity(String message, Class expected) clickLongOnScreen(int x, int y) clickOnScreen(int x, int y) ArrayList<Activity> getAllOpenedActivities() sleep(int time) clickOnView(View view) enterText(EditText editText, String text) В документации ещё много интересных штук! drag(float fromX, float toX, float fromY, float toY, int stepCount)

Слайд 21





Декомпиляция APK-файлов
Хочу посмотреть, как у них сделано…
Распаковываем apk-файл обычным winrar-ом 
classes.dex, xml: binary, картинки
Декомпилируем classes.dex 
dex2jar (open source) http://code.google.com/p/dex2jar
Просмотр jar-файлов 
JDGui (open source)
http://code.google.com/p/android-apktool/
Декомпиляция xml-файлов
Apktool (open source)
http://code.google.com/p/android-apktool/
Описание слайда:
Декомпиляция APK-файлов Хочу посмотреть, как у них сделано… Распаковываем apk-файл обычным winrar-ом classes.dex, xml: binary, картинки Декомпилируем classes.dex dex2jar (open source) http://code.google.com/p/dex2jar Просмотр jar-файлов JDGui (open source) http://code.google.com/p/android-apktool/ Декомпиляция xml-файлов Apktool (open source) http://code.google.com/p/android-apktool/

Слайд 22





Начинающим разработчикам
Enviroment
Android SDK, Eclipse + ADT plug-in, драйвера на телефон
Что почитать
developer.android.com – туториалы, документация
vogella.de/android.html – хорошие туториалы
stackoverflow.com – часто пользуюсь этим сайтом
Базовые понятия
Activity, Intent, layouts (LinearLayout, RelativeLayout)
работа с ресурсами (string, dimen, images, layouts)
AndroidManifest.xml
Core Java
ООП, паттерны проектирования, unit-тестирование (JUnit 3,4) 
Девайс или эмулятор
Описание слайда:
Начинающим разработчикам Enviroment Android SDK, Eclipse + ADT plug-in, драйвера на телефон Что почитать developer.android.com – туториалы, документация vogella.de/android.html – хорошие туториалы stackoverflow.com – часто пользуюсь этим сайтом Базовые понятия Activity, Intent, layouts (LinearLayout, RelativeLayout) работа с ресурсами (string, dimen, images, layouts) AndroidManifest.xml Core Java ООП, паттерны проектирования, unit-тестирование (JUnit 3,4) Девайс или эмулятор

Слайд 23





Вопросы?
kslisenko@gmail.com
konstantin@jazzteam.org
Описание слайда:
Вопросы? kslisenko@gmail.com konstantin@jazzteam.org



Похожие презентации
Mypresentation.ru
Загрузить презентацию