From 05f668cdd54faba1e63a817b5a5541187323ce97 Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Fri, 3 Feb 2017 16:54:44 -0500 Subject: Clean up multidex gradle build, bump version to 1.0.2 for release Bug: 36122649 Test: ./gradlew dist test connectedAndroidTest Change-Id: I79578f683146a3ea16521cd090d113698a14c5f5 --- PREUPLOAD.cfg | 6 ++ build.gradle | 161 +++++++++++-------------------- gradle/wrapper/gradle-wrapper.jar | Bin 51106 -> 53636 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- instrumentation/.classpath | 9 -- instrumentation/.project | 33 ------- instrumentation/AndroidManifest.xml | 2 - instrumentation/README | 10 ++ instrumentation/README.android | 6 -- instrumentation/README.txt | 10 -- instrumentation/build.gradle | 33 +++++-- instrumentation/project.properties | 15 --- instrumentation/res/.readme | 1 - instrumentation/src/.readme | 2 - library/.classpath | 9 -- library/.project | 33 ------- library/AndroidManifest.xml | 2 +- library/README | 15 +++ library/README.android | 6 -- library/README.txt | 15 --- library/build.gradle | 28 +++++- library/project.properties | 15 --- library/res/.readme | 1 - library/src/.readme | 2 - library/test/.classpath | 8 -- library/test/.project | 17 ---- settings.gradle | 23 ++++- version.gradle | 17 ++++ 28 files changed, 179 insertions(+), 304 deletions(-) create mode 100644 PREUPLOAD.cfg delete mode 100644 instrumentation/.classpath delete mode 100644 instrumentation/.project create mode 100644 instrumentation/README delete mode 100644 instrumentation/README.android delete mode 100644 instrumentation/README.txt delete mode 100644 instrumentation/project.properties delete mode 100644 instrumentation/res/.readme delete mode 100644 instrumentation/src/.readme delete mode 100644 library/.classpath delete mode 100644 library/.project create mode 100644 library/README delete mode 100644 library/README.android delete mode 100644 library/README.txt delete mode 100644 library/project.properties delete mode 100644 library/res/.readme delete mode 100644 library/src/.readme delete mode 100644 library/test/.classpath delete mode 100644 library/test/.project create mode 100644 version.gradle diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg new file mode 100644 index 0000000..2811ea9 --- /dev/null +++ b/PREUPLOAD.cfg @@ -0,0 +1,6 @@ +[Hook Scripts] +checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT} + +[Builtin Hooks] +commit_msg_changeid_field = true +commit_msg_test_field = true diff --git a/build.gradle b/build.gradle index f8306d5..3a5ed75 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,21 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.gradle.internal.os.OperatingSystem + buildscript { repositories { maven { url '../../prebuilts/gradle-plugin' } @@ -5,14 +23,29 @@ buildscript { maven { url '../../prebuilts/tools/common/m2/internal' } } dependencies { - classpath 'com.android.tools.build:gradle:0.10.0' + classpath 'com.android.tools.build:gradle:2.3.0' } } -ext.supportVersion = '1.0.1' -ext.extraVersion = 10 -ext.supportRepoOut = '' -ext.buildToolsVersion = '19.0.3' +apply from: 'version.gradle' + +final String platform = OperatingSystem.current().isMacOsX() ? 'darwin' : 'linux' +System.setProperty('android.dir', "${rootDir}/../../") +final String fullSdkPath = "${rootDir}/../../prebuilts/fullsdk-${platform}" +if (file(fullSdkPath).exists()) { + gradle.ext.currentSdk = 26 + ext.buildToolsVersion = '26.0.0' + project.ext.androidJar = files("${fullSdkPath}/platforms/android-${gradle.currentSdk}/android.jar") + System.setProperty('android.home', "${rootDir}/../../prebuilts/fullsdk-${platform}") + File props = file("local.properties") + props.write "sdk.dir=${fullSdkPath}" +} else { + gradle.ext.currentSdk = 'current' + ext.buildToolsVersion = '26.0.0' + project.ext.androidJar = files("${project.rootDir}/../../prebuilts/sdk/current/android.jar") + File props = file("local.properties") + props.write "android.dir=../../" +} /* * With the build server you are given two env variables. @@ -31,120 +64,43 @@ if (System.env.DIST_DIR != null && System.env.OUT_DIR != null) { ext.supportRepoOut = new File(buildDir, 'support_repo') -// Main task called by the build server. -task(createArchive) << { -} - // upload anchor for subprojects to upload their artifacts // to the local repo. -task(mainUpload) << { -} - -// repository creation task -task createRepository(type: Zip, dependsOn: mainUpload) { - from project.ext.supportRepoOut - destinationDir project.ext.distDir - into 'm2repository' - baseName = String.format("android_m2repository_r%02d", project.ext.extraVersion) -} -createArchive.dependsOn createRepository - -// prepare repository with older versions -task unzipRepo(type: Copy) { - from "$rootDir/../../prebuilts/maven_repo/android" - into project.ext.supportRepoOut -} - -unzipRepo.doFirst { - project.ext.supportRepoOut.deleteDir() - project.ext.supportRepoOut.mkdirs() -} - -// anchor for prepare repo. This is post unzip + sourceProp. -task(prepareRepo) << { -} - -import com.google.common.io.Files -import com.google.common.base.Charsets - -task(createXml) << { - def repoArchive = createRepository.archivePath - def repoArchiveName = createRepository.archiveName - def size = repoArchive.length() - def sha1 = getSha1(repoArchive) - - def xml = -"\n\ - \n\ - \n\ - ${project.ext.extraVersion}\n\ - \n\ - Android\n\ - android\n\ - Local Maven repository for Support Libraries\n\ - m2repository\n\ - \n\ - \n\ - ${size}\n\ - ${sha1}\n\ - ${repoArchiveName}\n\ - \n\ - \n\ - \n\ -" - - Files.write(xml, new File(project.ext.distDir, 'repo-extras.xml'), Charsets.UTF_8) -} -createArchive.dependsOn createXml - -task(createSourceProp) << { - def sourceProp = -"Extra.VendorDisplay=Android\n\ -Extra.Path=m2repository\n\ -Archive.Arch=ANY\n\ -Extra.NameDisplay=Android Support Repository\n\ -Archive.Os=ANY\n\ -Pkg.Revision=${project.ext.extraVersion}.0.0\n\ -Extra.VendorId=android" - - Files.write(sourceProp, new File(project.ext.supportRepoOut, 'source.properties'), Charsets.UTF_8) -} -createSourceProp.dependsOn unzipRepo -prepareRepo.dependsOn createSourceProp - - -import com.google.common.hash.HashCode -import com.google.common.hash.HashFunction -import com.google.common.hash.Hashing - -def getSha1(File inputFile) { - HashFunction hashFunction = Hashing.sha1() - HashCode hashCode = hashFunction.hashString(inputFile.getAbsolutePath()) - return hashCode.toString() +task(dist) { + group = BasePlugin.BUILD_GROUP + description 'Builds distribution artifacts.' } subprojects { // Change buildDir first so that all plugins pick up the new value. - project.buildDir = project.file("$project.parent.buildDir/../$project.name/build") + project.buildDir = project.file("${project.parent.buildDir}/../${project.name}/build") apply plugin: 'maven' - version = rootProject.ext.supportVersion + version = rootProject.multidexVersion group = 'com.android.support' task release(type: Upload) { configuration = configurations.archives repositories { mavenDeployer { - repository(url: uri("$rootProject.ext.supportRepoOut")) + repository(url: uri("$rootProject.supportRepoOut")) } } } - // before the upload, make sure the repo is ready. - release.dependsOn rootProject.tasks.prepareRepo - // make the mainupload depend on this one. - mainUpload.dependsOn release + task createArtifactZip(type: Zip, dependsOn: release) { + from release.artifacts + into archivesBaseName + destinationDir project.parent.distDir + baseName = archivesBaseName + + doLast { + logger.warn "Compressed maven artifacts to ${archivePath}" + } + } + + dist.dependsOn createArtifactZip project.plugins.whenPluginAdded { plugin -> if ("com.android.build.gradle.LibraryPlugin".equals(plugin.class.name)) { @@ -152,8 +108,3 @@ subprojects { } } } - -FileCollection getAndroidPrebuilt(String apiLevel) { - files("$rootDir/../../prebuilts/sdk/$apiLevel/android.jar") -} - diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 3c7abdf..13372ae 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 127125b..84939b4 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Mar 18 16:49:12 PDT 2014 +#Tue Aug 16 10:43:36 PDT 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=../../../../tools/external/gradle/gradle-1.11-bin.zip +distributionUrl=../../../../tools/external/gradle/gradle-3.3-bin.zip diff --git a/instrumentation/.classpath b/instrumentation/.classpath deleted file mode 100644 index 7bc01d9..0000000 --- a/instrumentation/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/instrumentation/.project b/instrumentation/.project deleted file mode 100644 index bfc77da..0000000 --- a/instrumentation/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - android-support-multidex-instrumentation - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/instrumentation/AndroidManifest.xml b/instrumentation/AndroidManifest.xml index 6107fd3..7b9f92c 100644 --- a/instrumentation/AndroidManifest.xml +++ b/instrumentation/AndroidManifest.xml @@ -15,6 +15,4 @@ --> - - diff --git a/instrumentation/README b/instrumentation/README new file mode 100644 index 0000000..1e5da52 --- /dev/null +++ b/instrumentation/README @@ -0,0 +1,10 @@ +Library Project including compatibility IntrumentationTestRunner +for multiple dex applications. + +This can be used by an Android test project to set up the classloader +of applications with multiple dexes. + +There is technically no source, but the src folder is necessary +to ensure that the build system works. The content is actually +located in libs/android-support-multidex-instrumentation.jar. + diff --git a/instrumentation/README.android b/instrumentation/README.android deleted file mode 100644 index 322676b..0000000 --- a/instrumentation/README.android +++ /dev/null @@ -1,6 +0,0 @@ -Library Project including compatibility IntrumentationTestRunner -for multiple dex applications. - -This can be used by an Android test project to set up the classloader -of applications with multiple dexes. - diff --git a/instrumentation/README.txt b/instrumentation/README.txt deleted file mode 100644 index 1e5da52..0000000 --- a/instrumentation/README.txt +++ /dev/null @@ -1,10 +0,0 @@ -Library Project including compatibility IntrumentationTestRunner -for multiple dex applications. - -This can be used by an Android test project to set up the classloader -of applications with multiple dexes. - -There is technically no source, but the src folder is necessary -to ensure that the build system works. The content is actually -located in libs/android-support-multidex-instrumentation.jar. - diff --git a/instrumentation/build.gradle b/instrumentation/build.gradle index 15ea3e8..adea6d7 100644 --- a/instrumentation/build.gradle +++ b/instrumentation/build.gradle @@ -1,9 +1,32 @@ -apply plugin: 'android-library' -archivesBaseName = 'multidex-instrumentation' +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +apply plugin: 'com.android.library' + +dependencies { + compile project(':support-multidex') +} android { compileSdkVersion 4 + defaultConfig { + minSdkVersion 4 + } + sourceSets { main { java.srcDirs = ['src'] @@ -19,10 +42,6 @@ android { } } -dependencies { - compile project(':library') -} - uploadArchives { repositories { mavenDeployer { @@ -55,4 +74,4 @@ uploadArchives { } } } -} \ No newline at end of file +} diff --git a/instrumentation/project.properties b/instrumentation/project.properties deleted file mode 100644 index 22e1c48..0000000 --- a/instrumentation/project.properties +++ /dev/null @@ -1,15 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-14 -android.library=true diff --git a/instrumentation/res/.readme b/instrumentation/res/.readme deleted file mode 100644 index cc903f6..0000000 --- a/instrumentation/res/.readme +++ /dev/null @@ -1 +0,0 @@ -This hidden file is there to ensure there is an res folder. \ No newline at end of file diff --git a/instrumentation/src/.readme b/instrumentation/src/.readme deleted file mode 100644 index 4bcebad..0000000 --- a/instrumentation/src/.readme +++ /dev/null @@ -1,2 +0,0 @@ -This hidden file is there to ensure there is an src folder. -Once we support binary library this will go away. \ No newline at end of file diff --git a/library/.classpath b/library/.classpath deleted file mode 100644 index 7bc01d9..0000000 --- a/library/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/library/.project b/library/.project deleted file mode 100644 index 566e709..0000000 --- a/library/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - android-support-multidex - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/library/AndroidManifest.xml b/library/AndroidManifest.xml index f29fe15..8da151d 100644 --- a/library/AndroidManifest.xml +++ b/library/AndroidManifest.xml @@ -15,5 +15,5 @@ --> - + diff --git a/library/README b/library/README new file mode 100644 index 0000000..62e8737 --- /dev/null +++ b/library/README @@ -0,0 +1,15 @@ +Library Project including a multidex loader. + +This can be used by an Android project to install multiple dexes +in the classloader of an application running on API 4+. + +Note that multidexing will allow to go over the dex index limit. +It can also help with the linearalloc limit during installation but it +won't help with linearalloc at execution time. This means that +most applications requiring multidexing because of the dex index +limit won't execute on API below 14 because of linearalloc limit. + +There is technically no source, but the src folder is necessary +to ensure that the build system works. The content is actually +located in libs/android-support-multidex.jar. + diff --git a/library/README.android b/library/README.android deleted file mode 100644 index 2fde7e2..0000000 --- a/library/README.android +++ /dev/null @@ -1,6 +0,0 @@ -Library Project including compatibility multi dex loader. - -This can be used by an Android project to install classloader -with multiple dex of applications running on API 4+. - - diff --git a/library/README.txt b/library/README.txt deleted file mode 100644 index 62e8737..0000000 --- a/library/README.txt +++ /dev/null @@ -1,15 +0,0 @@ -Library Project including a multidex loader. - -This can be used by an Android project to install multiple dexes -in the classloader of an application running on API 4+. - -Note that multidexing will allow to go over the dex index limit. -It can also help with the linearalloc limit during installation but it -won't help with linearalloc at execution time. This means that -most applications requiring multidexing because of the dex index -limit won't execute on API below 14 because of linearalloc limit. - -There is technically no source, but the src folder is necessary -to ensure that the build system works. The content is actually -located in libs/android-support-multidex.jar. - diff --git a/library/build.gradle b/library/build.gradle index f04615d..e882989 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -1,9 +1,31 @@ -apply plugin: 'android-library' -archivesBaseName = 'multidex' +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +apply plugin: 'com.android.library' android { compileSdkVersion 4 + defaultConfig { + minSdkVersion 4 + + // Update the version meta-data in Manifest. + addManifestPlaceholders(["multidex-version": project.rootProject.ext.multidexVersion]) + } + sourceSets { main { java.srcDirs = ['src'] @@ -51,4 +73,4 @@ uploadArchives { } } } -} \ No newline at end of file +} diff --git a/library/project.properties b/library/project.properties deleted file mode 100644 index 22e1c48..0000000 --- a/library/project.properties +++ /dev/null @@ -1,15 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-14 -android.library=true diff --git a/library/res/.readme b/library/res/.readme deleted file mode 100644 index cc903f6..0000000 --- a/library/res/.readme +++ /dev/null @@ -1 +0,0 @@ -This hidden file is there to ensure there is an res folder. \ No newline at end of file diff --git a/library/src/.readme b/library/src/.readme deleted file mode 100644 index 4bcebad..0000000 --- a/library/src/.readme +++ /dev/null @@ -1,2 +0,0 @@ -This hidden file is there to ensure there is an src folder. -Once we support binary library this will go away. \ No newline at end of file diff --git a/library/test/.classpath b/library/test/.classpath deleted file mode 100644 index e3d0af0..0000000 --- a/library/test/.classpath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/library/test/.project b/library/test/.project deleted file mode 100644 index 29f077e..0000000 --- a/library/test/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - android-support-multidex-tests - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/settings.gradle b/settings.gradle index c1c64f3..516f997 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,21 @@ -include ':library' -include ':instrumentation' +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +include ':support-multidex' +project(':support-multidex').projectDir = new File(rootDir, 'library') + +include ':support-multidex-instrumentation' +project(':support-multidex-instrumentation').projectDir = new File(rootDir, 'instrumentation') diff --git a/version.gradle b/version.gradle new file mode 100644 index 0000000..d216a30 --- /dev/null +++ b/version.gradle @@ -0,0 +1,17 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +ext.multidexVersion = '1.0.2' -- cgit v1.2.3