关于AndroidStudio导入项目的正确方式,修改Gradle配置
前言 在安卓的引擎AndroidStudio导入过程中,github存在许多老项目,他们的安卓版本号以及Gradle各不相同,固有此篇文章解决
安装AndroidStudio以及下载SDK 相关链接:https://blog.csdn.net/qq_38436214/article/details/105073213
对比有关文件 以下project为项目目录节点
build.gradle文件详解
根目录下的gradle文件
这个是gradle 插件配置有关于插件版本下面讲解
1、repositories闭包,声明了jcenter()的配置 2、dependencies闭包,声明了一个Gradle插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build: gradle: 3.0 .0 ' 声明gradle插件,插件版本号为3.0 .0 } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
warpper文件
project/gradle/warpper/gradle-wrapper.properties
这个是有关于gradle版本文件 distributionurl
是studio下载gradle的path
1 2 3 4 5 #Sun Oct 02 21 : 29 : 47 CST 2016 distributionBase GRADLE USER_HOME distributionPath-wrapper/dists zipStoreBase-GRADLE USER HOME zipStorePath=wrapper/dists distributionurl=https\:
app目录下的gradle文件
简单版本 简单的例子:
如果只关注gradle安装的话,只要看compileSdkVersion targetSdkVersion buildToolsVersion
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 apply plugin: 'com.android.application' android { compileSdkVersion 26 buildToolsVersion '26.0 .2 ' aaptOptions.cruncherEnabled = false aaptOptions.useNewCruncher = false defaultConfig { applicationId "com.hebbe.espressotest" minSdkVersion 22 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: [ '*.jar'] ) implementation 'com.android.support: appcompat-v7: 26.1 .0 ' implementation 'com.android.support.constraint: constraint-layout: 1.0 .2 ' testImplementation 'junit: junit: 4.12 ' androidTestImplementation 'com.android.support.test: runner: 1.0 .1 ' androidTestImplementation 'com.android.support.test.espresso: espresso-core: 3.0 .1 ' }
完整版本 这个是补充的完整版本
1、apply plugin,声明是Android应用程序还是库模块 2、android 闭包,配置项目构建的各种属性,compileSdkVersion用于指定项目的编译SDK版本,buildToolsVersion用于指定项目构建工具的版本。
-defaultConfig闭包:默认配置,应用程序包名,最小 sdk 版本,目标 sdk 版本,版本号,版本名 buildTypes闭包:指定生成安装文件的配置,是否对代码进行混淆 signingConfigs 闭包:签名信息配置 sourceSets 闭包:源文件路径配置 lintOptions 闭包:lint 配置
3、dependencies 闭包,指定当前项目的所有依赖关系,本地依赖,库依赖以及远程依赖 4、repositories闭包,仓库配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 apply plugin: 'com.android.application' android { lintOptions { abortOnError false checkReleaseBuilds false } compileSdkVersion 26 buildToolsVersion '26.0 .2 ' aaptOptions.cruncherEnabled = false aaptOptions.useNewCruncher = false defaultConfig { applicationId "com.hebbe.espressotest" minSdkVersion 22 targetSdkVersion 26 versionCode 1 versionName "1.0" archivesBaseName = "weshare-$versionName" ndk { moduleName "hebbewifisafe" ldLibs "log" , "z" , "m" , "jnigraphics" , "android" abiFilters "armeabi" , "x86" , "armeabi-v7a" cFlags "-std=c++11 -fexceptions" stl "gnustl_static" } multiDexEnabled true testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' res.srcDirs = [ 'res'] assets.srcDirs = [ 'assets'] jni.srcDirs 'src/main/jni' jniLibs.srcDir 'src/main/jniLibs' java.srcDirs = [ 'src'] resources.srcDirs = [ 'src'] aidl.srcDirs = [ 'src'] renderscript.srcDirs = [ 'src'] } debug.setRoot('build-types/debug') release.setRoot('build-types/release') } dexOptions { preDexLibraries = false incremental true javaMaxHeapSize "4g" } signingConfigs { release { storeFile file("fk.keystore" ) storePassword "123456" keyAlias "fk" keyPassword "123456" } debug { storeFile file("fk.keystore" ) storePassword "123456" keyAlias "fk" keyPassword "123456" } } buildTypes { release { zipAlignEnabled true shrinkResources true minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' debuggable false ndk { moduleName "hebbewifisafe" ldLibs "log" , "z" , "m" , "jnigraphics" , "android" abiFilters "armeabi" , "x86" , "armeabi-v7a" cFlags "-std=c++11 -fexceptions" stl "gnustl_static" } applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('release.apk')) { def timeStamp = new Date().format('yyyyMMddHH'); def fileName = "WeShare-${defaultConfig.versionName}" + "-" + timeStamp + "-lj-" + ".apk" ; output.outputFile = file("${outputFile.parent}/${fileName}" ) } } } jniDebuggable false } debug { minifyEnabled false zipAlignEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' debuggable true ndk { cFlags "-std=c++11 -fexceptions -g -D __DEBUG__" } jniDebuggable true } } packagingOptions { exclude 'META-INF/ASL2.0 ' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' exclude 'META-INF/MANIFEST.MF' } compileOptions { } productFlavors { hebbe { } googlePlay { } solo { } } productFlavors.all { flavor -> flavor.manifestPlaceholders = [ UMENG_CHANNEL_VALUE: name] } } dependencies { implementation fileTree(dir: 'libs', include: [ '*.jar'] ) implementation 'com.android.support: appcompat-v7: 26.1 .0 ' implementation 'com.android.support.constraint: constraint-layout: 1.0 .2 ' implementation project(': hello') testImplementation 'junit: junit: 4.12 ' androidTestImplementation 'com.android.support.test: runner: 1.0 .1 ' androidTestImplementation 'com.android.support.test.espresso: espresso-core: 3.0 .1 ' } apply plugin: 'com.google.gms.google-services' task showMeCache << { configurations.compile.each { println it } } repositories { mavenCentral() }
版本问题 在安装gradle的时候有多个工具的版本会冲突 :
Java(JDK),gradle,gradle插件(插件和gradle不是一个东西)
Java和Gradle
Java version
First Gradle version to support it
8
2.0
9
4.3
10
4.7
11
5.0
12
5.4
13
6.0
14
6.3
15
6.7
16
7.0
17
7.3
18
7.5
19
7.6
20
8.1
gradle和gradle插件
插件版本
所需的 Gradle 版本
Kotlin版本
AS版本
1.0.0 - 1.1.3
2.2.1 - 2.3
1.2.0 - 1.3.1
2.2.1 - 2.9
1.5.0
2.2.1 - 2.13
2.0.0 - 2.1.2
2.10 - 2.13
2.1.3 - 2.2.3
2.14.1+
2.3.0+
3.3+
3.0.0+
4.1+
3.1.0+
4.4+
3.2.0 - 3.2.1
4.6+
1.2.51+
3.3.0 - 3.3.3
4.10.1+
1.3.0+(rec:1.3.21)
rec:3.3.2+
3.4.0 - 3.4.3
5.1.1+
3.5.0 - 3.5.4
5.4.1+
3.6.0 - 3.6.4
5.6.4+
4.0.0+
6.1.1+
4.1.0+
6.5+
下载过慢或下载失败问题 在Android studio中 如果自带的下载的gradle的话,会比较慢(最好魔法),甚至会下载失败,那么就有个解决方法
选出对应版本 在官方的下载链接 中找到warpper中的distributionurl(上文有提及)路径对应的zip,并下载。
(这里可以使用迅雷复制下载链接去下载)
处理warpper文件 打开Android studio 让他自动生成warpper文件,看到有下载gradle下载后关闭
注:这边的Android studio 默认是C:/user/.gradle 文件下 gradle 会比较大(1-2G)
可以在Android studio-> File 菜单 ->Setting -> Build, Execution, Deployment-> Build Tools-> Gradle -> 修改 Gradle user home : 到指定的文件夹
放入Zip文件 点开 Android studio-> File 菜单 ->Setting -> Build, Execution, Deployment-> Build Tools-> Gradle -> Gradle user home
Gradle user home 就是存放gradle 的目录地址
粘贴Gradle user home 到我的电脑
继续点击文件夹 warpper/dists/gradle-7.5-bin/f1wOcc9nuoDeivz97x2xlu9sv
里面会有 gradle-7.5-bin.zip.lck 和 gradle-7.5-bin.zip.part
把刚才下载的zip复制进去
点开Android studio 大象图标(右上)或者重启 Android studio
等待解压就好了
总结 在导入gradle中还是有很多坑的,比如说版本不一致,下载失败等等等
相关链接 https://blog.csdn.net/Qhx20040819/article/details/131911031
https://blog.csdn.net/u011897062/article/details/109357551
https://www.bilibili.com/video/BV1AW411i76x/?spm_id_from=333.999.0.0
https://services.gradle.org/distributions/
https://www.bilibili.com/video/BV1GQ4y1t7y8/?spm_id_from=333.337.search-card.all.click&vd_source=d19e47552f1614194f0d0b0662850083