我已经将整个项目上传到了GitHub https://GitHub.com/respectthecode/android-studio-library-example
更新1
根据帕德玛·库马尔的建议,这就是我所尝试的。
Module "MyLib" was fully rebuilt due to project configuration/dependencies changes
Compilation completed with 1 error and 0 warnings in 19 sec
1 error
0 warnings
/.../MyApp/MyLib/build/bundles/debug/AndroidManifest.xml
Gradle: <manifest> does not have package attribute.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mylib" >
在构建之后,我得到了这个错误
Module "MyApp" was fully rebuilt due to project configuration/dependencies changes
Compilation completed with 2 errors and 0 warnings in 13 sec
2 errors
0 warnings
/.../MyApp/MyLib/src/main/java/com/example/mylib/MainActivity.java
Gradle: package R does not exist
Gradle: package R does not exist
添加依赖项似乎不会对错误产生任何影响。从上面继续
文件>项目结构>模块>myapp-myapp
依赖项
选项卡+>Module dependency
并选择mylib
应用
和确定
生成>生成项目
根据伊森的建议,这就是我们得到的
2个子项目build.gradle
似乎有所有正确的部分,唯一的区别是插件行,下面是myapp/build.gradle
。
buildscript {
repositories {
maven { url 'http://repo1.maven.org/maven2' }
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
dependencies {
compile files('libs/android-support-v4.jar')
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 16
}
}
根项目build.gradle
为空,因此我添加了这两个项目,如下所示
dependencies {
compile project(":MyLib")
compile project(":MyApp")
}
Gradle:
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/kevin/GitHub/AppPress/MyApp/build.gradle' line: 2
* What went wrong:
A problem occurred evaluating root project 'MyApp'.
> Could not find method compile() for arguments [project ':MyLib'] on root project 'MyApp'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
非常感谢伊森解决了这件事。
编译项目(':subprojects:mylib')
添加到mylib/build.gradle
mylib/build.gradle
编译文件(“libs/android-support-v4.jar”)
更新4
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4.2'
}
}
apply plugin: 'android'
dependencies {
compile "com.android.support:support-v4:13.0.0"
compile project(':SubProjects:MyLib')
}
注意:这个答案是一个纯粹的分级答案,我经常在IntelliJ中使用这个答案,但我不知道与Android Studio的集成情况如何。我是一个相信知道对我来说正在发生什么的人,所以这就是我使用Gradle和Android的方式。
TL;DR完整示例-https://github.com/ethankhall/driving-time-tracker/
免责声明:这是我正在/正在做的一个项目。
Project Root
+-- src
| +-- main (your project)
| | +-- java (where your java code goes)
| | +-- res (where your res go)
| | +-- assets (where your assets go)
| | \-- AndroidManifest.xml
| \-- instrumentTest (test project)
| \-- java (where your java code goes)
+-- build.gradle
\-- settings.gradle
Build.Gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.3'
}
}
现在我们需要告诉Gradle关于Android的一些部分。这相当简单.一个基本的(在我的大多数情况下都适用)如下所示。我在这个块中有一个注释,它将允许我在生成APK时指定版本名和代码。
Build.Gradle
apply plugin: "android"
android {
compileSdkVersion 17
/*
defaultConfig {
versionCode = 1
versionName = "0.0.0"
}
*/
}
task wrapper(type: org.gradle.api.tasks.wrapper.Wrapper) {
gradleVersion = '1.4'
}
Project Root
+-- src (see above)
+-- subProjects (where projects are held)
| +-- reallyCoolProject1 (your first included project)
| \-- See project structure for a normal app
| \-- reallyCoolProject2 (your second included project)
| \-- See project structure for a normal app
+-- build.gradle
\-- settings.gradle
设置。分级:
include ':subProjects:reallyCoolProject1'
include ':subProjects:reallyCoolProject2'
您应该确保的最后一件事是子项目/reallycoolproject1/build.gradle有apply plugin:“android-library”
而不是apply plugin:“android”
。
像每个Gradle项目(和Maven)一样,我们现在需要告诉根项目它的依赖关系。这也可以包括您想要的任何正常Java依赖项。
dependencies{
compile 'com.fasterxml.jackson.core:jackson-core:2.1.4'
compile 'com.fasterxml.jackson.core:jackson-databind:2.1.4'
compile project(":subProjects:reallyCoolProject1")
compile project(':subProjects:reallyCoolProject2')
}
NDK侧注:如果你要使用NDK,你将需要类似下面的东西。build.gradle文件示例可在以下位置找到:https://gist.github.com/khernyo/4226923
Build.Gradle
task copyNativeLibs(type: Copy) {
from fileTree(dir: 'libs', include: '**/*.so' ) into 'build/native-libs'
}
tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs }
clean.dependsOn 'cleanCopyNativeLibs'
tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
pkgTask.jniDir new File('build/native-libs')
}
资料来源:
问题内容: 我正在尝试从Eclipse迁移项目,但是没有尝试过。在Eclipse中,我有3个项目(2个android应用程序项目和1个android库项目)。2个应用程序项目取决于库项目。当我执行gradle导出时,我得到3个无效的项目。我愿意对项目进行重组,但没有找到有关如何完成此工作的任何文档。 有没有办法使Eclipse导出的3个项目一起工作?我最好重新组织一下工作,如果可以的话,是否应该提
问题是如何启用堆栈跟踪,以便找到错误的根源。事实上,我真的不知道是什么引起的。
我想建立Android应用程序,并开始签署它。为此,我需要有APK的发布版本。Google文档只建议Eclipse和ant使用发布构建的方法:http://developer.android.com/tools/publishing/app-signing.html#releaseCompile 然而,我无法找到如何强制gradle构建发布版本的APK。也没有给出任何提示。建议,没有安装版本配置,
我试图在Gradle构建后FTP签名的APK。我已经添加了将签署APK的新构建配置,但是我一直在试图弄清楚如何调用FTP任务。 我在第59.6节找到了一个官方的示例,但是它抱怨说它无法解决依赖关系。阿帕奇。蚂蚁:蚂蚁公地网:1.8.4。很明显,我在这里遗漏了一些明显的东西,比如把一个给定的jar文件放在哪里或者引用它,尽管我认为maven会处理这类事情? 作为参考,以下是链接的示例,该示例失败时会
我是Vuforiaajawali的新手,我正在尝试从该站点构建和运行该示例。问题是当我使用命令时: C:/... /RajawaliVuforia/RajawaliVuforia/./gradlew干净程序集发布上传存档 ,我总是得到根项目RajawaliVuforia中找不到的错误任务“干净”。 如果可能的话,请帮忙! 谢谢
我尝试使用gradle构建工具构建一个简单的android应用程序。但是我得到了这样的错误 方法无签名:org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.compile()适用于参数类型:(java.lang.String)值:[org.gradle.api.plugins: gradle and