Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Android Новый топик    Ответить
 С чего начать.  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 26142
+ История изменений

31.10.2014

* Полезные ссылки: добавлена ссылка на исходники андроида.

10.10.2014

* Разработка: добавлено легкое описание Android Annotations.

26.08.2014

* Публикация: изменение имени собранного файла apk с app-release.apk до app-release-package_name-version.apk

Среды разработки:

Для начала разработки необходимо установить последнюю версию JDK (Java Development Kit), скачав со страницы http://www.oracle.com/technetwork/java/javase/downloads/index.html

1. Eclipse
На момент написания этого текста наиболее продвинутое средство разработки для андроида. В отличии от студии (п.2) в нее входят редакторы разных ресурсов. Скачать полный стартовый комплект ADT Bundle можно со страницы http://developer.android.com/intl/ru/sdk/index.html
В комплект входят:
* Eclipse + ADT plugin / Эклипс с плагином
* Android SDK Tools / Инструменты Андроид СДК
* Android Platform-tools / Платформенные инструменты
* The latest Android platform / Последняя версия Андроида
* The latest Android system image for the emulator / Последняя версия системного образа эмулятора

2. Android Studio
Среда разработки, основанная на Intellij IDEA. Развивается семимильными шагами и скоро должна догнать и обогнать Eclipse. Скачать можно тут http://developer.android.com/intl/ru/sdk/installing/studio.html
Чтобы получить справку в студии по выбранному элементу, нужно либо нажать Ctrl+Space и немного подождать, либо нажать Ctrl+Q (либо Help -> Find Action -> "Quick documentation").
Как подключить локальную документацию из android sdk вместо сайта developer.android.com: 15515078.

Рекомендую в путях к jdk, среде разработке, сдк, другим инструментам и своим проектам избегать имена с буквами, отличающимися от английских. У меня был печальный опыт с инструментами сдк андроида одной из версий, когда файл "не находился". Не уверен, что поправили.

Дополнения о рабочих вариантах принимаются.

Разработка.
Инструменты, позволяющие сокращать время разработки и повышать читаемость кода.

* AndroidAnnotations: AndroidAnnotations is an Open Source framework that speeds up Android development. It takes care of the plumbing, and lets you concentrate on what's really important. By simplifying your code, it facilitates its maintenance.
ДО:
+
public class BookmarksToClipboardActivity extends Activity {
  
  BookmarkAdapter adapter;
 
  ListView bookmarkList;
 
  EditText search;
 
  BookmarkApplication application;
 
  Animation fadeIn;
 
  ClipboardManager clipboardManager;
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
 
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(FLAG_FULLSCREEN, FLAG_FULLSCREEN);
 
    setContentView(R.layout.bookmarks);
 
    bookmarkList = (ListView) findViewById(R.id.bookmarkList);
    search = (EditText) findViewById(R.id.search);
    application = (BookmarkApplication) getApplication();
    fadeIn = AnimationUtils.loadAnimation(this, anim.fade_in);
    clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
 
    View updateBookmarksButton1 = findViewById(R.id.updateBookmarksButton1);
    updateBookmarksButton1.setOnClickListener(new OnClickListener() {
 
      @Override
      public void onClick(View v) {
        updateBookmarksClicked();
      }
    });
 
    View updateBookmarksButton2 = findViewById(R.id.updateBookmarksButton2);
    updateBookmarksButton2.setOnClickListener(new OnClickListener() {
 
      @Override
      public void onClick(View v) {
        updateBookmarksClicked();
      }
    });
 
    bookmarkList.setOnItemClickListener(new OnItemClickListener() {
 
      @Override
      public void onItemClick(AdapterView<?> p, View v, int pos, long id) {
        Bookmark selectedBookmark = (Bookmark) p.getAdapter().getItem(pos);
        bookmarkListItemClicked(selectedBookmark);
      }
    });
 
