我已将ADT android项目移至Android Studio。现在我有一个包含2个模块的项目。每个模块都有一个build.gradle文件,它定义了
android {
compileSdkVersion 19
buildToolsVersion '19.0.3'
lintOptions {
checkReleaseBuilds false
}
}
我想将此部分移动到我的项目的build.gralde文件中,以便它看起来像这样:
apply plugin: 'android'
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
android {
compileSdkVersion 19
buildToolsVersion '19.0.3'
lintOptions {
checkReleaseBuilds false
}
}
allprojects {
repositories {
mavenCentral()
}
}
但是,如果我从模块gradle文件中删除compileSdkVersion,我会得到gradle编译错误,该属性缺失。我该如何解决这个问题?
答案 0 :(得分:1)
我想你想搬家
android {
compileSdkVersion 19
buildToolsVersion '19.0.3'
lintOptions {
checkReleaseBuilds false
}
}
的示例
答案 1 :(得分:0)
经过一些研究和相当多的试验和错误后,我在Android项目结构中完成了以下操作,以便在我的所有项目中定义和共享Android构建配置。
我的根项目是一个典型的Android应用程序,包含多项活动。它有一个子项Android项目,使用几乎相同的Android构建配置。我的项目使用以下目录结构:
root - builds an APK
|
+-- child - builds another APK
在root / build.gradle中,我定义了以下内容来配置我的共享Android构建配置。它使用之前在build.gradle中定义的ext属性。 ext块也包括在下面。关键是将apply plugin: 'com.android.application'
放在allprojects{}
的顶部或附近。
ext {
androidBuildToolsVersion = '21.1.1'
androidCompileSdkVersion = 21
androidMinSdkVersion = 17
androidTargetSdkVersion = 21
languageLevel = JavaVersion.VERSION_1_7
}
allprojects {
// Build time plugins go here
apply plugin: 'com.android.application'
// Android build tools version
android.buildToolsVersion androidBuildToolsVersion
// Android compilation target
android.compileSdkVersion androidCompileSdkVersion
// Configure AndroidManifest.xml
android.defaultConfig {
applicationId "com.root"
minSdkVersion androidMinSdkVersion
targetSdkVersion androidTargetSdkVersion
versionCode 1
versionName '1.0'
}
// Rename the APK's using this format: <project name>-<DEBUG|RELEASE>-<version>.apk
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def oldFile = output.outputFile
if(oldFile != null && oldFile.name.endsWith('.apk')) {
def newFilename = "${project.name}-${variant.buildType.name.toUpperCase()}-${getAppVersionName()}"
newFilename += ".apk"
output.outputFile = new File(oldFile.parentFile, newFilename)
}
}
}
// Set the Android lint options
android.lintOptions {
// Abort the build if a lint error occurs
abortOnError true
// Disable warning for old gradle dependencies
disable 'GradleDependency'
// Disable the invalid package rule caused by ORMLite
disable 'InvalidPackage'
// Disable Typography warnings
disable 'TypographyDashes'
disable 'TypographyFractions'
// Disable LabelFor EditText warnings
disable 'LabelFor'
// Disable IconLauncherShape
disable 'IconLauncherShape'
// Disable warning for missing icon density folder (xxxhdpi)
disable 'IconMissingDensityFolder'
}
// Set the Java language level
android.compileOptions {
sourceCompatibility languageLevel
targetCompatibility languageLevel
}
// Exclude the potential duplicate files contained inside open source libraries
android.packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
// APK signing configuration
android.signingConfigs {
MobileApp {
storeFile file("StoreFile.jks")
storePassword "********"
keyAlias "MobileAppKey"
keyPassword "********"
}
}
// Build types
android.buildTypes {
debug {
signingConfig android.signingConfigs.MobileApp
}
release {
signingConfig android.signingConfigs.MobileApp
}
}
}
root / settings.gradle包含它来构建子项目:
include ':ChildProject'
在我的根项目中使用上面的内容允许我的子项目中的build.gradle就像这样简单。子项目中未定义的任何内容都将从根项目中获取。
android {
defaultConfig {
applicationId "com.child"
}
}