2015-02-05 5 views
2

Я хотел бы поделиться своим исходным кодом между различными проектами через aar. Текущая версия студии Android может автоматически генерировать файлы aar для библиотечного модуля. Но у меня есть несколько вопросов:Доля исходного кода для студии Android от местного aar

  1. Как вывести файлы aar в определенную папку?

В настоящее время выход находится в папке build/output/aar. Могу ли я переместить файлы автоматически после завершения компиляции.

  1. Зависимости в библиотечном модуле не наследуются модулем приложения. Например:

Моя библиотека модуля (build.gradle):

apply plugin: 'com.android.library' 
...... 
dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:21.0.3' 
    compile 'com.google.code.gson:gson:2.2.4' 
} 

Мое приложение модуль:

apply plugin: 'com.android.application' 

repositories { 
    mavenCentral() 
    flatDir { 
     dirs 'myaarfolder' 
    } 
} 

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "com.company.appid" 
     minSdkVersion 8 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:21.0.3' 
    compile(name:'mylib-release', ext:'aar') 
} 

я получил что-то ошибки, как:

Error:(3, 35) Error: Package com.google.gson.annotations not exist

Я должен добавить compile 'com .google.code.gson: gson: 2.2.4 ' в зависимости от моего модуля приложения (build.gradle)

Любая идея? Спасибо

ответ

2

Файлы AAR не имеют зависимостей, запеченных в них, поэтому, если вы включаете голый AAR, как это, вам нужно вручную добавить зависимости в родительский модуль. Чтобы сделать то, что вам нужно, вам нужно упаковать AAR в артефакт Maven и указать его зависимости в POM. Быстрый поиск Google показывает эту ссылку, которая выглядит как это для более старой версии плагина Android Gradle, но это может заставить вас идти, или вы можете сделать свой собственный поиск для лучшего ресурса:

http://www.vandalsoftware.com/post/52468430435/publishing-an-android-library-aar-to-a-maven

Если вы хотите управлять из выходных файлов, вы можете черпать вдохновение из этого вопроса, который переименовывает выходы:

Could not find property 'outputFile' on com.android.build.gradle.internal.api.ApplicationVariantImpl

по существу, он включает в себя блок построения сценария, который выглядит следующим образом:

applicationVariants.all { variant -> 
    variant.outputs.each { output -> 
     output.outputFile = new File(output.outputFile.parent, /* calculate new path here */) 
    } 
} 
+0

Спасибо за ваш ответ. На самом деле я знаю метод, который вы упомянули. Но поскольку новый Android Studio (1.0.0) способен генерировать aar во время компиляции. Поэтому я думаю, что нам, вероятно, не нужен метод Maven. Проблема в том, что я не знаю, как вывести файл aar в конкретный каталог. –

+0

Отредактировано. Мой ответ стоит, хотя - если вы включаете AAR напрямую, вам нужно добавить зависимости к родительскому проекту. –

+0

Я совершенно новый на Gradle. Я получил следующую ошибку: «Ошибка: (23, 0) Не удалось найти свойство« applicationVariants »на [email protected]» Где я должен добавить этот скрипт? благодаря –

Смежные вопросы