У меня есть плагин для библиотеки Android, который использует несколько библиотек Android, включенных в виде файлов .jar и ссылающихся непосредственно на мой файл build.gradle:
compile fileTree(dir: 'libs', include: '*.jar')
Затем я бы выполнил команду gradlew assembleRelease
, чтобы создать файл .aar, который можно было бы использовать в приложении Android. Это всегда хорошо работало для меня до сих пор.
Теперь мне нужно использовать службы Google Play в моей библиотеке Android. Как указано в официальной документации Android (http://developer.android.com/google/play-services/setup.html#Setup), мне нужно включить службы Google Play в качестве проекта библиотеки, импортировав его из maven:
compile 'com.google.android.gms:play-services:4.3.23'
Но когда я создаю свой файл .aar, кажется, что сервисы Google Play не включены в него (мой файл .aar составляет всего 200 КБ, а библиотека .jar сервисов Google Play > 1 МБ).
Я читал, что на службы Google Play следует ссылаться как на модуль библиотеки Android, но мне не удается импортировать его таким образом без ошибок компиляции. Может ли кто-нибудь помочь мне упаковать службы Google Play в мою библиотеку Android?
Мой файл android-library build.gradle:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
}
apply plugin: 'android-library'
repositories {
mavenCentral()
}
dependencies {
compile 'com.google.android.gms:play-services:4.3.23'
compile fileTree(dir: 'libs', include: '*.jar')
}
android {
compileSdkVersion 19
buildToolsVersion '19.0.1'
defaultConfig {
minSdkVersion 9
targetSdkVersion 19
}
release {
runProguard false
}
}
Мой файл приложения для Android build.gradle:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.1"
defaultConfig {
minSdkVersion 9
targetSdkVersion 19
}
buildTypes {
release {
runProguard true
proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
}
}
productFlavors {
defaultFlavor {
proguardFile 'proguard-rules.txt'
}
}
}
dependencies {
compile 'com.android.support:appcompat-v7:+'
compile 'novom.anyware.anywaresdk:anywaresdk:0.1.0@aar'
}
При выдаче gradle dependencies
из корня моего основного модуля вот мой результат:
Relying on packaging to define the extension of the main artifact has been depre
cated and is scheduled to be removed in Gradle 2.0
:MyOldApp:dependencies
------------------------------------------------------------
Project :MyOldApp
------------------------------------------------------------
_DefaultFlavorDebugApk
+--- com.android.support:appcompat-v7:+ -> 19.1.0
| \--- com.android.support:support-v4:19.1.0
\--- novom.anyware.anywaresdk:anywaresdk:0.1.0
_DefaultFlavorDebugCompile
+--- com.android.support:appcompat-v7:+ -> 19.1.0
| \--- com.android.support:support-v4:19.1.0
\--- novom.anyware.anywaresdk:anywaresdk:0.1.0
_DefaultFlavorReleaseApk
+--- com.android.support:appcompat-v7:+ -> 19.1.0
| \--- com.android.support:support-v4:19.1.0
\--- novom.anyware.anywaresdk:anywaresdk:0.1.0
_DefaultFlavorReleaseCompile
+--- com.android.support:appcompat-v7:+ -> 19.1.0
| \--- com.android.support:support-v4:19.1.0
\--- novom.anyware.anywaresdk:anywaresdk:0.1.0
_DefaultFlavorTestApk
No dependencies
_DefaultFlavorTestCompile
No dependencies
apk - Classpath packaged with the compiled main classes.
+--- com.android.support:appcompat-v7:+ -> 19.1.0
| \--- com.android.support:support-v4:19.1.0
\--- novom.anyware.anywaresdk:anywaresdk:0.1.0
archives - Configuration for archive artifacts.
No dependencies
compile - Classpath for compiling the main sources.
+--- com.android.support:appcompat-v7:+ -> 19.1.0
| \--- com.android.support:support-v4:19.1.0
\--- novom.anyware.anywaresdk:anywaresdk:0.1.0
debugApk - Classpath packaged with the compiled debug classes.
No dependencies
debugCompile - Classpath for compiling the debug sources.
No dependencies
default - Configuration for default artifacts.
No dependencies
defaultFlavorApk - Classpath packaged with the compiled defaultFlavor classes.
No dependencies
defaultFlavorCompile - Classpath for compiling the defaultFlavor sources.
No dependencies
instrumentTestApk - Classpath packaged with the compiled instrumentTest classes.
No dependencies
instrumentTestCompile - Classpath for compiling the instrumentTest sources.
No dependencies
instrumentTestDefaultFlavorApk - Classpath packaged with the compiled instrument
TestDefaultFlavor classes.
No dependencies
instrumentTestDefaultFlavorCompile - Classpath for compiling the instrumentTestD
efaultFlavor sources.
No dependencies
releaseApk - Classpath packaged with the compiled release classes.
No dependencies
releaseCompile - Classpath for compiling the release sources.
No dependencies
BUILD SUCCESSFUL
Total time: 7.388 secs
GooglePlayServicesUtil.isGooglePlayServicesAvailable
, я получаю следующую ошибку:E/GooglePlayServicesUtil﹕ The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.
Если есть правильный способ включения этих ресурсов без упаковки Служб Google Play в мою библиотеку Android, пожалуйста, покажите мне, как. - person Raphael Royer-Rivard   schedule 10.04.2014gradle dependencies
в своем проекте приложения (не в проекте библиотеки). Если у вас есть директиваcompile 'com.google.android.gms:play-services:4.3.23'
в вашем AAR, и ваш проект приложения зависит от AAR, вы должны увидеть зависимостьplay-services
в отчете. Я предполагаю, что вы этого не сделаете, возможно, из-за неправильной конфигурации где-то в вашихbuild.gradle
файлах. - person CommonsWare   schedule 10.04.2014flatDir
, а скорее помещаю свои AAR в репозиторий Maven. В противном случае ваши файлыbuild.gradle
выглядят нормально. Мне было бы интересно узнать, что сообщаетgradle dependencies
для приложения. - person CommonsWare   schedule 10.04.2014gradle dependencies
из корня моего проекта: Опора на упаковку для определения расширения основного артефакта устарела и должна быть удалена в Gradle 2.0: зависимости -------- -------------------------------------------------- -- Корневой проект ------------------------------------------------------------- -------------- Нет конфигураций ПОСТРОЙКА УСПЕШНА Общее время: 7.001 сек. - person Raphael Royer-Rivard   schedule 10.04.2014gradle dependencies
в том же месте, где вы запускаете другие команды Gradle для своего приложения (например,gradle installDebug
). - person CommonsWare   schedule 10.04.2014flatDir
не участвует в отчете о зависимостях. Очевидно, что вы, по крайней мере, добавляете свой код AAR в сборку, иначе вы не смогли бы скомпилировать. - person CommonsWare   schedule 10.04.2014GooglePlayServicesUtil.isGooglePlayServicesAvailable
, он возвращает true, но зависает позже, когда я создаю экземпляр объекта LocationClient. - person Raphael Royer-Rivard   schedule 10.04.2014