Android apk не отображается на новых устройствах Huawei в AppGallery - PullRequest
0 голосов
/ 10 марта 2020

Прежде всего, извините, если это дубликат, не удалось найти правильное решение. У нас проблема с публикацией apk в галерее приложений huawei. В настоящее время приложение доступно на Huawei AppGalley для устройств с поддержкой Google Play (старше мая 2019 года). У нас есть проблема, это же приложение не видно на новых устройствах, которые не имеют Google Play. Что может быть решением для этого? Попытался добавить репозиторий huawei ко всему проекту maven, и мы добавили agconnect-services. json с необходимыми deps, но это не сработало. Любой совет, потенциальное решение по этому поводу?

buildscript {
    repositories {
        jcenter()
        mavenCentral()
        google()
        maven { url 'http://developer.huawei.com/repo/' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.3'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:4.0.1'
        //android performanse
        classpath 'com.google.firebase:firebase-plugins:1.1.5'
        classpath 'com.huawei.agconnect:agcp:1.2.0.300'


    }
}

allprojects {
    repositories {
        google()

        jcenter()

        maven {
            url "https://jitpack.io"

        }
maven { "https://maven.google.com"}
maven { url 'http://developer.huawei.com/repo/' }
  }
}

// build.gradle (app)

apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'com.google.firebase.firebase-perf'
apply plugin: 'com.huawei.agconnect'


buildscript {

    repositories {
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        // These docs use an open ended version so that our plugin
        // can be updated quickly in response to Android tooling updates

        // We recommend changing it to the latest version from our changelog:
        // https://docs.fabric.io/android/changelog.html#fabric-gradle-plugin
        classpath 'io.fabric.tools:gradle:1.+'
    }

    ext.retrofit_version = "2.3.0"
    ext.ok_http_version = "3.9.1"
    ext.butterknife_version = "8.8.1"
    ext.dagger_version = "2.10"
    ext.timber_version = "4.5.1"
    ext.rx_java_version = "1.2.0"
    ext.rx_android_version = "1.2.1"
    ext.rx_binding_version = "3.0.0"
    ext.page_indicator_version = "0.2.0"
    ext.gson_version = "2.8.2"
    ext.glide_version = '3.7.0'
    ext.android_support_version = "28.0.0"
    ext.gsm_ads_version = "15.0.1"
    ext.firebase_perf_version = "16.0.0"
    ext.firebase_core_version = "16.0.1"
    ext.firebase_messenging_version = "17.0.0"
    ext.gsm_measurement_version = "16.0.0"
    ext.leak_cannary_version = "1.5.4"
    ext.auto_value_gson_version = "0.6.0"
    ext.auto_value_parcel_version = "0.2.5"
    ext.rx_java_proguard_version = "1.2.3.0"
    ext.javax_annotations_version = "1.0"
    ext.junit_version = "4.12"
    ext.espresso_version = "2.2.2"
    ext.hamcrest_version = "1.3"
    ext.roboelectric_version = "3.3.2"
    ext.mockito_version = "2.6.4"
    ext.job_dispatcher_version = "0.8.5"
    ext.crashanalitycs_version = "2.9.3"
    ext.autoservice_version = "1.0-rc3"
    ext.constaint_layout_version = "1.1.2"
    ext.chip_layout_manager = "0.3.7"
    ext.multidex_version = "1.0.3"
    ext.huawei_hwid_version = "4.0.0.300"
    ext.didomi_version = "1.10.9"
}


android {
    compileSdkVersion 29
    buildToolsVersion '28.0.3'

    defaultConfig {
        applicationId "app package"
        minSdkVersion 22
        targetSdkVersion 29
        versionCode 29
        versionName "1.2.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }

    defaultConfig {
        ...
        ndk {
            abiFilters "armeabi-v7a", "x86", "armeabi", "mips"
        }

    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    buildTypes {

        debug {

            ...
        }
        release {
            ...
        }
    }
    flavorDimensions "ads"

    productFlavors { ...}
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }

}

allprojects {
    repositories {
        jcenter()
        flatDir {
            dirs 'libs'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation project(":DotmetricsSDK.Android")
    implementation "com.android.support:multidex:$multidex_version"
    implementation "com.romandanylyk:pageindicatorview:$page_indicator_version"
    implementation "com.google.dagger:dagger:$dagger_version"
    implementation "com.jakewharton:butterknife:$butterknife_version"
    implementation "com.android.support.constraint:constraint-layout:$constaint_layout_version"
    annotationProcessor "com.jakewharton:butterknife-compiler:$butterknife_version"
    annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version"
    implementation "com.jakewharton.timber:timber:$timber_version"
    implementation "io.reactivex:rxandroid:$rx_android_version"
    implementation "com.jakewharton.rxbinding3:rxbinding:$rx_binding_version"
    implementation "io.reactivex:rxjava:$rx_java_version"
    implementation "com.squareup.retrofit2:adapter-rxjava:$retrofit_version"
    implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
    implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
    implementation "com.squareup.okhttp3:okhttp-urlconnection:$ok_http_version"
    implementation "com.squareup.okhttp3:logging-interceptor:$ok_http_version"
    implementation("com.squareup.retrofit2:converter-simplexml:$retrofit_version") {
        exclude group: 'xpp3', module: 'xpp3'
        exclude group: 'stax', module: 'stax-api'
        exclude group: 'stax', module: 'stax'
    }
    implementation "com.google.code.gson:gson:$gson_version"
    implementation "com.android.support:appcompat-v7:$android_support_version"
    implementation "com.android.support:design:$android_support_version"
    implementation "com.google.firebase:firebase-core:$firebase_core_version"
    implementation "com.google.firebase:firebase-messaging:$firebase_messenging_version"
    implementation "com.google.firebase:firebase-perf:$firebase_perf_version"
    implementation "com.google.android.gms:play-services-ads:$gsm_ads_version"
    testCompile "com.squareup.leakcanary:leakcanary-android-no-op:$leak_cannary_version"
    debugCompile "com.squareup.leakcanary:leakcanary-android:$leak_cannary_version"
    releaseCompile "com.squareup.leakcanary:leakcanary-android-no-op:$leak_cannary_version"
    testCompile 'junit:junit:4.12'
    annotationProcessor "com.google.auto.service:auto-service:$autoservice_version"
    provided("com.ryanharter.auto.value:auto-value-gson:$auto_value_gson_version") {
        exclude group: 'com.google.auto.service', module: 'auto-service'
    }
    annotationProcessor("com.ryanharter.auto.value:auto-value-gson:$auto_value_gson_version") {
        exclude group: 'com.google.auto.service', module: 'auto-service'
    }
    annotationProcessor("com.ryanharter.auto.value:auto-value-parcel:$auto_value_parcel_version") {
        exclude group: 'com.google.auto.service', module: 'auto-service'
    }
    //Glide
    implementation "com.github.bumptech.glide:glide:$glide_version"
    //GEMIUS
    implementation(name: 'GemiusSDK_1.3.3', ext: 'aar')
    provided "javax.annotation:jsr250-api:$javax_annotations_version"
    //ProGuard rules for RxJava!
    implementation "com.artemzin.rxjava:proguard-rules:$rx_java_proguard_version"

    implementation "com.firebase:firebase-jobdispatcher:$job_dispatcher_version"

    implementation("com.crashlytics.sdk.android:crashlytics:$crashanalitycs_version@aar") {
        transitive = true
    }
    implementation "com.beloo.widget:ChipsLayoutManager:$chip_layout_manager"

    implementation "com.huawei.hms:hwid:$huawei_hwid_version"

    implementation "io.didomi.sdk:android:$didomi_version"

    testImplementation "junit:junit:$junit_version"
    // Set this dependency if you want to use Hamcrest matching
    testImplementation "org.hamcrest:hamcrest-library:$hamcrest_version"
    testImplementation "org.robolectric:robolectric:$roboelectric_version"
    testImplementation "org.mockito:mockito-core:$mockito_version"
    androidTestImplementation("com.android.support.test.espresso:espresso-core:$espresso_version", {
        exclude group: 'com.android.support', module: 'support-annotations'
        exclude(group: 'com.google.code.findbugs', module: 'jsr305')
    })
    androidTestImplementation("com.android.support.test.espresso:espresso-contrib:$espresso_version") {
        // Necessary to avoid version conflicts
        exclude group: 'com.android.support', module: 'appcompat'
        exclude group: 'com.android.support', module: 'support-v4'
        exclude group: 'com.android.support', module: 'support-annotations'
        exclude(group: 'com.google.code.findbugs', module: 'jsr305')
        exclude module: 'recyclerview-v7'
    }
}
apply plugin: 'com.google.gms.google-services'

// AndroidManifest

<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="hr.index.indexme">
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.WAKE_LOCK" />
   <!-- This is needed because of dotmetrics -->
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove" />
   <application android:name=".App" android:allowBackup="true" android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:networkSecurityConfig="@xml/network_config" android:usesCleartextTraffic="true" android:theme="@style/AppTheme">
      <uses-library android:name="org.apache.http.legacy" android:required="false" />
      <activity android:name=".splash.activity.view.SplashActivity" android:screenOrientation="portrait" android:theme="@style/SplashTheme">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
      <activity android:name=".main.activity.view.MainActivity" android:launchMode="singleTask" android:screenOrientation="portrait" />
      <activity android:name=".article.activity.gallery.view.ArticleActivity" android:screenOrientation="portrait" android:launchMode="singleTop" android:taskAffinity="index.article" />
      <activity android:name=".walkthrough.activity.view.WalkthroughActivity" android:screenOrientation="portrait" />
      <activity android:name=".search.view.SearchActivity" android:screenOrientation="portrait" android:windowSoftInputMode="stateAlwaysVisible|adjustPan" />
      <activity android:name=".settings.activity.view.SettingsActivity" android:screenOrientation="portrait" />
      <activity android:name=".tag.list.view.TagListActivity" android:screenOrientation="portrait" />
      <activity android:name=".terms.view.TermsActivity" android:screenOrientation="portrait" />
      <activity android:name=".contact.view.ContactActivity" android:windowSoftInputMode="adjustPan" android:screenOrientation="portrait" />
      <activity android:name=".weather.view.WeatherActivity" android:screenOrientation="portrait" />
      <activity android:name=".sendNews.activity.view.SendNewsActivity" android:screenOrientation="portrait" />
      <activity android:name=".comments.activity.view.CommentsActivity" android:screenOrientation="portrait" android:windowSoftInputMode="adjustResize" />
      <activity android:name=".article.activity.single.view.SingleArticleActivity" android:screenOrientation="portrait" />
      <service android:name=".base.service.UploadService" />
      <service android:name=".fcm.IndexFirebaseInstanceIDService">
         <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
         </intent-filter>
      </service>
      <service android:name=".fcm.IndexFirebaseMessagingService">
         <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
         </intent-filter>
      </service>
      <service android:name=".breaking_news.service.BreakingNewsJobService" android:exported="false">
         <intent-filter>
            <action android:name="com.firebase.jobdispatcher.ACTION_EXECUTE" />
         </intent-filter>
      </service>
      <meta-data android:name="io.fabric.ApiKey" android:value="api key" />
      <activity android:name=".tag.settings.view.TagSettingsActivity" />
      <activity android:name=".tag.search.view.TagSearchActivity" android:label="@string/title_activity_tag_search" android:theme="@style/AppTheme" />
      <activity android:name="dotmetrics.analytics.UrlCatchActivity">
         
    
         <intent-filter tools:ignore="AppLinkUrlError">
            
    
            <action android:name="android.intent.action.VIEW" />
            
    
    
            <category android:name="android.intent.category.DEFAULT" />
            
    
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:host="hr.index.indexme" android:scheme="dotmetrics" />
            
    
         </intent-filter>
      </activity>
   </application>
</manifest>

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

Это должна быть политика проверки, когда вы публикуете sh ваше приложение в AppGallery Huawei.
Если ваше приложение зависит от сервисов Google Play, то оно не будет работать на устройствах Huawei, у которых нет сервисов Google Play; он либо создаст sh, либо покажет необходимые диалоговые окна сервисов Google Play.

Для решения этой проблемы необходимо:
1 - реализовать те же сервисы из HMS Core (например, FCM для Huawei Pu sh) и AppGallery Connect. в зависимости от доступности службы на устройстве

Кроме того, вы можете выбрать службы, которые не зависят от Google Play Services

0 голосов
/ 26 марта 2020

Ваше приложение доступно только для устройств с GMS, поскольку вы используете библиотеки Google, которые не работают на устройствах Huawei, имеющих только HMS.

Только старые телефоны Huawei имели GMS.

Чтобы исправить это Вам необходимо:

  1. Внедрить комплекты Huawei (альтернативы имеющимся у вас библиотекам Google).
  2. Создайте условия if-else в тех местах кода, где вы вызываете функции Google и функции поддержки Huawei.
  3. Протестируйте приложение и отправьте его в AppGallery.

Это работает вот так:

  1. Хорошо ли работает приложение на телефонах, имеющих только HMS?
    • Да? Отметьте его как видимый для телефонов с таким же HMS.
    • Нет? Отметьте его как невидимый для телефонов с той же HMS.
  2. Работает ли приложение на телефонах с GMS?
    • Да? Отметьте его как видимый для телефонов с GMS.
    • Нет? Отклоните приложение, потому что оно не работает вообще.

Пожалуйста, ознакомьтесь с этим ответом: Включите в проект как GMS, так и HMS

...