Comment mettre mes bibliothèques en face de android.jar par l'édition de construire.gradle dans Android Studio
D'abord Voici mon Java Build Path dans Eclipse:
Ces quatre pots 'common.jar,core.jar, framework.jar,layout.jar' sont emballés à partir de code source Android, qui contient des classes qui ne peut pas être utilisé publiquement par le développeur.Ils n'avaient pas à être exportés, car ils sont pour tricher compilateur. Dans Eclipse, tout est OK.
Maintenant I suis en train d'importer mon projet Android-Studio avec gradle.J'ai ajouter les pots de dépendances,Cependant je ne peux pas changer la compilation ordre de mes pots et android jar. Je ne peux pas mettre ces pots en face de android jar.Je ne suis pas familier avec gradle, maintenant que le compilateur ne peut pas trouver des cours dans ces pots. Toute aide sera appréciée!
Voici mon build.gradle:
apply plugin: 'android'
dependencies {
compile files('jars/common.jar')
compile files('jars/core.jar')
compile files('jars/framework.jar')
compile files('jars/layout.jar')
compile fileTree(dir: 'libs', include: '*.jar')
compile files('jars/animation_nineoldandroids_src.jar')
compile files('jars/json_simple_src.jar')
compile files('jars/jsoup-1.7.2-sources.jar')
}
android {
compileSdkVersion 17
buildToolsVersion "21.1.1"
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')
}
}
- La construction.gradle est généré par Eclipse.À partir d'un Fichier->Export->Android->Généré fichiers de build Gradle,pas mon travail.
- Quelqu'un a la solution de travail pour Android Studio
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas faire ce que vous voulez dans Gradle(*), au moins pour l'avenir prévisible dans le temps ce qui est écrit. Quelques problèmes se dans votre chemin:
android.jar
. Gradle est la philosophie que vous devriez être explicite sur les dépendances dans votre construction afin que ce soit compréhensible et reproductible; des systèmes qui reposent sur classpath de commande ont tendance à être subtil et fragile. Donc, ce que vous devez faire est de dire Gradle que votre projet dépend de vos classes personnalisées et pasandroid.jar
, mais le plugin DSL de ne pas vous donner les moyens de le faire. Il y a une discussion à http://forums.gradle.org/gradle/topics/classpath_ordering_again et http://www.gradle.org/docs/current/userguide/dependency_management.htmlandroid.jar
est codé en dur dans l'Android plugin Gradle, de sorte que vous ne pouvez pas obtenir que la dépendance et de la remplacer par autre chose.(*) Après avoir dit tout cela, rien n'est impossible -- vous pourriez le faire fonctionner, mais vous allez avoir à pirater quelque chose ensemble, de sorte qu'il va y avoir plus de difficulté vulnérables que l'Éclipse de la démarche, et plus difficile à maintenir dans le visage de SDK et de l'outillage des mises à jour. Et quand quelque chose va mal, vous serez sur votre propre.
android.jar
.J'hésite à m'offrir beaucoup plus de perspicacité dans l'une de ces approches, en partie parce que je ne sais pas beaucoup sur le sujet et pourrait assez facilement vous donner de mauvais conseils, et en partie parce que je ne veux pas inexpérimenté développeurs de voir ce à penser que c'est une super chose à faire. Mais si vous comprenez cela, il serait très digne de l'écriture, parce que je l'ai vu ce genre de question, avant, si vous n'êtes pas le seul.
Script suivant fonctionne pour moi:
J'ai résolu le problème de ce post pour construire des applications avec système de bibliothèques :
En supposant que vous avez ajouté des bibliothèques système comme
libframework.jar
etlibcore.jar
dansapp/libs
:ajouter
Xbootclasspath
de votre haut niveaubuild.gradle
:en vous app
build.gradle
, utilisezprovided
:dans la même application
build.gradle
, ajouter une tâche à mettre<orderEntry>
se référant àAndroid API 25 Platform
en dernière position dansapp.iml
, de cette façon, gradle prendra en compte votre système libs premier et le SDK Android en dernier recours :bootclasspath
est un chemin d'accès absolu. comme ceci: stackoverflow.com/a/55060070/3673440Vous pouvez le faire automatiquement, tout comme dans Eclipse:
File
>Project structure...
>(select app in Modules)
>(go to Dependencies tab)
>reposition with arrows on the right
Une autre façon consiste à modifier le [Nom].iml fichier dans le dossier de votre application. Ce que vous voulez changer sont les balises à la fin du fichier. Cependant, Android Studio permet de réorganiser ces chaque fois que vous nettoyez ou de ré-ouvrir le projet.
..
- Je utiliser le scénario suivant, la solution parfaite!
XXX.jar
à la BibliothèqueTrouver dans votre projet
.gradle
:allprojects {
repositories {
jcenter()
}
}
Le modifier:
allprojects {
repositories {
jcenter()
}
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs.add('-Xbootclasspath/p:app\\libs\\XXX.jar')
}
}
}
Dans
YourApplicationName.iml
fichier, régler laXXX.jar
de haut, comme cettedonc, c'est ok!
Mise à jour app/app.iml de fichier afin que
La solution la plus simple pour moi a été de remplacer
android.jar
avec un avec l'caché API inclus. Obtenirandroid.jar
de ce projet de la bibliothèque qui permet d'accéder à Android cachés de l'API et des ressources à l'interne et de le placer dans votre ASDK plates-formes de dossier, pour la plate-forme de compilation contre (compileSdkVersion
).Je suis sûr qu'il fonctionne avec Eclipse ainsi ))