目标SDK卡在22

时间:2018-09-20 21:19:18

标签: android react-native gradle build.gradle

几天以来,我一直在努力以targetSdkVersion为26以上版本构建的apk,以便能够将其上传到Google。

使用的本机版本为“ ^ 0.57.0-rc.4”。

我不是通过Android Studio运行构建,而是以Shell脚本的形式运行。

cd android
./gradlew clean
./gradlew assembleRelease
# zipalign & sign
~/Library/Android/sdk/build-tools/27.0.1/aapt list -a 200hp.apk | grep SdkVersion

android/app/build.gradle中:

android {
    compileSdkVersion 27
    buildToolsVersion "27.0.3"

    defaultConfig {
        minSdkVersion 17
        targetSdkVersion 27
        ...
    }
    ...
}

android/build.gradle中:

subprojects {
    afterEvaluate {project ->
        if (project.hasProperty("android")) {
            android {
                compileSdkVersion 27
                /* targetSdkVersion 27 */
                buildToolsVersion "27.0.3"
            }
        }
    }
}

ext {
    googlePlayServicesVersion = "10.2.4"
    targetSdkVersion         = "27.0.1"
}

我得到的是一个来自Google的错误消息,提示“您的应用当前定位到API级别22”,以及aapt的相应响应:A: android:targetSdkVersion(0x01010270)=(type 0x10)0x16

值得一说的是,我已经安装了正确的构建工具。

ls $ANDROID_HOME/build-tools/
23.0.1  25.0.0  25.0.2  25.0.3  26.0.1  26.0.2  27.0.0  27.0.1  27.0.3

targetSdkVersion 27添加到android/app/build.gradleandroid中:

android {
    compileSdkVersion 27
    buildToolsVersion "27.0.3"
    targetSdkVersion 27

结果

  

在类型为org.gradle.api.Project的项目':app'上找不到参数[27]的方法targetSdkVersion()。

targetSdkVersion中取消注释afterEvaluate会导致

  

配置项目':RNGL'时出现问题。   在类型com.android.build.gradle.LibraryExtension的对象上找不到参数[27]的方法targetSdkVersion()。

我不是Android开发人员,也不是具有gradle经验的人,所以很抱歉,这是一个菜鸟问题。

2 个答案:

答案 0 :(得分:1)

targetSdkVersion = "27.0.1"(字符串)应改为27(整数)。

...虽然显然暗示了com.android.build.gradle.LibraryExtension

因此,我怀疑有一个库模块,它可能仍引用此错误值。

答案 1 :(得分:0)

取消所有第3部分库的链接证明这是项目配置问题。我遵循了Martin的建议,但这并没有改变最终的targetSdk版本(或者至少还不够)。

对我有用的是从以下位置更改gradle分发网址:

distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-all.zip 

并在Android Studio中运行构建过程。