2014-02-05 4 views
3

Я перенесла свой проект из IDEA в Android Studio, чтобы использовать Gradle. Я успешно создаю приложение (еще не посмотрел на тесты), и теперь хочу включить ароматы продуктов (моя причина для перемещения).Миграция с IDEA на Android Studio с Gradle

Теперь я могу выбрать один из четырех вариантов сборки в меню «Варианты сборки», а создание с новыми настройками отображает новое приложение на моем телефоне, так что все выглядит нормально.

Однако, где я могу внести изменения в источники (с исходной структурой каталогов) или мне нужно их изменить? Каков наилучший способ? (У меня нет структуры/src/xxx/res, просто src/org/bla/bla)

Основные изменения в ресурсах, таких как строковые файлы и графика. Спасибо!

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

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'com.google.android.gms:play-services:4.1.+' 
    compile 'org.apache.commons:commons-lang3:3.2.+' 
    compile 'org.apache.httpcomponents:httpmime:4.1.+' 
    compile 'com.android.support:appcompat-v7:+' 
} 

android { 

    compileSdkVersion 19 
    buildToolsVersion "19.0.1" 

    defaultConfig { 
     minSdkVersion 8 
     targetSdkVersion 19 
     versionCode 1 
     //versionName "0.5" 
    } 

    productFlavors { 
     iDomsPortalDev { 
      packageName 'org.idoms.iDomsAndroid.iDomsPortalDev' 
     } 
     iDomsPortal { 
      packageName 'org.idoms.iDomsAndroid.iDomsPortal' 
     } 
    } 

    buildTypes { 
     debug { 
      packageNameSuffix ".debug" 
      //versionNameSuffix "-debug" 
     } 
     release { 
      packageNameSuffix ".release" 
      //versionNameSuffix "-release" 
     } 
    } 

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

     // Move the tests to tests/java, tests/res, etc... 
     instrumentTest.setRoot('tests') 

     // Move the build types to build-types/<type> 
     // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ... 
     // This moves them out of them default location under src/<type>/... which would 
     // conflict with src/ being used by the main source set. 
     // Adding new build types or product flavors should be accompanied 
     // by a similar customization. 

     debug.setRoot('build-types/debug') 
     release.setRoot('build-types/release') 
     iDomsPortal.setRoot('product-flavors/iDomsPortal') 
     iDomsPortalDev.setRoot('product-flavors/iDomsPortalDev') 

} 
println "main: " + android.sourceSets.main.res.srcDirs 

    android.applicationVariants.all { variant -> 
     println variant.name + ": " + android.sourceSets[variant.name].res.srcDirs 
    } 

    android.productFlavors.all { flavor -> 
     println flavor.name + ": " + android.sourceSets[flavor.name].res.srcDirs 
    } 

    android.buildTypes.all { buildType -> 
     println buildType.name + ": " + android.sourceSets[buildType.name].res.srcDirs 
    } 

[! EDIT: обновленные данные выше, и поместить код напечатанный выход после изменения, и теперь он работает]

ответ

1

Я предполагаю, что вы спрашиваете, где вы положили аромат конкретных reources; если вы спрашиваете, где внести изменения в основные источники и ресурсы, это в структуре каталогов, которую вы набрали под sourceSets.main.

Вы можете добавить немного скрипта на верхний уровень build.gradle файла (например, после того, как android блока) для распечатки каталогов, где он будет искать ресурсы:

println "main: " + android.sourceSets.main.res.srcDirs 

android.applicationVariants.all { variant -> 
    println variant.name + ": " + android.sourceSets[variant.name].res.srcDirs 
} 

android.productFlavors.all { flavor -> 
    println flavor.name + ": " + android.sourceSets[flavor.name].res.srcDirs 
} 

android.buildTypes.all { buildType -> 
    println buildType.name + ": " + android.sourceSets[buildType.name].res.srcDirs 
} 

Эти выводит каталоги ресурсов, специфичные для вкуса, а также вариант сборки (каталоги типа «аромат + тип сборки»).

Когда я запускаю их в файле сборки, я получаю:

main: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/res] 
app1: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/src/app1/res] 
app2: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/src/app2/res] 
debug: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/build-types/debug/res] 
release: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/build-types/release/res] 
app1Debug: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/src/app1Debug/res] 
app1Release: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/src/app1Release/res] 
app2Debug: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/src/app2Debug/res] 
app2Release: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/src/app2Release/res] 

Каталог для главного, как ожидается, - это то, что явно установить в sourceSets.main. отладка и версии типы, которые мы видим, перенаправлены в каталог build-types в соответствии с инструкциями в конце вашего блока sourceSets. Для app1 и app2 вкусов, он ищет в ЦСИ/app1 и SRC/app2, который, вероятно, не то, что вы хотите. Я бы рекомендовал переместить весь корневой каталог для ваших вкусов, как и для типов сборки. Я бы изменить этот блок в конец:

// Move the build types to build-types/<type> 
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ... 
// This moves them out of them default location under src/<type>/... which would 
// conflict with src/ being used by the main source set. 
// Adding new build types or product flavors should be accompanied 
// by a similar customization. 
debug.setRoot('build-types/debug') 
release.setRoot('build-types/release') 
app1.setRoot('product-flavors/app1') 
app2.setRoot('product-flavors/app2') 

Что касается вариантов, app1Debug и др, вы, возможно, не придется беспокоиться о них, если вы делаете что-то конкретное, так что вы на самом деле необходимо переопределить эту детальную основу. Во всяком случае, теперь, когда я бегу и смотрю на свой диагностический выход, я вижу:

main: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/res] 
app1: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/product-flavors/app1/res] 
app2: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/product-flavors/app2/res] 
debug: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/build-types/debug/res] 
release: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/build-types/release/res] 
app1Debug: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/src/app1Debug/res] 
app1Release: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/src/app1Release/res] 
app2Debug: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/src/app2Debug/res] 
app2Release: [/Users/sbarta/AndroidStudioProjects/AS_Eclipse/app/src/app2Release/res] 
+0

Это выглядит действительно хорошо. Я применил ваше предложение к моему проекту и обновил build.gradle. Тем не менее, похоже, что изменения в учетной записи не отображаются в консоли. Я также обновил список build.gradle выше и разместил вывод (обратите внимание, что это не из моего приложения, поэтому настоящие имена там сейчас, а не app1 app2) –

+0

Ничего.Конечно, я должен был добавить комментарий после изменения корня! Отличный ответ! Бесконечно благодарен! –

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