2014-02-18 147 views
1

我有一個完全可行的Android應用程序,基於ANT構建工具。它與Eclipse一起使用,但我必須使其與Android Studio一起使用。我設法出口該項目與ADT Gradle導出工具和應用程序本身效果很好。但是,我無法使測試項目正常工作。ANT Android項目到Android Studio

這裏的build.gradle生成Eclipse ADT插件。

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

dependencies { 
    compile fileTree(dir: 'libs', include: '*.jar') 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.0.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') 
    } 
} 

我的項目結構

. 
├── AndroidManifest.xml 
├── ant.properties 
├── build.gradle 
├── build.xml 
├── gradle 
│   └── wrapper 
│    ├── gradle-wrapper.jar 
│    └── gradle-wrapper.properties 
├── gradlew 
├── gradlew.bat 
├── LICENSE 
├── local.properties 
├── MyApp.iml 
├── proguard-project.txt 
├── project.properties 
├── README.md 
├── res 
│   ├── drawable-hdpi 
│   │   └── ic_launcher.png 
│   ├── drawable-ldpi 
│   │   └── ic_launcher.png 
│   ├── drawable-mdpi 
│   │   └── ic_launcher.png 
│   ├── drawable-xhdpi 
│   │   └── ic_launcher.png 
│   ├── layout 
│   │   └── main.xml 
│   └── values 
│    └── strings.xml 
├── src 
│   └── com 
│    └── example 
│     └── myapp 
│      └── MainActivity.java 
└── tests 
    ├── AndroidManifest.xml 
    ├── ant.properties 
    ├── build.xml 
    ├── proguard-project.txt 
    ├── project.properties 
    └── src 
     └── com 
      └── example 
       └── myapp 
        └── MainActivityTest.java 

對我來說似乎Android Studio中是無法檢測tests/src/PACKAGE作爲一個包。它被歸類爲臨時目錄。

我真的很感激任何提示。

編輯: 如果tests/src更名爲tests/java一切正常。但這不是解決方案,因爲測試將停止與ANT和/或Eclipse一起工作。

+0

你的'settings.gradle'應該有'include':',':tests''請檢查並告訴我。將生成變體從Build Variant選項卡更改爲左側面板中的測試將在IDE中顯示爲包。 – pyus13

+0

@ pyus13它增加了''tests/tests.iml''但沒有更多,仍然不能識別測試項目。 – Rafal

+0

您是否嘗試將Build Variant選項卡中的構建變體更改爲測試並運行? – pyus13

回答

0

在一位同事的幫助下,我設法解決了這個問題。正確build.gradle文件中的問題導出爲提一個項目應該看起來像

// (...) 

android { 
    // (...) 

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

      instrumentTest { 
       java.srcDirs = ['tests/src'] 
       res.srcDirs = ['tests/res'] 
       assets.srcDirs = ['tests/assets'] 
      } 
     } 

     // 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') 
    } 
} 

此外,可能因爲搖籃默認情況下需要改變默認的測試包名預計,包要像application-package.test而螞蟻使用application-package.tests約定。然而,這可能是一些僅針對我的項目的問題,但我認爲分享它可能對未來某個人有益。

0

Inside build.gradle主模塊文件。

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

你可以試試這個,讓我知道如果不行,我會刪除它。

+0

不幸的是,這不起作用。我已經嘗試過,沒有你的''settings.gradle''文件。請參閱我的編輯問題。 – Rafal

+0

你已經看到了,它在gradle文件中明確提到你的測試應該在tests/java中。我只是確認是否這項工作。 – pyus13

+0

檢查如果可以幫助您,請在http://tools.android.com/tech-docs/new-build-system/user-guide配置結構。 – pyus13