无法弄清楚如何设置 gradle 构建嵌套项目
can't figure out how to set up gradle build with nested projects
两天以来,我一直在努力弄清楚如何编译以下内容。
我有一个名为 "Margin" 的 android 工作室项目,它将使用库 "hbci4java",后者又使用项目 "cryptalgs4java"。
目录结构如下:
Margin
+-# app
| +-# build
| +-# libs
| | +-# hbci4java
| | +-# src
| | | +-# org/kapott/hbci
| | | | +-# manager
| | | | | +-- HBCIHandler.java
| | | | | +-- ...
| | | | +-- ...
| | | +-- ...
| | |
| | +-# thirdparty
| | | +-# cryptalgs4java
| | | +-# src
| | | +-- build.gradle
| | | +-- ...(other files)
| | |
| | +-- build.gradle
| | +-- settings.gradle
| |
| +-# src
| | +-+ main
| | | +-# java
| | | | +-# de/bvs/margin
| | | | +-# activities
| | | | | +-- MainActivity.java
| | | | | +-- ...
| | | | + ...
| | | |
| | | +-- ...
| | +-- ...
| |
| +-- build.gradle
| +-- ...
|
+-# build
+-# gradle
+-- build.gradle
+-- gradle.properties
+-- settings.gradle
+-- ...
包含 MainActivity 的应用程序在我添加 libs 目录结构之前编译得很好,它仍然如此,只要我不告诉 android studio 关于此目录的任何信息。
但是,我想在我的项目中使用 hbci4java 项目。比方说,我想在我的 Mainactivity 中创建一个 HBCIHandler 对象。
我知道,我必须告诉构建系统,它应该使用 hbci4java 库。但我对不同的 gradle 文件不知所措:
我知道 Margin/app/libs/hbci4java/thirdparty/cryptalgs4java/buid.gradle 单独使用时用于构建 cryptalgs4java。
它包含以下内容:
apply plugin: 'java'
repositories {
mavenCentral()
}
sourceCompatibility = 1.5
compileJava.options.encoding = 'ISO-8859-1'
version = '2.5.13-SNAPSHOT'
sourceSets{
main {
java {
srcDir 'src/java'
}
output.classesDir 'classes'
}
}
另外 Margin/app/libs/hbci4java/build.gradle 和 Margin/app/libs/hbci4java/settings.gradle 对我来说似乎很清楚,当刚刚构建 hbci4java 项目时:
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile project(':thirdparty/cryptalgs4java')
testCompile group: 'junit', name: 'junit', version: '4.+'
}
sourceCompatibility = 1.5
compileJava.options.encoding = 'ISO-8859-1'
compileTestJava.options.encoding = 'ISO-8859-1'
version = '2.5.13-SNAPSHOT'
sourceSets{
main {
java {
srcDir 'src'
}
output.classesDir 'classes'
}
test {
java {
srcDirs 'test'
}
}
}
设置:
include 'thirdparty/cryptalgs4java'
但我完全不确定 android 项目的构建是如何工作的,以及如何让它知道图书馆项目。
以下是其余 gradle 个文件的内容:
Margin/app/build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "de.bvs.margin.margin"
minSdkVersion 19
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
}
Margin/build.gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
allprojects {
repositories {
jcenter()
}
}
和Margin/settings.gradle:
include ':app'
我尝试了几个位置来放置 libs 文件夹,还尝试在不同的 gradle 文件中提及它,但到目前为止没有成功。
我希望,任何人都可以帮助我弄清楚如何使用库并让 android studio 知道它们。
最良好的祝愿,
斯蒂芬
在稍微调整了一下之后,我发现以下方法可以解决问题:
将以下行添加到 Margin/settings。gradle:
include ':app:libs:hbci4java', ':thirdparty/cryptalgs4java'
project(':thirdparty/cryptalgs4java').projectDir = new File('app/libs/hbci4java/thirdparty/cryptalgs4java')
添加
compile project(':app:libs:hbci4java')
到 Margin/app/build 中的依赖项部分。gradle
现在,gradle 可以重新同步,并且 android studio 将允许将项目 hbci4java 添加为 Margin 中的依赖项。
两天以来,我一直在努力弄清楚如何编译以下内容。
我有一个名为 "Margin" 的 android 工作室项目,它将使用库 "hbci4java",后者又使用项目 "cryptalgs4java"。
目录结构如下:
Margin
+-# app
| +-# build
| +-# libs
| | +-# hbci4java
| | +-# src
| | | +-# org/kapott/hbci
| | | | +-# manager
| | | | | +-- HBCIHandler.java
| | | | | +-- ...
| | | | +-- ...
| | | +-- ...
| | |
| | +-# thirdparty
| | | +-# cryptalgs4java
| | | +-# src
| | | +-- build.gradle
| | | +-- ...(other files)
| | |
| | +-- build.gradle
| | +-- settings.gradle
| |
| +-# src
| | +-+ main
| | | +-# java
| | | | +-# de/bvs/margin
| | | | +-# activities
| | | | | +-- MainActivity.java
| | | | | +-- ...
| | | | + ...
| | | |
| | | +-- ...
| | +-- ...
| |
| +-- build.gradle
| +-- ...
|
+-# build
+-# gradle
+-- build.gradle
+-- gradle.properties
+-- settings.gradle
+-- ...
包含 MainActivity 的应用程序在我添加 libs 目录结构之前编译得很好,它仍然如此,只要我不告诉 android studio 关于此目录的任何信息。 但是,我想在我的项目中使用 hbci4java 项目。比方说,我想在我的 Mainactivity 中创建一个 HBCIHandler 对象。
我知道,我必须告诉构建系统,它应该使用 hbci4java 库。但我对不同的 gradle 文件不知所措:
我知道 Margin/app/libs/hbci4java/thirdparty/cryptalgs4java/buid.gradle 单独使用时用于构建 cryptalgs4java。 它包含以下内容:
apply plugin: 'java'
repositories {
mavenCentral()
}
sourceCompatibility = 1.5
compileJava.options.encoding = 'ISO-8859-1'
version = '2.5.13-SNAPSHOT'
sourceSets{
main {
java {
srcDir 'src/java'
}
output.classesDir 'classes'
}
}
另外 Margin/app/libs/hbci4java/build.gradle 和 Margin/app/libs/hbci4java/settings.gradle 对我来说似乎很清楚,当刚刚构建 hbci4java 项目时:
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile project(':thirdparty/cryptalgs4java')
testCompile group: 'junit', name: 'junit', version: '4.+'
}
sourceCompatibility = 1.5
compileJava.options.encoding = 'ISO-8859-1'
compileTestJava.options.encoding = 'ISO-8859-1'
version = '2.5.13-SNAPSHOT'
sourceSets{
main {
java {
srcDir 'src'
}
output.classesDir 'classes'
}
test {
java {
srcDirs 'test'
}
}
}
设置:
include 'thirdparty/cryptalgs4java'
但我完全不确定 android 项目的构建是如何工作的,以及如何让它知道图书馆项目。
以下是其余 gradle 个文件的内容:
Margin/app/build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "de.bvs.margin.margin"
minSdkVersion 19
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
}
Margin/build.gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
allprojects {
repositories {
jcenter()
}
}
和Margin/settings.gradle:
include ':app'
我尝试了几个位置来放置 libs 文件夹,还尝试在不同的 gradle 文件中提及它,但到目前为止没有成功。
我希望,任何人都可以帮助我弄清楚如何使用库并让 android studio 知道它们。
最良好的祝愿, 斯蒂芬
在稍微调整了一下之后,我发现以下方法可以解决问题:
将以下行添加到 Margin/settings。gradle:
include ':app:libs:hbci4java', ':thirdparty/cryptalgs4java'
project(':thirdparty/cryptalgs4java').projectDir = new File('app/libs/hbci4java/thirdparty/cryptalgs4java')
添加
compile project(':app:libs:hbci4java')
到 Margin/app/build 中的依赖项部分。gradle
现在,gradle 可以重新同步,并且 android studio 将允许将项目 hbci4java 添加为 Margin 中的依赖项。