2017-09-22 4 views
2

My Android projet Studio a une structure de répertoire comme ceci:config Gradle ne fonctionne plus dans Android Studio 3 (beta)

project 
|-- build.gradle 
|-- settings.gradle 
| 
|-- app 
| |-- src 
| |-- build.gradle 
| +-- settings.gradle 
| 
+-- submodule 
    |-- build.gradle 
    |-- settings.gradle 
    +-- library 
      |-- src 
      |-- build.gradle 
      +-- settings.gradle 

project/submodule est un sous-module git et se réfère directement au dépôt git pour un autre projet Android studio . Son settings.gradle est juste include ':library'.

Auparavant config

project/settings.gradle travail dit include ':submodule/library'. project/app/build.gradle a la ligne compile project(':submodule/library').

Tout cela a bien fonctionné avant Android Studio 3, mais maintenant Android studio se plaint qu'il ne peut pas trouver des modules de ce nom:

Error:Unable to find module with Gradle path ':submodule/library' (needed by module 'Accession'.)

(Exécution d'une construction dans la ligne de commande avec gradle semble fonctionne bien, donc il semble juste être Android Studio qui n'aime pas quelque chose.)

En regardant en ligne, il semble que se référant à :submodule/library pourrait seulement avoir travaillé par hasard comme le nom du projet comme spécifié dans le gradle config a été supposé mot pour mot être le même que le p relatif ath de sa racine.

J'ai deux solutions possibles:

Solution possible 1

Remplacer :submodule/library avec :submodule:library dans les deux build.gradle et settings.gradle. Cela semble fonctionner, mais ma meilleure estimation est qu'il inclut le projet graduel :submodule ainsi que son sous-projet. Plus précisément, je ne suis pas vraiment sûr de ce que cette notation :x:y représente réellement.

Solution possible 2

Remplacer include ':submodule/library' avec

include ':library' 
project(':library').projectDir = file('submodule/library') 

dans settings.gradle et remplacer compile project(':submodule/library') avec compile project(':library') dans build.gradle. Je soupçonne que cela pourrait être la «bonne chose à faire».

Question

Quelqu'un pourrait-il me dire ce qui se passe exactement pour chacun de ces trois bits de gradle (la configuration d'origine et les deux solutions possibles), qui (le cas échéant) devrait fonctionner et qui est " meilleur entrainement"?

Mise à jour (Précision)

Ce que je viens de décrire se produit aussi bien avec mon ancien Gradle et Android Gradle Plugin config version (Gradle 3.3, Android Gradle Plugin 2.3.3) et après la mise à jour à la fois (Gradle 4.1, Android Gradle Plugin 3.0.0 beta).

Répondre

0

Ils ont changé beaucoup de choses dans la nouvelle version de gardle, mes scripts de construction n'ont plus fonctionné non plus. Mais voici une bonne documentation sur la façon de migrer votre script de construction pour travailler avec la nouvelle version.

Par exemple, cette partie de la documentation devrait être STH pour vous:

Vous devriez plutôt configurer vos dépendances comme suit:

dependencies { 
// This is the old method and no longer works for local 
// library modules: 
// debugCompile project(path: ':foo', configuration: 'debug') 
// releaseCompile project(path: ':foo', configuration: 'release') 

// Instead, simply use the following to take advantage of 
// variant-aware dependency resolution. You can learn more about 
// the 'implementation' configuration in the section about 
// new dependency configurations. 
implementation project(':foo') 

// You can, however, keep using variant-specific configurations when 
// targeting external dependencies. The following line adds 'app-magic' 
// as a dependency to only the 'debug' version of your module. 

debugImplementation 'com.example.android:app-magic:12.3' 

}

est ici le lien vers la documentation complète J'espère que ça t'aidera comme ça a été fait pour moi.

https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html

+0

Le problème que je décrit ci-dessus a eu lieu après la mise à niveau Android que Studio. J'utilise toujours Gradle 3.3 et le plugin Android Gradle 2.3.3. Cela dit, quand j'ai changé la version de Gradle en version 4.1 et la version du plugin en version bêta 3.0.0 et que j'ai remplacé 'compile' par' implementation' partout, le problème persiste toujours. – UtterlyConfused