    initBookmarkList();
  }
 
  void initBookmarkList() {
    adapter = new BookmarkAdapter(this);
    bookmarkList.setAdapter(adapter);
  }
 
  void updateBookmarksClicked() {
    UpdateBookmarksTask task = new UpdateBookmarksTask();
 
    task.execute(search.getText().toString(), application.getUserId());
  }
  
  private static final String BOOKMARK_URL = //
  "http://www.bookmarks.com/bookmarks/{userId}?search={search}";
  
  
  class UpdateBookmarksTask extends AsyncTask<String, Void, Bookmarks> {
 
    @Override
    protected Bookmarks doInBackground(String... params) {
      String searchString = params[0];
      String userId = params[1];
 
      RestTemplate client = new RestTemplate();
      HashMap<String, Object> args = new HashMap<String, Object>();
      args.put("search", searchString);
      args.put("userId", userId);
      HttpHeaders httpHeaders = new HttpHeaders();
      HttpEntity<Bookmarks> request = new HttpEntity<Bookmarks>(httpHeaders);
      ResponseEntity<Bookmarks> response = client.exchange( //
          BOOKMARK_URL, HttpMethod.GET, request, Bookmarks.class, args);
      Bookmarks bookmarks = response.getBody();
 
      return bookmarks;
    }
 
    @Override
    protected void onPostExecute(Bookmarks result) {
      adapter.updateBookmarks(result);
      bookmarkList.startAnimation(fadeIn);
    }
    
  }
 
  void bookmarkListItemClicked(Bookmark selectedBookmark) {
    clipboardManager.setText(selectedBookmark.getUrl());
  }
 
}

ПОСЛЕ:
+
@NoTitle
@Fullscreen
@EActivity(R.layout.bookmarks)
public class BookmarksToClipboardActivity extends Activity {
  
  BookmarkAdapter adapter;
  
  @ViewById
  ListView bookmarkList;
 
  @ViewById
  EditText search;
  
  @App
  BookmarkApplication application;
  
  @RestService
  BookmarkClient restClient;
 
  @AnimationRes
  Animation fadeIn;
  
  @SystemService
  ClipboardManager clipboardManager;
 
  @AfterViews
  void initBookmarkList() {
    adapter = new BookmarkAdapter(this);
    bookmarkList.setAdapter(adapter);
  }
  
  @Click({R.id.updateBookmarksButton1, R.id.updateBookmarksButton2})
  void updateBookmarksClicked() {
    searchAsync(search.getText().toString(), application.getUserId());
  }
  
  @Background
  void searchAsync(String searchString, String userId) {
    Bookmarks bookmarks = restClient.getBookmarks(searchString, userId);
    updateBookmarks(bookmarks);
  }
 
  @UiThread
  void updateBookmarks(Bookmarks bookmarks) {
    adapter.updateBookmarks(bookmarks);
    bookmarkList.startAnimation(fadeIn);
  }
  
  @ItemClick
  void bookmarkListItemClicked(Bookmark selectedBookmark) {
    clipboardManager.setText(selectedBookmark.getUrl());
  }
 
}
@Rest("http://www.bookmarks.com")
public interface BookmarkClient {
  
  @Get("/bookmarks/{userId}?search={search}")
  Bookmarks getBookmarks(String search, String userId);
 
}


Отладка.

Application Crash Reports for Android
Библиотека, которая позволяет получать информацию о программных сбоях у пользователей несколькими способами.
+
What is ACRA ?
ACRA is a library enabling Android Application to automatically post their crash reports to a GoogleDoc form. It is targetted to android applications developers to help them get data from their applications when they crash or behave erroneously.

See BasicSetup for a step-by-step installation and usage guide.
*developer configurable user interaction: silent reports, Toast notification, status bar notification + dialog or direct dialog
*usable with ALL versions of android (compiled with 1.5, not tested on 1.0/1.1 but might work... but who does really care ?) and capable of retrieving data from latest versions through reflection.
*more detailed crash reports about the device running the app than what is displayed in the Android Market developer console error reports
*you can add your own variables content or debug traces to the reports
*you can send error reports even if the application doesn't crash
*works for any application even if not delivered through Google's Android Market => great for devices/regions where the Android Market is not available, beta releases or for enterprise private apps
*if there is no network coverage, reports are kept and sent on a later application restart
*can be used with your own self-hosted report receiver script

Скачать https://github.com/ACRA/acra
Анализатор отчетов Acralyzer https://github.com/ACRA/acralyzer
Автор(ы) утверждают, что их библиотека используется в официальных клиентах FaceBook и VKontakte, а так же в GO Launcher EX. :)


Genymotion
Эмулятор андроида, превышающий по скорости "родной" на порядок. Легко настраивается и встраивается в Eclipse и Android Studio.
+
Скачать https://cloud.genymotion.com/page/launchpad/download/
Регистрация обязательна для скачивания и для установки новых устройств (в платной версии их можно создавать самому). Рекомендуется скачать версию, включающую в себя Oracle VirtualBox.
После завершения установки, необходимо установить плагин для своей среды разработки.
Вкратце опишу вариант для студии:
* В меню выбрать File -> Settings.
* В разделе Plugins нажать кнопку Browse reposetories....
* В строке поиска набрать genymo и нажать кнопку "Download and Install" или выбрать соответствующую команду из контекстного меню.
Далее нужно перезапустить студию и в тулбаре появится кнопка Картинка с другого сайта..
После первого нажатия откроется окно настройки Genymotion, где нужно лишь указать путь установки.
Повторное нажатие открывает основное окно плагина, где можно создавать и запускать устройства.

