Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do i get my ionic app to target API level 28 and Above

I have been trying to upload my ionic app since today and discovered google changed their app rule to target API level 28 and above mine targets 27 so to stay.

All the help i got haven't worked for me. I have upgraded my codova android to 8.0.0 after trying 7, I have added this line "" in my config.xml still it didnt work. please Help

my 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="[email protected]" 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>

my 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
}

The Error i got

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

please help with the solution that worked for you.

like image 553
tochukwu ogugua Avatar asked Aug 02 '19 14:08

tochukwu ogugua


2 Answers

This works for me

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

Delete your package-lock.json Run These Commands

 ionic cordova platform remove android
 ionic cordova platform add android
 npm install
like image 110
M Roshaan Jamshaid Avatar answered Sep 30 '22 03:09

M Roshaan Jamshaid


For API level 29 with ionic v5. Add preference in the android block.

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

Then remove android

ionic cordova platform remove android

And add android again ( You need @latest ).

ionic cordova platform add android@latest
like image 31
Joe Avatar answered Sep 30 '22 03:09

Joe