几个小时后,我终于得到了我的应用程序来构建。使用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'
我有点迷茫,现在正在建设,但显然没有将课程添加到包中..
答案 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)
打开SDK管理器并安装 Google存储库和 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>
模块具有这种结构
我的第一个模块作为此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存储库。缺点是它可能需要一段时间才能编译,但它只会起作用。