将gradle设置为Android O(API 26)

5

Android Studio已自动更新以下组件到API 26:

  • ROM - SDK至API 26
  • Android SDK构建工具 26
  • Android模拟器 26.0.3
  • Android SDK平台工具 26.0.0
  • Android SDK工具 26.0.2

我的Gradle版本为2.3.3:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.0'
    defaultConfig {
        applicationId "com.mycompany.myapplication"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 4
        versionName "0.0.4"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    /////////If I change it to 26.0.0 it gives errors.///////////
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support:design:25.3.1'
    compile 'com.android.support:support-vector-drawable:25.3.1'
    compile 'com.android.support:support-v4:25.3.1'
    /////////////////////////////////////////////////////////////
    testCompile 'junit:junit:4.12'
}

我有两个问题(请参见 Gradle 的注释行):

1.如何知道这些库的最新版本(我只是随机输入数字并尝试更新它们,直到找到最新版本)。

2.在排除组中有'com.android.support',如果我删除它,是否需要指定那些库?我看到许多人都是以这种方式包括'com.android.support'库,所以肯定有理由这样做。

我在 developer.android.com 中搜索后发现最新版本为24.2.0(非常旧了,我一直在使用25.3.1)。

4个回答

4
如果您真的想使用26版本,您可以在依赖项末尾使用+字符。
compile 'com.android.support:appcompat-v7:26+'

这样,等级将采用您依赖项的版本号从26.?.?开始的最新版本。但是,您将收到来自Android Studio的警告,因为在两个不同版本之间,行为可能会发生变化,然后产生随机效果。
要了解最新版本,请在此处查看:https://developer.android.com/topic/libraries/support-library/revisions.html 最后,如果您包含“com.android.support”,则将包含整个库。而您肯定不需要所有包含的内容。如果您只使用Recycler View,请添加以下内容:
compile 'com.android.support:recyclerview-v7:26.0.0-beta2'

感谢回答我的第二个问题。包含整个库有什么问题吗?比如编译时间变慢吗? - Exprove
不仅编译时间会变慢,你的应用程序也会比必要的更大。你的应用程序将包含无用的代码,这是一个安全隐患。如果你使用更大的库做同样的事情,你的应用程序大小将成为一个问题。我们不是在桌面应用程序上,所以移动开发人员需要注意内存和CPU的使用(电池寿命)。希望这能帮到你 :-D - olivejp
你确定吗?通常在面向对象编程语言中,.exe(在这种情况下是.apk)只编译使用的库(因此如果包含无用的库,则汇编代码相同)。通常这是主链接器的工作(获取库等到主文件中)。为什么Android会有所不同呢? - Exprove
阅读此页面中的章节“减少库的资源使用”:https://developer.android.com/topic/performance/reduce-apk-size.html#reduce-resources - olivejp

0

谢谢,伙计!我在查看我的母语...目前没有稳定版,所以我会等待。 - Exprove
实际上稳定版本是25.4.0:只是其他语言的页面没有更新。您可以无问题地升级到25.4.0。 - Daniel Luque
我理解了,但是我无法使用API 26编译那个版本,所以现在我会继续使用API 25。 - Exprove
抱歉,我没听懂你的意思。是的,API 26会强制使用beta版本,所以最好等待正式发布 :) - Daniel Luque

0
感谢您报告问题。即将发布的6.0.0版本包括对Java 8功能的支持,因此为了运行它(或任何测试版),您需要通过将以下内容添加到应用程序的gradle文件中来升级您的项目以包括Java 8支持:
 compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
    }

0

试试这个:

allprojects {
repositories {
    jcenter()
    maven {
        url "https://maven.google.com"
    }
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接