Compiling errors at API level 28

别来无恙 提交于 2019-12-02 09:07:43

问题


I'm trying to compile an .apk from source code at API level 28 (compileSdkVersion 28). The app compiles fine but after installation it crashes. My app has Admob Ads in the UI itself on various pages.

Here's my project-level build.gradle -

    buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.1'
        classpath 'com.google.gms:google-services:4.2.0'
    }
}

allprojects {
    repositories {
        jcenter()
        google()
    }
}

Here's my app-level build.gradle -

apply plugin: 'com.android.application'

android {
    useLibrary 'org.apache.http.legacy'
    compileSdkVersion 28

    defaultConfig {
        applicationId "****APP_ID****"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.google.android.gms:play-services-ads:17.2.1'
    implementation 'com.android.support:customtabs:27.0.2'
    implementation 'com.google.android.gms:play-services-maps:+'
    implementation 'com.google.code.gson:gson:2.8.0'
    implementation 'com.github.bumptech.glide:glide:3.7.0'
    implementation 'com.squareup.okhttp3:okhttp:3.9.1'
}
apply plugin: 'com.google.gms.google-services'

Here's the Ad code from my AndroidManifest.xml -

 <application>
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="*****ADMOB-ID*****"/>
</application>

Here's the Ad code from my MainActivity.java

import com.google.android.gms.ads.MobileAds;
public class MainActivity extends Activity {


      private LinearLayout linear1;
      private AdView adview1;
      @Override
      protected void onCreate(Bundle _savedInstanceState) {
         super.onCreate(_savedInstanceState);
         setContentView(R.layout.main);
         initialize(_savedInstanceState);
         initializeLogic();
         MobileAds.initialize(this, "*****ADMOB-ID*****");
     }

I'm relatively new to Android coding. What might be the problem?


回答1:


You have to replace your application ID

 defaultConfig {
    applicationId "****APP_ID****"
    minSdkVersion 16
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
}

you have to add version

  implementation 'com.google.android.gms:play-services-maps:+'

you have to add admob app id here

   <application>
<meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="*****ADMOB-ID*****"/>
</application>

and here

  MobileAds.initialize(this, "*****ADMOB-ID*****");

first try to fix these errors




回答2:


You have to disable org.apache.http.legacy from your application so add below lines in manifest

 <uses-library
  android:name="org.apache.http.legacy"
  android:required="false" />

remove useLibrary 'org.apache.http.legacy' from gradle

If you are using any http url in your application, refer this



来源:https://stackoverflow.com/questions/56488051/compiling-errors-at-api-level-28

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!