首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AndroidStudio ClassNotFound gradle

AndroidStudio ClassNotFound gradle
EN

Stack Overflow用户
提问于 2013-06-09 08:26:41
回答 2查看 4.3K关注 0票数 0

几个小时后,我终于可以构建我的应用程序了。使用gradlew,它使用两个子模块进行构建。

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

build.gradle

代码语言:javascript
复制
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

代码语言:javascript
复制
include 'libraries:actionbarsherlock', ':libraries:slidingmenu', ':NewApp'

我有点迷失了,它正在构建,但它显然没有将类添加到包中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-23 02:31:02

要让它在Android studio / Gradle上工作还不是很简单。我不得不说,它的工作原理仍然相当混乱,但在阅读了许多答案后,我终于让它工作了。

如果您有一个具有以下依赖关系的项目:

  • 应用程序依赖(Module1,依赖于(Module2)
    • 打开
    • 管理器并安装谷歌存储库支持Gradle让事情变得更简单,在像Gradle期望的那样的结构中移动文件。(我不知道其他结构是否会弄乱安卓插件)
    • 在每个安卓库清单中添加一个空应用程序。

对android库来说,包、uses sdk和空应用程序是严格的最低要求:

代码语言:javascript
复制
<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/build (其中获取built)
  • Module/src/main/java (实际的code)
  • Module/src/main/res (资源布局和on)
  • Module/src/main/AndroidManifest.xml
  • Module/build.gradle (我们的gradle配置)

我的第一个模块是这个build.gradle文件

代码语言:javascript
复制
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
    }
}

请注意,该模块依赖于项目(:depens模块),这意味着在项目的根目录下是SecondModule,其中也有一个build.gradle文件。

SecondModule build.gradle如下所示。

代码语言:javascript
复制
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。要使其正常工作,您必须安装google存储库和android支持存储库。

MainApp gradle文件如下所示:

代码语言:javascript
复制
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库插件。如果一切正常,那么它应该编译得很好,并且可以运行。另外,由于该项目恰好处于开发阶段,请确保您安装了最新版本,并且将来这个答案可能会变得毫无意义。

请确保您从不使用android support jar,而是使用maven存储库。缺点是,它可能需要一段时间来编译,但它会工作。

票数 1
EN

Stack Overflow用户

发布于 2013-06-09 15:25:18

我已经为此目的迁移了我的android应用程序项目,并且工作正常。这是我的构建的样子:

代码语言:javascript
复制
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')
    }
}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17005236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档