2013-07-24 4 views
1

Прежде всего, у меня есть настройка проекта Android Studio, которая отлично работает из Studio. Я могу создать его и запустить на устройстве и в эмуляторе без проблем, а также создать APK выпуска.Gradle/Android: укажите «root» как зависимость подпроекта

Я сейчас пытаюсь добраться до такой степени, что у меня могут быть инструменты командной строки, которые будут обрабатывать мою сборку для меня. Все, что я прочитал, говорит о том, что Android Studio использует градиент, но из того, что я видел, это явно не относится к моему проекту - поскольку мне приходилось создавать файлы build.gradle, settings.gradle, прежде чем gradlew даже попытался бы что-то построить - и все же Android Studio все еще может скомпилировать и развернуть просто отлично.

Вот моя структура проекта (как он сидит физически на диске):

Root Project (Android library project, contains all the src, logic, UI, activities, etc.) 
\--- WrapperProject (Android app, depends on the root project) 
\--- SubProject1 (Android library, used by root) 
\--- SubProject2 (Android library, used by root) 

Это settings.gradle файл моего корневого проекта

include ':SubProject1', ':SubProject2' 

Кроме того, здесь build.gradle файл моего корневого проекта. Обратите внимание, что этот проект отмечен как андроид-библиотеки и не ссылается на WrapperProject никак

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

dependencies { 
    compile project(':SubProject1') 
    compile project(':SubProject2') 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17" 

    defaultConfig { 
     minSdkVersion 9 
     targetSdkVersion 17 
    } 
    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 

     instrumentTest.setRoot('tests') 
    } 
} 

Я могу построить мой корневой проект успешно используя gradlew build (если это?) - но моя конечная цель заключается в создании APK из WrapperProject, который имеет зависимость от корневого проекта. Можете ли вы предложить, что должен содержать файл build.gradle моего WrapperProject?

ответ

1

Я здесь из-за поиска похожих ответов, хотя моя проблема в первую очередь противоположна. Я нахожу, что интеграция между строками командной строки (gradlew) и Android Studio 0.2.2 полна секретов.

Одна вещь, которую я вижу, выделяется в вашем файле конфигурации: это довольно бета/альфа-материал. Вы не обновили свой проект до последних нот Android Studio 0.2.0. В частности, следует пересмотреть «com.android.tools.build:gradle:0.4». Ссылка: http://tools.android.com/recent

Существует приложение с открытым исходным кодом, которое имеет такую ​​же основную потребность, как ваша. Это приложение для покупок в магазинах, которое предоставляется в качестве образца для CouchDBLIte https://github.com/couchbaselabs/GrocerySync-Android

оно должно ссылаться на существующие проекты. Кажется, он использует более явный синтаксис для зависимостей, чем вы. Например: «compile» com.couchbase.cblite: CBLiteEktorp: 0.7.4 '"- включая пути полного класса. Но они определяют два основных подхода, прямую интеграцию и интеграцию артефактов.

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

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