Более подробно об Genymotion https://cloud.genymotion.com/page/doc/

Настройка закончена, можно приступать к отладке, предварительно запустив устройство.


Публикация.

+ Как подписать приложение в Android Studio - signed APK

Из меню Build -> Generate Signed APK...
Закрываем информационное окно, далее появляется окно "мастера", где необходимо заполнить следующие поля:
*Key store path - путь и имя файла с ключами; можно создать новый, либо выбрать созданный ранее.
*Key store password - пароль к хранилищу ключей.
*Key alias - альяс ключа.
*Key password - пароль ключа.
Далее нажимаем Next и заполняем следующие поля:
*Destination APK path - путь и имя подписанного/итогового файла.
*Run ProGuard - запускать ProGuard, утилиты для оптимизации и обфускации кода.
*Config file paths - файл конфигурации для ProGuard; тут можно выбрать свой файл (из проекта), либо один из двух поставляемых со ProGuard из папки ..\android-studio\sdk\tools\proguard proguard-android.txt или proguard-android-optimize.txt
После нажатия Finish запустится фоновая задача по сборке подписанного приложения. НО! При этом будет использован отладочный скрипт для сборки приложения.

Как собрать релиз/make release?

Нужно добавить в раздел android вашего файла YourProject\src\build.gradle следующие строки:
android {
compileSdkVersion 19
buildToolsVersion '19.0.0'
defaultConfig {
applicationId "ru.somedomen.YourProject"
minSdkVersion 10
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
Добавляется то, что ниже
signingConfigs {
release {
storeFile file("C:\\Users\\SomeUser\\.android\\release.keystore")
storePassword "pass"
keyAlias "alias"
keyPassword "pass"
}
}
buildTypes {
release {
runProguard true
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.txt'
applicationVariants.all { variant ->
def file = variant.outputFile
variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.applicationId + "-" + defaultConfig.versionName + ".apk"))
}
// output file name = moduleName-release-package_name-version.apk
// или variant.outputFile = new File(file.parent, defaultConfig.applicationId + "-" + defaultConfig.versionName + "-" + variant.buildType.name + ".apk")
// = ru.package_name-1.0-debug.apk
}
}
и досюда
}

Рекомендуется создать отдельные хранилища ключей для отладки и для релиза.
Путь хранилища, пароли и альяс ключа, конечно, приведены в качестве примера.

Далее нужно выполнить gradlew.bat из папки приложения с параметром assembleRelease. После удачного завершения сборки приложение появится в папке \YourProject\YourApp\build\apk\YourApp-release.apk
где:
YourProject - имя проекта;
YourApp - имя приложения.


Вариант сборки из Android Studio:
Из меню активировать окно с задачами Gradle: View -> Tool Windows -> Gradle.
Из списка All Tasks выбрать assembleRelease.

Более подробно http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Signing-Configurations


Полезные ссылки.

Исходники андроида: http://grepcode.com/project/repository.grepcode.com/java/ext/com.google.android/android-apps/

Сайт разработчиков Андроид. http://developer.android.com/intl/ru/develop/index.html
Там же:
Руководство API http://developer.android.com/intl/ru/guide/index.html
Инструменты СДК http://developer.android.com/intl/ru/tools/help/index.html
Примеры СДК http://developer.android.com/intl/ru/tools/samples/index.html
Рекомендации по производительности http://developer.android.com/intl/ru/training/best-performance.html
Официальный блог разработчиков андроид http://android-developers.blogspot.ru/

Учебник по Андроид. Уроки для начинающих. http://startandroid.ru/ru/

Установка и использование AndEngine в Android Studio.

Интересные статьи и ссылки от посетителей раздела.

Обсуждение/дополнения/рекомендации для этой темы: 15483069

Сообщение было отредактировано: 31 мар 15, 09:02
28 янв 14, 16:14    [15483080]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: С чего начать.  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 26142
Распространение андроида по версиям: http://developer.android.com/about/dashboards/index.html
27 июл 15, 09:30    [17937585]     Ответить | Цитировать Сообщить модератору
 Re: С чего начать.  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 26142
Тема, посвященная AndroidAnnotations https://www.sql.ru/forum/1200790/androidannotations
2 мар 16, 16:04    [18888223]     Ответить | Цитировать Сообщить модератору
Все форумы / Android Ответить