Мой apk не устанавливается на некоторые мобильные телефоны, а на другие - PullRequest
0 голосов
/ 30 мая 2018

Я создал приложение на основе WebView, которое устанавливается на некоторых устройствах, но не устанавливается на других.Я проверил это на Android версии 4, 6, 7. Проблема не с версией Android.На некоторых устройствах написано Problem occurs when parsing the package или Application package installer has stopped unexpectedly.

Примечание. У меня проблемы с Samsung j7 Prime, Mi A1 и некоторыми другими.Но никаких проблем в Mi Note 3, Oppo f3 и некоторых других.

Что я делаю не так?Это мой activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent">

    <im.delight.android.webview.AdvancedWebView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.MainActivity"
        android:id="@+id/webview">
    </im.delight.android.webview.AdvancedWebView>

    <com.google.android.gms.ads.AdView
        xmlns:ads="http://schemas.android.com/apk/res-auto"
        android:id="@+id/adView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        ads:adSize="BANNER"
        ads:adUnitId="id">
    </com.google.android.gms.ads.AdView>

</RelativeLayout>

А это мой AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

А это мой build.gradle:

buildscript {
    repositories {
        maven { url 'https://plugins.gradle.org/m2/'}
    }
    dependencies {
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:0.8.1'
    }
}
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

repositories {
    maven { url 'https://maven.google.com' }
}

allprojects {
    repositories {
        maven { url "https://jitpack.io" }
    }
}

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.rimikri.smartpedi"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        //OneSignal
        manifestPlaceholders = [
                onesignal_app_id: 'id',
                onesignal_google_project_number: 'REMOTE'
        ]
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    compile 'com.onesignal:OneSignal:[3.8.3, 3.99.99]'
    compile 'com.github.delight-im:Android-AdvancedWebView:v3.0.0'
    compile 'com.google.firebase:firebase-core:15.0.2'
    implementation 'com.google.android.gms:play-services-ads:15.0.0'
    compile 'com.google.firebase:firebase-ads:15.0.0'
    implementation 'com.facebook.android:audience-network-sdk:4.27.1'
    implementation 'com.google.ads.mediation:facebook:4.27.1.0'
}

apply plugin: 'com.google.gms.google-services'

Заранее спасибо за предложение.

Ответы [ 4 ]

0 голосов
/ 30 мая 2018

, поскольку он работает с некоторыми устройствами и не работает с другими, я уверен, что это проблема с размером, вы поместили изображение или значок где-то, и он не подходит для некоторых устройств размером

0 голосов
/ 30 мая 2018

ваш минимальный уровень SDK составляет 21 minSdkVersion 21

У вас есть компонент вида, который поддерживает только Android 5.0 (LOLLIPOP) и выше, возможно?Вы должны запустить Анализ кода и проверить ошибки XML, которые не вызывают ошибок времени выполнения

Кроме того, Вы используете сторонние библиотеки?У некоторых из них может быть указана версия minSdk, и они могут быть ниже, чем minSdk вашего приложения

0 голосов
/ 30 мая 2018

Это может быть связано с тем, что вы пытаетесь установить приложение на устройства с уровнем API ниже 21 (т. Е. Lollipop), а ваше приложение имеет minSdkVersion = "21".Поэтому для использования приложения на устройствах ниже уровня API 21 понизьте minSdkVersion вашего приложения до 16 (minSdkVersion = "16") в файле build.gradle уровня приложения.

0 голосов
/ 30 мая 2018

Это в основном из-за разных версий Android,

попробуйте определить минимальный и целевой уровень API Android в файле manifest.xml

, например,

<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="27" />
...