当前位置: 首页 > 知识库问答 >
问题:

如何用Android Studio和Gradle构建Android库?

终彬郁
2023-03-14

我已经将整个项目上传到了GitHub https://GitHub.com/respectthecode/android-studio-library-example

更新1

根据帕德玛·库马尔的建议,这就是我所尝试的。

    null
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

添加依赖项似乎不会对错误产生任何影响。从上面继续

  1. 单击文件>项目结构>模块>myapp-myapp
  2. 切换到依赖项选项卡
  3. 单击+>Module dependency并选择mylib
  4. 单击应用确定
  5. 单击生成>生成项目

根据伊森的建议,这就是我们得到的

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.

非常感谢伊森解决了这件事。

  1. 编译项目(':subprojects:mylib')添加到mylib/build.gradle
  2. mylib/build.gradle
  3. 中删除 编译文件(“libs/android-support-v4.jar”)
  4. 关闭项目并从Gradle导入根项目

更新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')
}

共有1个答案

鲜于意
2023-03-14

注意:这个答案是一个纯粹的分级答案,我经常在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')
}

资料来源:

    null
 类似资料:
  • 问题内容: 我正在尝试从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