几天以来,我一直在努力以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.gradle
到android
中:
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经验的人,所以很抱歉,这是一个菜鸟问题。
答案 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中运行构建过程。