среда, 9 октября 2013 г.

Expansion file in Android studio (GRADLE)

Всем хорошего времени суток

Сегодня я хочу составить краткое how-to по добавлению функциональности работы с файлами расширения в ваше Android приложение

для начала настоятельно рекомендую ознакомится с материалом здесь
и можно дополнить это дело здесь



приступим

Создадим новый проект в Android Studio:









никаких излишеств и извращений все стандартно.

теперь открываем Android SDK Manager и убедимся, что все необходимые юниты скачаны, и все обновления имеются:
 и


Возвращаемся в Android studio

для библиотек создадим дополнительный каталог в корне проекта
и обзавем его для удобства "libs"
правай кнопкой мыши по проекту NEW -> Module


имя покета  -    com.google.android.vending.licensing



 перемещаем модуль в папочку libs
и начинаем калдовать, в директории с Android SDK есть уже готовые и нами скачаные исходники библиотеки нам нужно только их разложить для структуры gradle
скопируем все из этого каталога  android-studio/sdk/extras/google/play_licensing/library/
по следующим папкам





 в итоге получится




Такие же манипуляции мы проводим еще с двумя библиотеками расположенными там же
 первая  Downloader -
/android-studio/sdk/extras/google/play_apk_expansion/downloader_library/
вторая ZipFile -
/android-studio/sdk/extras/google/play_apk_expansion/zip_file/


Создаем новый модуль для Downloader_library

имя пакета:
com.android.vending.expansion.downloader 

структура:
Добавляем модуль ZipFile



 имя пакета:
    com.android.vending.expansion.zipfile
структура файлов:








после всех манипуляций у нас должно получиться что то вроде






Теперь мы должны явно указать что это модули нашего проекта и их обязательно нужно скомпилить )

откроем settings.gradle основного проекта и поправим его что бы выглядело
 приблизительно так




теперь нам нужно явно указать зависимости модулей между собой.  Библиотекa LicensingLibrary нужна как зависимости для Downloader, а Downloader и ZipFile это зависимости нашего основного приложения. откроем build.gradle модуля Downloader и приведем его к следующему виду

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android-library'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 17
    buildToolsVersion "18.1"

    defaultConfig {
        minSdkVersion 4
        targetSdkVersion 17
    }
}

dependencies {
    compile project(':libs:LicensingLibrary')
}
так же откроем build.gradle основного проекта и добавим в раздел dependencies


    compile project(':libs:ZipFile')
    compile project(':libs:Downloader')

для проверки работы всего этого хозяйства основной проект приведите к виду примера из 
все того же SDK - /android-studio/sdk/extras/google/play_apk_expansion/downloader_sample/


Ошибки на которые будет точно ругаться Android Studio это то что во всех наших модулях в манифесте
отсутствует тег application -
 
Gradle: Execution failed for task ':libs:Downloader:processReleaseManifest'.
> Manifest merging failed. See console for more info.
 
поэтому позаботьтесь об этом заранее и добавьте по крайней мере пустой тег
<application />
 
и важно что бы минимальная и целевая версии SDK были одинаковыми 
в манифесте и в build.gradle 



подытожим

для использования нужно public key сменить на свой из маркета 
указать версии и размеры файлов расширений(ПРИМЕР СОЗДАНИЯ ФАЙЛА РАСШИРЕНИЯ)
выложить это все богатство на маркет и радоваться.