Tre*_*une 10 android module shared-libraries gradle android-studio
我有Android应用程序A和B.我想从每个应用程序中提取重复的代码到共享库L.如何使用Gradle执行此操作?我之前看过这个问题的几个排列,但答案很少.
最接近/最好的问题是这一个:
多个Android应用程序取决于带有gradle的android库
第一个答案表明一个包含应用程序和库模块的父项目.这种耦合是不可取的,部分是因为A,B和L在他们自己的Git存储库中,但也因为它涉及有一个父项目和构建难以放入源代码控制的文件(或者涉及手动复制其他项目).因为默认情况下Android Studio喜欢用于单模块项目的父版本......嗯,对于应该是一个简单的家庭来说,它只是很多父母.这似乎是项目之间不必要的耦合,否则完全无关.
第二个答案涉及将AAR发布到repo并引用每个项目中的远程库.我可以使用这种方法,因为我们有一个本地的Nexus存储库,但如果没有手动版本控制/命名和上传文件,这似乎没有一种简单的方法(这是不可持续的).我正在尝试使用Sonatype gradle-release插件,但它似乎适用于JAR(不是AAR).
对于Android应用程序之间最基本的代码共享形式而言,它似乎是很多活动部分.有没有人有更好的解决方案?
我能够删除很多 SonaType 身份验证内容,因为我们有自己的 Nexus 存储库,但不使用它。我的 gradle.build 文件(模块文件,而不是根文件)最终看起来像这样:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.7.1'
}
}
apply plugin: 'android-library'
apply plugin: 'maven'
version = 0.3
group = "com.whatevs.android.commons"
uploadArchives {
repositories.mavenDeployer {
repository(url: 'http://nexus.whatevs.net:8081/nexus/content/repositories/internal-release') {
}
pom.project {
packaging 'aar'
scm {
url 'scm:git:ssh://git@whatevs.net:7999/Mobile/android-commons.git'
connection 'scm:git:ssh://git@whatevs.net:7999/Mobile/android-commons.git'
developerConnection 'scm:git:ssh://git@whatevs.net:7999/Mobile/android-commons.git'
}
}
}
}
repositories {
mavenCentral()
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
release {
runProguard false
proguardFile 'proguard-rules.txt'
proguardFile getDefaultProguardFile('proguard-android.txt')
}
}
dependencies {
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5556 次 |
| 最近记录: |