如何让我的 ionic 应用程序以 API 级别 28 及以上为目标

Posted

技术标签:

【中文标题】如何让我的 ionic 应用程序以 API 级别 28 及以上为目标【英文标题】:How do i get my ionic app to target API level 28 and Above 【发布时间】:2019-12-11 04:08:50 【问题描述】:

从今天开始,我一直在尝试上传我的 ionic 应用程序,发现谷歌更改了他们的应用程序规则,以 API 级别 28 及更高级别为目标,而我的目标为 27 以保留。

我得到的所有帮助都没有为我工作。在尝试 7 后,我已将我的 codova android 升级到 8.0.0,我在我的 config.xml 中添加了这一行“”,但它仍然没有工作。请帮忙

我的 config.xml

<widget id="xxx" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>xxx</name>
    <description>xxx</description>
    <author email="evensatowind@gmail.com" href="http://github.com/satowind">Sato Wind</author>
    <content src="index.html" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <preference name="android-targetSdkVersion" value="28" />
    <preference name="ScrollEnabled" value="false" />
    <preference name="android-minSdkVersion" value="19" />
    <preference name="BackupWebStorage" value="none" />
    <preference name="SplashMaintainAspectRatio" value="true" />
    <preference name="FadeSplashScreenDuration" value="500" />
    <preference name="SplashShowOnlyFirstTime" value="false" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="3000" />
    <engine name="android" spec="8.0.0" />
</widget>

我的 build.gradle

   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
   regarding copyright ownership.  The ASF licenses this file
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
*/

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript 
    repositories 
        google()
        jcenter()
    

    dependencies 
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files

        classpath 'com.android.tools.build:gradle:3.3.0'
    


allprojects 
    repositories 
        google()
        jcenter()
    

    //This replaces project.properties w.r.t. build settings
    project.ext 
      defaultBuildToolsVersion="28.0.3" //String
      defaultMinSdkVersion=19 //Integer - Minimum requirement is Android 4.4
      defaultTargetSdkVersion=28 //Integer - We ALWAYS target the latest by default
      defaultCompileSdkVersion=28 //Integer - We ALWAYS compile with the latest by default
    


task clean(type: Delete) 
    delete rootProject.buildDir

我遇到的错误

Your app currently targets API level 27 and must target at least API level 28 to ensure it is built on the latest APIs optimized for security and performance. Change your app's target API level to at least 28

请提供适合您的解决方案。

【问题讨论】:

请检查我的答案并给我反馈 【参考方案1】:

更改config.xml中的值后

<preference name="android-targetSdkVersion" value="28" />

您需要删除android文件夹并重新创建它

ionic cordova platform remove android
ionic cordova platform add android

【讨论】:

【参考方案2】:

适用于具有 ionic v5 的 API 级别 29。在 android 块中添加首选项。

<platform name="android">
    <preference name="android-targetSdkVersion" value="29" />
    /* Other code */
</platform>

然后删除android

ionic cordova platform remove android

然后再次添加 android(你需要 @latest)。

ionic cordova platform add android@latest

【讨论】:

@latest 正是我所缺少的。谢谢指点!【参考方案3】:

将此添加到您的 config.xml &lt;preference name="android-targetSdkVersion" value="28" /&gt;

【讨论】:

我已经检查了配置在那里,就是你【参考方案4】:

这对我有用

<preference name="android-build-tool" value="30.0.3" />
<preference name="android-targetSdkVersion" value="30" />

删除你的 package-lock.json 运行这些命令

 ionic cordova platform remove android
 ionic cordova platform add android
 npm install

【讨论】:

我今天尝试将我的应用程序的新版本上传到 Google Play 并遇到错误:您的应用程序当前以 API 级别 29 为目标,并且必须至少以 API 级别 30 为目标,以确保它基于最新的 API 构建针对安全性和性能进行了优化。将您应用的目标 API 级别更改为至少 30。这个答案为我解决了这个问题。

以上是关于如何让我的 ionic 应用程序以 API 级别 28 及以上为目标的主要内容,如果未能解决你的问题,请参考以下文章

Ionic 始终允许定位 API 级别 29

我应该如何让我的 Ionic / Apache Cordova / Visual Studio 环境保持最新?

Android PlayStore警告您的应用目前的目标是API级别25

如何以最新的 API 级别在服务中运行我的倒数计时器?

如何通过 Ionic 5 应用程序中的 http post 将数组传递给 Mailgun api?

如何将应用签名从 V1 升级到 V2?