v4 v7包的使用,Android Gradle的理解,版本号对应Gradle发行版本

简介: v4 v7包的使用,Android Gradle的理解,版本号对应Gradle发行版本

v4 v7包的使用



compile 'com.android.support:appcompat-v7:23.1.1' //必须要导入他才能使用v7包下面的控件
  compile 'com.android.support:cardview-v7:23.0.0'  //v7包下面的控件
  compile 'com.android.support:recyclerview-v7:23.0.0'//v7包下面的控件
复制代码

gradle引用appcompat-v7包的时候就不需要引用v4了,因为v7里默认包含了v4包;


compile ‘com.android.support:appcompat-v7:21.0.3’ 中的21代表API level 21推出的兼容包,所以如果你引用的是21之前的版本,则默认这些Theme.AppCompat.Light是Holo风格的,从21开始的版本默认是Material风格

使用appcompat之后,你的所有的Activity应该继承自ActionBarActivity,而ActionBarActivity继承自FragmentActivity,所以放心的使用Fragment;


Android Gradle的理解



综述:


Android Gradle Plugin 本质上就是 一个AS的插件,它一边调用 Gradle本身的代码和批处理工具来构建项目,一边调用Android SDK的编译、打包功能,从而让我们能够顺畅地在AS上进行开发。


Gradle其实就是一个构建项目的工具,也就是把那一个个文件、文件夹按照一定的规则关联起来,形成一个项目的工具,它其实不仅仅是用在AndroidStudio上。

我们在AS中用到的Gradle其实应该被叫做 Android Gradle Plugin,也就是安卓项目上的gradle插件;


Gradle插件会有版本号,每个版本号又对应有一个或一些 Gradle发行版本(一般是限定一个最低版本),也就是我们常见的类似gradle-3.1-all.zip这种东西;

如果这两个版本对应不上了,那你的工程构建的时候就会报错。


版本号对应Gradle发行版本



插件版本 Gradle版本
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+


Android Studio 3.0 之后自动将插件版本升级到3.0.0,所以我们也需要对应地把Gradle升级到4.1才行


另外, Android Gradle Plugin又会跟 Android SDK BuildTool有关联,因为它还承接着AndroidStudio里的编译相关的功能


这也是我们要在项目的 local.properties 文件里写明Android SDK路径、在build.gradle 里注明 buildToolsVersion 的原因。


所以 Android Gradle Plugin 本质上就是 一个AS的插件,它一边调用 Gradle本身的代码和批处理工具来构建项目,一边调用Android SDK的编译、打包功能,从而让我们能够顺畅地在AS上进行开发。


升级Android Gradle Plugin到3.0.1的踩坑之旅



按照提示,解决方案大致有两个:


  1. 要么我们需要在依赖于注解的module中,加上“annotationProcessor”这个配置;
    要么我们可以设置android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true,但是要注意这玩法以后会被删除
    按照官方推荐的第一种方法:应该是在报错的build.gradle中修改:


dependencies {
     compile xxxxx
     ...
     //加上类似这些对于注解处理器的的依赖
     annotationProcessor 'com.xxxx.xxxxx-1.0.0'

  1. 但是我加上了并没有什么作用,原因待查..
    为了节约时间,还是先用includeCompileClasspath=true的办法凑合下吧,以后真的被删除了再说...


直接在app/build.gradle(准确的说是每个涉及到注解依赖的module的build.gradle)上加一行


defaultConfig {
     minSdkVersion rootProject.ext.android.minSdkVersion
     targetSdkVersion rootProject.ext.android.targetSdkVersion
     versionCode 1
     versionName "1.0"
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     javaCompileOptions {
         annotationProcessorOptions {
             includeCompileClasspath = true    //加上这行即可
         }
     }
 }



javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath = true    //加上这行即可
}
}
  1. 然后再次同步gradle
  2. 同步gradle,不出意外的又报错了。
    一堆的style属性未找到的问题,跟第六步里的现象貌似是一样的


Error:(713, 5) error: style attribute '@android:attr/windowExitAnimation' not found.
 Error:(713, 5) error: style attribute '@android:attr/windowExitAnimation' not found.
 Error:(713, 5) error: style attribute '@android:attr/windowExitAnimation' not found.       



  1. 这才发现其实clean是没有用的,真正的问题原因在一堆错误的最后几行


