2014-12-28 2 views
1

Я пытаюсь недавно запустить обычный проект Android Studio (IntelliJ) для проекта Gradle. И в настоящее время я столкнулся с проблемой: IntelliJ дает мне предупреждение в начале каждого файла, что мое имя пакета 'не соответствует пути к файлу'. напримерИмя пакета не соответствует пути к файлу - Конфигурация Gradle

Первая строка моего некоторые/префиксы/A/B/C/D/E.java является:

package a.b.c.d; 
.... 

IntelliJ считает, что имя пакета должно быть 'кд' вместо 'ABCD '. Потому что я установил

SourceSets { 
    main.java.srcDirs = ["some/prefixes/a/b"] 
} 

в модуле build.gradle.

Я знаю, что я мог бы сделать изменение ниже, чтобы сделать IntelliJ счастливым:

SourceSets { 
    main.java.srcDirs = ['some/prefixes'] 
} 

Но я не могу этого сделать, потому что вы огромное количество проектов в рамках «некоторых/префиксов», и я определенно не» я хочу представить их все в этом модуле.

Я использовал, чтобы добавить packagePrefix = «AB» в моем «module.iml» в моем оригинальном Android студийный проект, и он работает хорошо: https://www.jetbrains.com/idea/help/configuring-content-roots.html#d2814695e312

Но я не знаю, как выполнить аналогичный исправить после перехода на проект Gradle ... Пожалуйста, помогите мне, спасибо!

ответ

0

Я заканчиваю, чтобы написать задание для gradle. Задача добавить знаменитый packagePrefix в файл * .iml.

Это решение работает только для intelliJ, я надеюсь, что у кого-то есть лучшее решение.

task addPackagePrefix << { 
println 'addPackagePrefix' 
def imlFile = file(MODULE_NAME+".iml") 

if (!imlFile.exists()) { 
    println 'no module find ' 
    return 

} 
def parsedXml = (new XmlParser()).parse(imlFile) 

if(parsedXml.component[1] && parsedXml.component[1].content){ 
    parsedXml.component[1].content.findAll { Node node -> 
     node.sourceFolder.findAll { Node s -> 
      def url = s.attribute("url").toString() 

      if (url.endsWith(SRC_DIR)) { 
       println 'Node founded ' 
       def attr = s.attribute('packagePrefix') 
       if (attr == null) { 
        // add prefix 
        println 'Adding package prefix' 
        s.attributes().put('packagePrefix', PACKAGE_NAME) 
        println s.toString() 

        // writing 
        def writer = new StringWriter() 
        new XmlNodePrinter(new PrintWriter(writer)).print(parsedXml) 
        imlFile.text = writer.toString() 
       } 
      } 

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