2010-03-17 4 views
6

J'ai un module appelé MyApp, et un autre module appelé MyAppTests qui dépend de MyApp. Les deux modules produisent des fichiers APK, l'un nommé MyApp.apk et l'autre MyAppTests.apk. Je construis normalement ceux-ci dans IntelliJ ou Eclipse, mais je voudrais créer un fichier build ant pour eux dans le but d'une intégration continue.Comment construire une application de test Android avec une dépendance à une autre application en utilisant ant?

J'ai utilisé "android update" pour créer un fichier build pour MyApp, et grâce à commonsware's answer à ma question précédente, j'ai été capable de le construire avec succès en utilisant ant.

Je voudrais maintenant construire MyAppTests.apk en utilisant ant. J'ai construit le fichier build comme avant en utilisant "android update", mais quand je l'exécute, j'obtiens une erreur indiquant qu'il ne trouve aucune des classes dans MyApp.

En prenant un que de ma question précédente, j'ai essayé de mettre MyApp.apk dans mes MyAppTests/libs, mais malheureusement cela n'a pas miraculeusement résolu le problème.

Quelle est la meilleure façon de créer une application de test APK en utilisant ant quand cela dépend des classes d'un autre fichier APK?

$ ant debug 
Buildfile: build.xml 
    [setup] Project Target: Google APIs 
    [setup] Vendor: Google Inc. 
    [setup] Platform Version: 1.5 
    [setup] API level: 3 
    [setup] WARNING: No minSdkVersion value set. Application will install on all Android versions. 

dirs: 
    [echo] Creating output directories if needed... 

resource-src: 
    [echo] Generating R.java/Manifest.java from the resources... 

aidl: 
    [echo] Compiling aidl files into Java classes... 

compile: 
    [javac] Compiling 5 source files to /Users/mike/Projects/myapp/android/MyAppTests/bin/classes 
    [javac] /Users/mike/Projects/myapp/android/MyAppTests/src/com/myapp/test/GsonTest.java:3: cannot find symbol 
    [javac] symbol : class MyApplication 
    [javac] location: package com.myapp 
    [javac] import com.myapp.MyApplication; 
    [javac]    ^

Répondre

4

En /Users/mike/Projects/myapp/android/, en supposant que la source principale de l'application est dans un sous-répertoire appelé MyApp, exécutez:
android create test-project -p MyAppTests -m ../MyApp -n MyAppTests

Cela va générer une structure de dossiers de test et Ant approprié créer des fichiers, de sorte que vous pouvez faire :
cd MyAppTests
ant run-tests

+0

Merci Christopher! Cela a créé les fichiers de build nécessaires et il semble que ce soit la bonne solution, mais cela ne fonctionne pas encore. Voici le problème actuel: http://stackoverflow.com/questions/2472059/class-ref-in-pre-verass-class-resolved-to-unexpected-implementation-when-runn – emmby

1

je suis tombé sur cette question précise.

Pour moi, la solution était d'ajouter ce qui suit à mes ant.properties.

tested.project.dir=../MyApp 

La réponse de Christopher générera également un fichier ant.properties pour vous. Sa solution est meilleure si vous n'avez pas déjà un projet entièrement fonctionnel dans Eclipse.

Pour moi, mon projet se construisait et fonctionnait déjà dans Eclipse, mais ne construisait pas dans ant. Pour ce faire, j'avais seulement besoin de ce qui précède dans mes ant.properties. Eclipse et d'autres IDE ne génèrent pas les ant.properties appropriées pour vous, par conséquent la réponse de Christopher fonctionnera car elle génère des ant.properties.

Questions connexes