AndroidStudio ClassNotFound gradle

时间:2013-06-09 00:26:41

标签: android gradle android-studio

几个小时后,我终于得到了我的应用程序来构建。使用gradlew,它使用两个子模块构建。

每当我将结果安装到手机时,它会在第一个创建的类(Activity)上自动抛出UndefinedClass错误

build.gradle

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

dependencies {
    compile files('libs/android-support-v4.jar')
    compile files('libs/crittercism_v3_0_3_sdkonly.jar')
    compile project(':libraries:slidingmenu')
    compile project(':libraries:actionbarsherlock')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
    }
}

settings.gradle

include 'libraries:actionbarsherlock', ':libraries:slidingmenu', ':NewApp'

我有点迷茫,现在正在建设,但显然没有将课程添加到包中..

2 个答案:

答案 0 :(得分:1)

为此目的,我已经迁移了我的Android应用程序项目,但它确实有效。这就是我的构建方式:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}

apply plugin: 'android'
apply plugin: 'eclipse'

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile 'com.google.guava:guava:14.0.1'
    compile 'com.google.code.gson:gson:2.2.4'
    compile 'commons-io:commons-io:2.4'
    compile 'pepuch:java-socket-server:1.0-SNAPSHOT'
    compile 'pepuch:multiplayergame-socket-server:1.0-SNAPSHOT'
}

android {
    compileSdkVersion 10
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']

            resources.srcDirs = ['src']
            aild.srcDirs = ['src']

            renderscript.srcDirs = ['src']

            res.srcDirs = ['res']
            assets.srcDirs = ['assets']

        }


        instrumentTest.setRoot('tests')
    }
}

我没有将它与任何IDE集成,但在我运行gradle installDebug后,它在我安装的手机上生成了* .apk。顺便说一句,我没有改变项目结构,但保存了旧的目录结构。

答案 1 :(得分:1)

必须让它与Android studio / Gradle一起工作还不是很简单。我不得不说它是如何工作的仍然非常混乱,但我在阅读了很多答案之后终于开始工作了。

如果您的项目具有这些依赖项:

  • 应用程序取决于(Module1,Module2)
  • Module1依赖于(Module2)

  • 打开SDK管理器并安装 Google存储库 Android支持存储库

  • 为了简单起见,移动Gradle等结构中的文件。 (我不知道其他结构是否会搞乱android插件)
  • 在每个android库清单中添加一个空应用程序。

包,uses-sdk和empty应用程序是android-library的严格最低要求:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.mymodule">
    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="16"/>
    <application />
</manifest>

模块具有这种结构

  • 模块/构建(构建内容)
  • Module / src / main / java(实际代码)
  • Module / src / main / res(资源布局等)
  • 模块/ SRC /主/ AndroidManifest.xml中
  • Module / build.gradle(我们的gradle配置)

我的第一个模块作为此build.gradle文件

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    } } apply plugin: 'android-library'

repositories {
    mavenLocal()
    mavenCentral() }

dependencies {
    compile 'com.android.support:support-v4:13.0.0'
    compile project(':SecondModule') }

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
    }
}

请注意,该模块取决于项目(:SecondModule)这意味着在项目的根目录中找到了SecondModule,其中还有一个build.gradle文件。

SecondModule build.gradle看起来像这样。

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android-library'

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile 'com.android.support:support-v4:13.0.0'
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
    }
}

第二个模块不依赖于android support以外的任何内容。请注意,在两个项目中,构建都使用mavenLocal()mavenCentral()来构建而不仅仅是构建脚本。与默认android-library build.gradle文件的区别在于,我们从maven而不是jar文件加载com.android.support:support-v4:13.0.0。因此,我们可以在每个模块中平稳地添加依赖项,而不必担心gradle会将其追加n次。要实现这一点,您必须安装google存储库和android支持存储库。

MainApp gradle文件如下所示:

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

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile 'com.android.support:support-v4:13.0.0'
    compile project(':MyModule')
    compile project(':SecondModule')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
    }
}

此文件正在应用android插件而不是android-library插件。如果一切都很好,它应该编译得很好并运行。此外,由于项目正在开发中,请确保安装了最新版本,并且将来可能会得到毫无意义的答案。

确保您从不使用android支持jar,而是使用maven存储库。缺点是它可能需要一段时间才能编译,但它只会起作用。