如何建立与 Android studio和 gradle android 库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何建立与 Android studio和 gradle android 库相关的知识,希望对你有一定的参考价值。

我想从 Eclipse 迁移一个项目,但我试过的什么都不工作。在 Eclipse 中我有 3 个项目 (2 个 android 应用程序项目和 1 个 android 库项目)。2 应用程序项目依赖的库项目。当我做 gradle 出口时不工作的 3 项目吧我对重组项目开放但还没找到如何应该这样的任何文档。
有一个能让 3 项目那日食出口工作在一起吗?我更好地关闭重组的事情和如果是如何应该这样的文档吗?
更新
我已将整个项目上载到 GitHub https://github.com/respectTheCode/android-studio-library-example
更新 1
根据建议从帕德玛 · 库马尔 · 这是我已经试过。
创建一个称为的新项目MyApp
单击 File > New Module ,选择 Android Library 并将其命名MyLib
单击Build > Make Project
生成失败,此错误
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.
然后,添加 package 特性使它的清单
<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
添加依赖关系似乎不该错误产生任何影响。继续从上面
单击File > Project Structure > Modules > MyApp-MyApp
切换到 Dependencies 选项卡
单击 + > Module Dependency 和挑MyLib
单击 Apply 和OK
单击Build > Make Project
更新 2
根据伊桑这是我们从哪里得到的建议
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.
更新 3
大的感谢伊解决此问题。
添加 compile project(':SubProjects:MyLib') 到MyLib/build.gradle
删除 compile files('libs/android-support-v4.jar') 从MyLib/build.gradle
关闭项目并从 gradle 导入根项目
更新 4
0.1.2 到你现在可以包括 compile "com.android.support:support-v4:13.0.0" 而不是 compile files('libs/android-support-v4.jar') 。因为它来自住友公司专家现在可以包括这在多个项目中没有问题。
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')

更新 5
自 0.1.3 现在有一个"同步项目"按钮在工具栏中。您可以单击,而不是对更改之后,重新导入您的项目 .gradle 的文件。
解决方法 1:
注: 此应答是纯 Gradle 应答、 在这中使用 IntelliJ 定期但我不知道怎么整合是以 Android 的工作室。我知道发生了什么事对我来说,这我如何使用 Gradle 和 Android 的信徒。
TL ; 博士完整的示例- https://github.com/ethankhall/driving-time-tracker/
免责声明: 这是我 am / 工作的一个项目。
Gradle 已定义的结构 (即您可以更改底部链接将告诉您如何),是与 Maven 非常相似,如果您曾经使用过它。
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
如果你仅有的一个项目,不是需要的 settings.gradle 文件。但是你想要添加更多的项目,所以我们需要它。
现在让我们看一看那个 build.gradle 文件。你会需要这个在它 (要添加的 android 工具)
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"

*/

东西我们要想要添加,然而,就没见过的 Gradle 光的人帮助他们使用该项目,而不安装它的方式。
build.gradle
task wrapper(type: org.gradle.api.tasks.wrapper.Wrapper)
gradleVersion = '1.4'

所以现在我们有一个要生成的项目。现在我们要添加其他人。我把它们放在一个目录中,或许称之为指标或子项目。这是无关紧要的但你需要知道你把它放哪。要告诉 Gradle 项目在哪里你都需要将它们添加到 settings.gradle。
目录结构:
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
settings.gradle:
include ':subProjects:reallyCoolProject1'
include ':subProjects:reallyCoolProject2'
您应该确保的最后一件事是subProjects/reallyCoolProject1/build.gradle apply plugin: "android-library" 而不是 apply plugin: "android" 。
像每个 Gradle 项目 (和 Maven) 我们现在需要告诉关于它的依赖性的根项目。这还可以包含任何你想要的正常 Java 依赖。
build.gradle
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')

我知道这看起来像很多步骤,但他们是很容易的一旦你这样做一次或两次。这种方式也将允许您可以假设你有没有安装了 Android SDK 的 CI 服务器上生成。
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')

资料来源:
http://tools.android.com/tech-docs/new-build-system/user-guide
https://gist.github.com/khernyo/4226923
https://github.com/ethankhall/driving-time-tracker/
参考技术A 注: 此应答是纯 Gradle 应答、 在这中使用 IntelliJ 定期但我不知道怎么整合是以 Android 的工作室。我知道发生了什么事对我来说,这我如何使用 Gradle 和 Android 的信徒。

Gradle 已定义的结构 (即您可以更改底部链接将告诉您如何),是与 Maven 非常相似,如果您曾经使用过它。
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

如果你仅有的一个项目,不是需要的 settings.gradle 文件。但是你想要添加更多的项目,所以我们需要它。
现在让我们看一看那个 build.gradle 文件。你会需要这个在它 (要添加的 android 工具)
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"

*/


东西我们要想要添加,然而,就没见过的 Gradle 光的人帮助他们使用该项目,而不安装它的方式。
build.gradle
task wrapper(type: org.gradle.api.tasks.wrapper.Wrapper)
gradleVersion = '1.4'


所以现在我们有一个要生成的项目。现在我们要添加其他人。我把它们放在一个目录中,或许称之为指标或子项目。这是无关紧要的但你需要知道你把它放哪。要告诉 Gradle 项目在哪里你都需要将它们添加到 settings.gradle。
目录结构:
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

settings.gradle:
include ':subProjects:reallyCoolProject1'
include ':subProjects:reallyCoolProject2'

您应该确保的最后一件事是subProjects/reallyCoolProject1/build.gradle apply plugin: "android-library" 而不是 apply plugin: "android" 。
像每个 Gradle 项目 (和 Maven) 我们现在需要告诉关于它的依赖性的根项目。这还可以包含任何你想要的正常 Java 依赖。
build.gradle
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')


我知道这看起来像很多步骤,但他们是很容易的一旦你这样做一次或两次。这种方式也将允许您可以假设你有没有安装了 Android SDK 的 CI 服务器上生成。
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')
本回答被提问者和网友采纳

以上是关于如何建立与 Android studio和 gradle android 库的主要内容,如果未能解决你的问题,请参考以下文章

如何在android studio中建立一个html文件

如何在android studio 1.4的默认情况下从右侧制作导航菜单

我的颤振项目在 android studio 中缺少 Gradle 窗口

Android Studio Gradle 已部署模块

Android Studio LibGDX 中的更新方法问题

android studio更新gradle失败的解决办法-转