Error:java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
 Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for 
 com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details



  1. AAPT2 , 貌似就是aapt的2.0版本?
    aapt.exe 是 Android SDK里的一个工具


直接说解决方案:
在Project/gradle.properties中添加 android.enableAapt2=false
再次同步...


  1. 嗯,没错,又报错了。


Error:(247, 1) Execution failed for task ':app:processMarketDebugManifest'.
Manifest Tasks does not support the manifestOutputFile property any more, please use the manifestOutputDirectory instead.
For more information, please check https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html



  1. 这个错跟7号有点类似,又是新版本gradle插件不支持某些方法啦,又要换用新的写法才行啦...然后最后给你贴一个文档地址自己看去。。
    大概就是说:现在不支持manifestOutputFile这个方法,要用processManifest.manifestOutputDirectory()来替换
    也就是你app/build.gradle 打包的这一段代码要重新写一下;一般我们都会在build.gradle中编写这样的代码,来实现对Manifest文件的修改、以及自定义apk的输出文件名等。


android.applicationVariants.all { variant ->
    variant.outputs.each { output ->
        output.processManifest.doLast {
            ...
            def manifestFile = output.processManifest.manifestOutputFile;   //这里被废弃导致报错
            def apkFileName = "_myapp_${android.defaultConfig.versionCode}_${formatedDate}.apk";
            manifestFile.write(updatedContent, 'UTF-8')
            ...
        }
    }
}



  1. 反正就是各种各样的groovy语法报错,然而并不懂groovy语法,现学现卖改一改
    我们工程里是既有动态修改manifest文件的需求,也有自定义apk名字的功能,
    包括自动修改apk名称的代码也有报错,也要改,最终改成了这样

groovy语法:www.jianshu.com/p/ae97aad05…


目录
相关文章
|
2月前
|
开发工具 git 索引
repo sync 更新源码 android-12.0.0_r34, fatal: 不能重置索引文件至版本 ‘v2.27^0‘。
本文描述了在更新AOSP 12源码时遇到的repo同步错误,并提供了通过手动git pull更新repo工具来解决这一问题的方法。
56 1
|
2月前
|
Android开发
Android Studio: 解决Gradle sync failed 错误
本文介绍了解决Android Studio中出现的Gradle同步失败错误的步骤,包括从`gradle-wrapper.properties`文件中获取Gradle的下载链接,手动下载Gradle压缩包,并替换默认下载路径中的临时文件,然后重新触发Android Studio的"Try Again"来完成同步。
380 0
Android Studio: 解决Gradle sync failed 错误
|
2月前
|
Java 开发工具 Maven
Flutter和Android中覆盖gradle中的repositories仓库地址
Flutter和Android中覆盖gradle中的repositories仓库地址
99 4
|
2月前
|
Android开发 Kotlin
The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.10 and higher
The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.10 and higher
37 3
|
2月前
|
Android开发 开发者
Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)
Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)
81 1
|
2月前
|
Java 开发工具 Android开发
Android Studio利用Build.gradle导入Git commit ID、Git Branch、User等版本信息
本文介绍了在Android Studio项目中通过修改`build.gradle`脚本来自动获取并添加Git的commit ID、branch名称和用户信息到BuildConfig类中,从而实现在编译时将这些版本信息加入到APK中的方法。
44 0
|
2月前
|
IDE API 开发工具
与Android Gradle Plugin对应的Gradle版本和Android Studio版本
与Android Gradle Plugin对应的Gradle版本和Android Studio版本
193 0
|
2月前
|
Android开发
解决Android、Flutter编译时Gradle报错:javax.net.ssl.SSLException: Connection reset
解决Android、Flutter编译时Gradle报错:javax.net.ssl.SSLException: Connection reset
174 0
|
3月前
|
Android开发
Android使用DrawerLayout仿qq6.6版本侧滑效果
Android使用DrawerLayout仿qq6.6版本侧滑效果
19 0
|
3月前
|
Android开发
【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk
【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk
83 0