Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gradle java.lang.NoSuchMethodError:没有静态方法asAttributeSet(Lt/g/a/a;)Landroid/util/AttributeSet;类中的Landroid/util/Xml;_Gradle_Android App Bundle_App Bundle_Dynamic Feature Module - Fatal编程技术网

Gradle java.lang.NoSuchMethodError:没有静态方法asAttributeSet(Lt/g/a/a;)Landroid/util/AttributeSet;类中的Landroid/util/Xml;

Gradle java.lang.NoSuchMethodError:没有静态方法asAttributeSet(Lt/g/a/a;)Landroid/util/AttributeSet;类中的Landroid/util/Xml;,gradle,android-app-bundle,app-bundle,dynamic-feature-module,Gradle,Android App Bundle,App Bundle,Dynamic Feature Module,完全错误 java.lang.NoSuchMethodError:没有静态方法asAttributeSet(Lt/g/a/a;)Landroid/util/AttributeSet;类中的Landroid/util/Xml;或者它的超类(在/system/framework/framework.jar!classes2.dex中出现“android.util.Xml”声明) 我已经在play store上上传了appbundle,每当我在我的设备上从它下载应用程序时,应用程序就会崩溃,日志如下。

完全错误

java.lang.NoSuchMethodError:没有静态方法asAttributeSet(Lt/g/a/a;)Landroid/util/AttributeSet;类中的Landroid/util/Xml;或者它的超类(在/system/framework/framework.jar!classes2.dex中出现“android.util.Xml”声明)

我已经在play store上上传了appbundle,每当我在我的设备上从它下载应用程序时,应用程序就会崩溃,日志如下。。。(日志收集自所有RedMI设备android os 9、MIUI 11和10)

应用程序gradle

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'io.fabric'

android {
    lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }
    compileSdkVersion rootProject.ext.androidCompileSdkVersion
    defaultConfig {
        applicationId "xxx.yyyyyy.zzzzzz"
        minSdkVersion rootProject.ext.androidMinSdkVersion
        targetSdkVersion rootProject.ext.androidTargetSdkVersion
        versionCode 1
        versionName "1.0"
        resValue "string", "app_name", "zzzzzz"
        vectorDrawables.useSupportLibrary = true
        multiDexEnabled true
    }

    kapt {
        generateStubs = true
    }

    flavorDimensions "default"

    productFlavors {
        stage {
            applicationId "xxx.yyyyyy.zzzzzz.stage"
            versionCode 10000
            versionName "3.0.55"
            dimension "default"
        }
        dev {
            applicationId "xxx.yyyyyy.zzzzzz.dev"
            versionCode 10
            versionName "3.0.20"
            dimension "default"
        }
        prod {
            applicationId "xxx.yyyyyy.zzzzzz"
            versionCode 1000
            versionName "3.1.12"
            dimension "default"
        }
    }

    dynamicFeatures = [":apphub"]

    signingConfigs {
        release {
            storeFile file(getProjectDir().parent + "/Keystore/swipe.keystore")
        }
    }

    buildTypes {
        release {
            minifyEnabled true
            signingConfig signingConfigs.debug
            applicationVariants.all { variant ->
                renameAPK(variant)
            }
        }
    }
    compileOptions {
        sourceCompatibility = '1.8'
        targetCompatibility = '1.8'
    }

    dataBinding {
        enabled = true
    }

    dexOptions {
        javaMaxHeapSize "4g"
    }
    packagingOptions {
        pickFirst 'lib/armeabi-v7a/libRSSupport.so'
        pickFirst 'lib/arm64-v8a/libRSSupport.so'
        pickFirst 'lib/x86_64/libRSSupport.so'
        pickFirst 'lib/x86/libRSSupport.so'
        pickFirst 'lib/mips/libRSSupport.so'
        pickFirst 'lib/armeabi-v7a/librsjni.so'
        pickFirst 'lib/arm64-v8a/librsjni.so'
        pickFirst 'lib/x86_64/librsjni.so'
        pickFirst 'lib/x86/librsjni.so'
        pickFirst 'lib/mips/librsjni.so'
        pickFirst 'lib/x86_64/librsjni_androidx.so'
        pickFirst 'lib/armeabi-v7a/librsjni_androidx.so'
        pickFirst 'lib/x86/librsjni_androidx.so'
        pickFirst 'lib/arm64-v8a/librsjni_androidx.so'
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "com.android.support:support-v4:$supportLibraryVersion"
    implementation "com.android.support.constraint:constraint-layout:$contraintLayoutVersion"

    // Android Support libs
    implementation "com.android.support:appcompat-v7:$supportLibraryVersion"
    implementation "com.android.support:design:$supportLibraryVersion"
    implementation "com.android.support.constraint:constraint-layout:$contraintLayoutVersion"
    implementation "com.android.support:cardview-v7:$supportLibraryVersion"
    implementation "com.android.support:recyclerview-v7:$supportLibraryVersion"

    // Kotlin libs
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    // Retrofit, GSON and OkHttp
    implementation "com.squareup.retrofit2:retrofit:$retrofitLibraryVersion"
    implementation "com.google.code.gson:gson:$gsonLibraryVersion"
    implementation "com.squareup.retrofit2:converter-gson:$retrofitLibraryVersion"
    implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofitLibraryVersion"
    implementation "io.reactivex.rxjava2:rxandroid:$rxAndroidVersion"
    implementation "com.squareup.okhttp3:okhttp:$okHttpLibraryVersion"
    implementation "com.squareup.okhttp3:logging-interceptor:$okHttpLibraryVersion"

    // Architecture Libs
    implementation "android.arch.lifecycle:extensions:$archVersion"
    implementation "android.arch.persistence.room:runtime:$archVersion"
    implementation "android.arch.lifecycle:runtime:$archVersion"
    implementation "android.arch.persistence.room:rxjava2:$archVersion"
    kapt "android.arch.lifecycle:compiler:$archVersion"
    kapt "android.arch.persistence.room:compiler:$archVersion"
    implementation "android.arch.paging:runtime:$pagingVersion"
    implementation "android.arch.work:work-runtime-ktx:$workerVersion"

    // Picasso
    implementation "com.squareup.picasso:picasso:$picassoLibraryVersion"

    //GCM libs
    implementation "com.google.android.gms:play-services-location:$playserviceLibraryVersion"

    // Google places
    implementation "com.google.android.gms:play-services-places:$playserviceLibraryVersion"

    //google auth
    implementation 'com.google.android.gms:play-services-auth:16.0.1'

    // Exo player lib
    implementation 'com.google.android.exoplayer:exoplayer:2.9.1'
    implementation 'com.pierfrancescosoffritti.androidyoutubeplayer:core:8.0.1'
    implementation('com.crashlytics.sdk.android:crashlytics:2.9.5@aar') {
        transitive = true
    }

    // library for generating QR code
    implementation 'com.google.zxing:core:3.3.0'
    implementation 'com.journeyapps:zxing-android-embedded:3.3.0@aar'
    implementation 'com.intuit.sdp:sdp-android:1.0.5'
    implementation 'com.intuit.ssp:ssp-android:1.0.5'
    implementation 'com.github.bumptech.glide:glide:4.9.0'
    implementation('com.github.bumptech.glide:okhttp3-integration:4.9.0') {
        exclude group: 'glide-parent'
    }

    // MixPanel analytics & Play Service GCM
    implementation 'com.mixpanel.android:mixpanel-android:5.4.1'
    implementation "com.google.android.gms:play-services-gcm:$playserviceLibraryVersion"
    implementation "com.google.firebase:firebase-core:$firebaseCoreVersion"
    implementation "com.google.firebase:firebase-messaging:$firebaseMessagingVersion"

    // Skeleton view lib
    implementation 'com.ethanhua:skeleton:1.1.1'
    implementation 'io.supercharge:shimmerlayout:2.1.0'

    //ProgressDialog
    implementation 'com.wang.avi:library:2.1.3'
    implementation 'com.facebook.android:facebook-login:5.0.0'
    implementation project(':banking')
    implementation project(':content')
    implementation project(':messaging')
    implementation project(':shopping')
    implementation project(':base')
    implementation project(':travel')
    implementation project(':event')
    implementation 'com.github.GoodieBag:Pinview:v1.3'
    debugImplementation 'com.amitshekhar.android:debug-db:1.0.6'
    implementation 'com.appsflyer:af-android-sdk:4.9.0'
    implementation 'com.android.installreferrer:installreferrer:1.0'
    implementation 'com.makeramen:roundedimageview:2.3.0'
    implementation "ru.tinkoff.scrollingpagerindicator:scrollingpagerindicator:1.0.6"
    implementation "com.daimajia.swipelayout:library:1.2.0@aar"
    implementation 'io.branch.sdk.android:library:3.1.0'

    //dynamic feature
    implementation 'com.google.android.play:core:1.4.1'

}
repositories {
    mavenCentral()
    google()
    maven { url 'https://maven.fabric.io/public' }
    maven { url "https://jitpack.io" }
}
configurations {
    compile.exclude group: 'androidx.annotation', module: 'annotation'
}

configurations.all {
    resolutionStrategy.force 'com.android.support:support-v4:28.0.0'
}
static def renameAPK(variant) {
    variant.outputs.all { output ->
        def formattedDate = new Date().format('dd-MM-YYYY')
        def projectName = variant.mergedFlavor.resValues.get('app_name').getValue()
        def projectVersionName = "_v" + variant.productFlavors.get(0).versionName
        def projectBuildCode = "_b" + variant.productFlavors.get(0).versionCode
        def buildDate = "_d" + formattedDate
        def flavorsName = "_" + variant.productFlavors.get(0).name
        def flavorsType = "_" + variant.variantData.variantConfiguration.buildType.name
        def fileName = projectName + projectVersionName + projectBuildCode + buildDate + flavorsName + flavorsType + ".apk"
        outputFileName = fileName
    }
}

apply plugin: 'com.google.gms.google-services'
dynamicModule build.gradle(apphub)

动态模块androidManifest.xml(apphub)

app模块的proguard

# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /Users/mavya.soni/Desktop/Software/AndroidTools/sdk/android-sdk-macosx/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-keep class sun.misc.Unsafe { *; }
-dontwarn java.nio.file.*
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn okio.**
# OkHttp
-keepattributes Signature
-keepattributes *Annotation*
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**
# Retrofit 2.X
## https://square.github.io/retrofit/ ##

-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions

-keepclasseswithmembers class * {
    @retrofit2.http.* <methods>;
}

## Square Picasso specific rules ##
## https://square.github.io/picasso/ ##

-dontwarn com.squareup.okhttp.**

## Rxjava
-dontwarn sun.misc.**


# rxjava
-keep class rx.schedulers.Schedulers {
    public static <methods>;
}
-keep class rx.schedulers.ImmediateScheduler {
    public <methods>;
}
-keep class rx.schedulers.TestScheduler {
    public <methods>;
}
-keep class rx.schedulers.Schedulers {
    public static ** test();
}
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
    long producerIndex;
    long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
    long producerNode;
    long consumerNode;
}

-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
   long producerIndex;
   long consumerIndex;
}

-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
    rx.internal.util.atomic.LinkedQueueNode producerNode;
}

-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
    rx.internal.util.atomic.LinkedQueueNode consumerNode;
}

-dontnote rx.internal.util.PlatformDependent

## Android architecture components: Lifecycle
# LifecycleObserver's empty constructor is considered to be unused by proguard
-keepclassmembers class * implements android.arch.lifecycle.LifecycleObserver {
    <init>(...);
}
# ViewModel's empty constructor is considered to be unused by proguard
-keepclassmembers class * extends android.arch.lifecycle.ViewModel {
    <init>(...);
}
# keep Lifecycle State and Event enums values
-keepclassmembers class android.arch.lifecycle.Lifecycle$State { *; }
-keepclassmembers class android.arch.lifecycle.Lifecycle$Event { *; }
# keep methods annotated with @OnLifecycleEvent even if they seem to be unused
# (Mostly for LiveData.LifecycleBoundObserver.onStateChange(), but who knows)
-keepclassmembers class * {
    @android.arch.lifecycle.OnLifecycleEvent *;
}

-keepclassmembers class * implements android.arch.lifecycle.LifecycleObserver {
    <init>(...);
}

-keep class * implements android.arch.lifecycle.LifecycleObserver {
    <init>(...);
}
-keepclassmembers class android.arch.** { *; }
-keep class android.arch.** { *; }
-dontwarn android.arch.**

-keepclasseswithmembernames class * {
   native <methods>;
}
-ignorewarnings

-keep class android.support.v8.renderscript.** { *; }

-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**

### OKIO

# java.nio.file.* usage which cannot be used at runtime. Animal sniffer annotation.
-dontwarn okio.Okio
# JDK 7-only method which is @hide on Android. Animal sniffer annotation.
-dontwarn okio.DeflaterSink



# com.google.zxing lib

# test thoroughly if you go this route.
-optimizations !code/simplification/cast,!field/*,!class/merging/*,!class/unboxing/enum,!code/allocation/variable,!method/marking/private
-optimizationpasses 5
-allowaccessmodification
-dontpreverify

# The remainder of this file is identical to the non-optimized version
# of the Proguard configuration file (except that the other file has
# flags to turn off optimization).

-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose

# ADDED
-dontshrink
#-dontobfuscate

-keepattributes *Annotation*
-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService

# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
-keepclasseswithmembernames class * {
    native <methods>;
}

# keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.net/manual/examples.html#beans
-keepclassmembers public class * extends android.view.View {
   void set*(***);
   *** get*();
}

# We want to keep methods in Activity that could be used in the XML attribute onClick
-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

-keepclassmembers class **.R$* {
    public static <fields>;
}


-keep class android.databinding.** { *; }
-keepnames class * implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    !static !transient <fields>;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}
-keepattributes *Annotation*
#-keepattributes javax.xml.bind.annotation.*



#-keepattributes javax.annotation.processing.*
-keepclassmembers class * extends java.lang.Enum { *; }
-keepclasseswithmembernames class android.**
-keepclasseswithmembernames interface android.**
#-dontobfuscate
-libraryjars  <java.home>/lib/rt.jar
-libraryjars  <java.home>/lib/jce.jar
-dontwarn


# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version.  We know about them, and they are safe.
-dontwarn android.support.**
#-printmapping prod/release/mapping/mapping.txt

-keepattributes Signature

# For using GSON @Expose annotation
-keepattributes *Annotation*

# Gson specific classes
-dontwarn sun.misc.**
#-keep class com.google.gson.stream.** { *; }

# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }

-keep class com.wang.avi.** { *; }
-keep class com.wang.avi.indicators.** { *; }


# Prevent proguard from stripping interface information from TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer

##---------------End: proguard configuration for Gson  ----------

-keep class * implements com.coremedia.iso.boxes.Box {* ; }
-dontwarn com.coremedia.iso.boxes.*
-dontwarn com.googlecode.mp4parser.authoring.tracks.mjpeg.**
-dontwarn com.googlecode.mp4parser.authoring.tracks.ttml.**

# Preserve annotations, line numbers, and source file names
-keepattributes *Annotation*,SourceFile,LineNumberTable

-keep class com.appsflyer.** { *; }


# Proguard rule for XMLResourceParser
-keep class org.xmlpull.v1.** { *; }
-dontwarn org.xmlpull.v1.**

-dontwarn com.android.installreferrer.api.**
#在此处添加特定于项目的程序规则。
#默认情况下,此文件中的标志附加到指定的标志
#在/Users/mavya.soni/Desktop/Software/AndroidTools/sdk/android-sdk-macosx/tools/proguard/proguard-android.txt中
#您可以通过更改文件来编辑包含路径和顺序
#build.gradle中的指令。
#
#有关详细信息,请参阅
#   http://developer.android.com/guide/developing/tools/proguard.html
#在此处添加任何特定于项目的保留选项:
#如果您的项目使用带JS的WebView,请取消注释以下内容
#并为JavaScript接口指定完全限定的类名
#类别:
#-keepclassmembers类fqcn.of.javascript.interface.for.webview{
#公众*;
#}
#取消对此的注释以保留行号信息
#调试堆栈跟踪。
#-keepattributes源文件,LineNumberTable
#如果保留行号信息,请将其取消注释为
#隐藏原始源文件名。
#-重命名SourceFileAttribute源文件
-保持类sun.misc.Unsafe{*;}
-dontwarn java.nio.file*
-dontwarn org.codehaus.mojo.animal_sniffer.ignorejrrequirement
-唐特沃恩·奥基奥**
#OkHttp
-保留署名
-keepattributes*注释*
-保持类okhttp3.*{*;}
-保持接口okhttp3.*{*;}
-dontwarn okhttp3**
#改装2.X
## https://square.github.io/retrofit/ ##
-dontwarn 2**
-保持类2.*{*;}
-保留署名
-保留特例
-keepclassswithmembers类*{
@2.http.*;
}
##方形毕加索特定规则##
## https://square.github.io/picasso/ ##
-dontwarn com.squareup.okhttp**
##Rxjava
-dontwarn sun.misc**
#rxjava
-保持类rx.schedulers.schedulers{
公共静态;
}
-保持类rx.schedulers.ImmediateScheduler{
公众;
}
-保留类rx.schedulers.TestScheduler{
公众;
}
-保持类rx.schedulers.schedulers{
公共静态**测试();
}
-keepclassmembers类rx.internal.util.unsafe.*数组队列*字段*{
长生产指数;
长消费指数;
}
-keepclassmembers类rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef{
长生产节点;
长消费节点;
}
-keepclassmembers类rx.internal.util.unsafe.*数组队列*字段*{
长生产指数;
长消费指数;
}
-keepclassmembers类rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef{
rx.internal.util.atomic.LinkedQueueNode生产节点;
}
-keepclassmembers类rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef{
rx.internal.util.atomic.LinkedQueueNode consumerNode;
}
-dontnote rx.internal.util.PlatformDependent
##Android架构组件:生命周期
#proguard认为LifecycleObserver的空构造函数未使用
-keepclassmembers类*实现android.arch.lifecycle.LifecycleObserver{
(...);
}
#proguard认为ViewModel的空构造函数未使用
-keepclassmembers类*扩展了android.arch.lifecycle.ViewModel{
(...);
}
#保留生命周期状态和事件枚举值
-keepclassmembers类android.arch.lifecycle.lifecycle$State{*;}
-keepclassmembers类android.arch.lifecycle.lifecycle$Event{*;}
#即使方法似乎未使用,也要使用@OnLifecycleEvent对其进行注释
#(主要针对LiveData.LifecycleBoundObserver.onStateChange(),但谁知道呢)
-keepclassmembers类*{
@android.arch.lifecycleEvent*;
}
-keepclassmembers类*实现android.arch.lifecycle.LifecycleObserver{
(...);
}
-keep class*实现android.arch.lifecycle.LifecycleObserver{
(...);
}
-keepclassmembers类android.arch.*{*;}
-保持类android.arch.*{*;}
-dontwarn android.arch**
-KeepClassSwithMemberNames类*{
本地人;
}
-忽视警告
-保留类android.support.v8.renderscript.*{*;}
-保持类com.crashlytics.*{*;}
-dontwarn com.crashlytics**
###奥基奥
#java.nio.file.*无法在运行时使用的用法。动物嗅探注释。
-唐特沃恩·奥基奥,奥基奥
#JDK 7-only方法,在Android上为@hide。动物嗅探注释。
-dontwarn okio.DeflaterSink
#com.google.zxing lib
#如果你走这条路,要彻底测试。
-优化!代码/简化/转换,!字段/*,!类/合并/*,!类/取消装箱/枚举,!代码/分配/变量,!方法/标记/专用
-优化过程5
-允许访问修改
-不要翻转
#此文件的其余部分与未优化版本相同
#Proguard配置文件(除了另一个文件
#关闭优化的标志)。
-dontusemixedcaseclassnames
-DontskipnonPublicLibraryClass
-冗长的
#增加
-dontshrink
#-顿托夫斯卡特
-keepattributes*注释*
-保持公共类com.google.vending.licensing.ILicensingService
-保持公共类com.android.vending.licensing.ILicensingService
#有关本机方法,请参见http://proguard.sourceforge.net/manual/examples.html#native
-KeepClassSwithMemberNames类*{
本地人;
}
#在视图中保留setter,以便动画仍然可以工作。
#看http://proguard.sourceforge.net/manual/examples.html#beans
-keepclassmembers公共类*扩展了android.view.view{
无效集*(***);
***得到*();
}
#我们希望在活动中保留可以在XML属性onClick中使用的方法
-keepclassmembers类*扩展了
apply plugin: 'com.android.dynamic-feature'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

androidExtensions {
  experimental = true
}
android {
  compileSdkVersion rootProject.ext.androidCompileSdkVersion

  defaultConfig {
    minSdkVersion rootProject.ext.androidMinSdkVersion
    targetSdkVersion rootProject.ext.androidTargetSdkVersion
    versionCode 1
    versionName "1.0"
    vectorDrawables.useSupportLibrary = true
  }
  flavorDimensions "default"
  productFlavors {
    stage {
      applicationId "xxx.yyyyyy.zzzzzz.stage"
      versionCode 10000
      versionName "2.12"
      dimension "default"
    }
    dev {
      applicationId "xxx.yyyyyy.zzzzzz.dev"
      versionCode 10
      versionName "0.16"
      dimension "default"
    }
    prod {
      applicationId "xxx.yyyyyy.zzzzzz.apphub"
      versionCode 1000
      versionName "3.1.12"
      dimension "default"
    }
  }

  dataBinding {
    enabled = true
  }

  kapt {
    generateStubs = true
  }

  compileOptions {
    sourceCompatibility 1.8
    targetCompatibility 1.8
  }
}

dependencies {
  implementation fileTree(dir: 'libs', include: ['*.jar'])
  implementation project(':app')
  implementation project(':base')
  implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
  implementation "com.android.support:appcompat-v7:$supportLibraryVersion"
  implementation "com.android.support.constraint:constraint-layout:$contraintLayoutVersion"
  implementation "com.android.support:design:$supportLibraryVersion"
  implementation 'com.intuit.sdp:sdp-android:1.0.5'
  implementation 'com.intuit.ssp:ssp-android:1.0.5'
  implementation "com.squareup.picasso:picasso:$picassoLibraryVersion"
  implementation "com.google.code.gson:gson:$gsonLibraryVersion"
  implementation "android.arch.lifecycle:extensions:$archVersion"
  implementation "com.android.support:cardview-v7:$supportLibraryVersion"
  implementation "com.squareup.retrofit2:retrofit:$retrofitLibraryVersion"
  implementation "com.google.code.gson:gson:$gsonLibraryVersion"
  implementation "com.squareup.retrofit2:converter-gson:$retrofitLibraryVersion"
  implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofitLibraryVersion"
  implementation "io.reactivex.rxjava2:rxandroid:$rxAndroidVersion"
  implementation "com.squareup.okhttp3:okhttp:$okHttpLibraryVersion"
  implementation "com.squareup.okhttp3:logging-interceptor:$okHttpLibraryVersion"
  implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
  implementation 'com.google.android.exoplayer:exoplayer:2.9.1'
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:dist="http://schemas.android.com/apk/distribution"
    package="xxx.yyyyyy.zzzzzz.apphub">

  <dist:module
      dist:onDemand="false"
      dist:instant="false"
      dist:title="@string/title_app_hub">
    <dist:fusing dist:include="true"/>
  </dist:module>

  <application>
    <activity
      android:name="xxx.yyyyyy.zzzzzz.qqqqqqqqq.aaaaaaaaa.AppHubActivity"
      android:windowSoftInputMode="stateHidden|adjustPan"
      android:screenOrientation="portrait" />
  </application>

</manifest>
private fun installDynamicModule(intent: Intent) {
        val int:Intent = intent
        var manager: SplitInstallManager = SplitInstallManagerFactory.create(this@MainActivity)
        val request: SplitInstallRequest = SplitInstallRequest.newBuilder().addModule("apphub").build()
        if (manager.installedModules.contains("apphub")) {
            startActivity(int)
            Log.e("main","main: activity start without download")
        } else{
            manager.startInstall(request)
                    .addOnSuccessListener {
                        Toast.makeText(this@MainActivity, "Download Success", Toast.LENGTH_SHORT).show()
                        Log.e("main","main: addOnSuccessListener")
                    }
                    .addOnFailureListener {
                        Toast.makeText(this@MainActivity, "Download Fail", Toast.LENGTH_SHORT).show()
                        Log.e("main","main: addOnFailureListener")
                    }
                    .addOnCompleteListener {
                        startActivity(int)
                        Toast.makeText(this@MainActivity, "Download Complete", Toast.LENGTH_SHORT).show()
                        Log.e("main","main: addOnCompleteListener")
                    }
        }
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /Users/mavya.soni/Desktop/Software/AndroidTools/sdk/android-sdk-macosx/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-keep class sun.misc.Unsafe { *; }
-dontwarn java.nio.file.*
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn okio.**
# OkHttp
-keepattributes Signature
-keepattributes *Annotation*
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**
# Retrofit 2.X
## https://square.github.io/retrofit/ ##

-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions

-keepclasseswithmembers class * {
    @retrofit2.http.* <methods>;
}

## Square Picasso specific rules ##
## https://square.github.io/picasso/ ##

-dontwarn com.squareup.okhttp.**

## Rxjava
-dontwarn sun.misc.**


# rxjava
-keep class rx.schedulers.Schedulers {
    public static <methods>;
}
-keep class rx.schedulers.ImmediateScheduler {
    public <methods>;
}
-keep class rx.schedulers.TestScheduler {
    public <methods>;
}
-keep class rx.schedulers.Schedulers {
    public static ** test();
}
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
    long producerIndex;
    long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
    long producerNode;
    long consumerNode;
}

-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
   long producerIndex;
   long consumerIndex;
}

-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
    rx.internal.util.atomic.LinkedQueueNode producerNode;
}

-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
    rx.internal.util.atomic.LinkedQueueNode consumerNode;
}

-dontnote rx.internal.util.PlatformDependent

## Android architecture components: Lifecycle
# LifecycleObserver's empty constructor is considered to be unused by proguard
-keepclassmembers class * implements android.arch.lifecycle.LifecycleObserver {
    <init>(...);
}
# ViewModel's empty constructor is considered to be unused by proguard
-keepclassmembers class * extends android.arch.lifecycle.ViewModel {
    <init>(...);
}
# keep Lifecycle State and Event enums values
-keepclassmembers class android.arch.lifecycle.Lifecycle$State { *; }
-keepclassmembers class android.arch.lifecycle.Lifecycle$Event { *; }
# keep methods annotated with @OnLifecycleEvent even if they seem to be unused
# (Mostly for LiveData.LifecycleBoundObserver.onStateChange(), but who knows)
-keepclassmembers class * {
    @android.arch.lifecycle.OnLifecycleEvent *;
}

-keepclassmembers class * implements android.arch.lifecycle.LifecycleObserver {
    <init>(...);
}

-keep class * implements android.arch.lifecycle.LifecycleObserver {
    <init>(...);
}
-keepclassmembers class android.arch.** { *; }
-keep class android.arch.** { *; }
-dontwarn android.arch.**

-keepclasseswithmembernames class * {
   native <methods>;
}
-ignorewarnings

-keep class android.support.v8.renderscript.** { *; }

-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**

### OKIO

# java.nio.file.* usage which cannot be used at runtime. Animal sniffer annotation.
-dontwarn okio.Okio
# JDK 7-only method which is @hide on Android. Animal sniffer annotation.
-dontwarn okio.DeflaterSink



# com.google.zxing lib

# test thoroughly if you go this route.
-optimizations !code/simplification/cast,!field/*,!class/merging/*,!class/unboxing/enum,!code/allocation/variable,!method/marking/private
-optimizationpasses 5
-allowaccessmodification
-dontpreverify

# The remainder of this file is identical to the non-optimized version
# of the Proguard configuration file (except that the other file has
# flags to turn off optimization).

-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose

# ADDED
-dontshrink
#-dontobfuscate

-keepattributes *Annotation*
-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService

# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
-keepclasseswithmembernames class * {
    native <methods>;
}

# keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.net/manual/examples.html#beans
-keepclassmembers public class * extends android.view.View {
   void set*(***);
   *** get*();
}

# We want to keep methods in Activity that could be used in the XML attribute onClick
-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

-keepclassmembers class **.R$* {
    public static <fields>;
}


-keep class android.databinding.** { *; }
-keepnames class * implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    !static !transient <fields>;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}
-keepattributes *Annotation*
#-keepattributes javax.xml.bind.annotation.*



#-keepattributes javax.annotation.processing.*
-keepclassmembers class * extends java.lang.Enum { *; }
-keepclasseswithmembernames class android.**
-keepclasseswithmembernames interface android.**
#-dontobfuscate
-libraryjars  <java.home>/lib/rt.jar
-libraryjars  <java.home>/lib/jce.jar
-dontwarn


# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version.  We know about them, and they are safe.
-dontwarn android.support.**
#-printmapping prod/release/mapping/mapping.txt

-keepattributes Signature

# For using GSON @Expose annotation
-keepattributes *Annotation*

# Gson specific classes
-dontwarn sun.misc.**
#-keep class com.google.gson.stream.** { *; }

# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }

-keep class com.wang.avi.** { *; }
-keep class com.wang.avi.indicators.** { *; }


# Prevent proguard from stripping interface information from TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer

##---------------End: proguard configuration for Gson  ----------

-keep class * implements com.coremedia.iso.boxes.Box {* ; }
-dontwarn com.coremedia.iso.boxes.*
-dontwarn com.googlecode.mp4parser.authoring.tracks.mjpeg.**
-dontwarn com.googlecode.mp4parser.authoring.tracks.ttml.**

# Preserve annotations, line numbers, and source file names
-keepattributes *Annotation*,SourceFile,LineNumberTable

-keep class com.appsflyer.** { *; }


# Proguard rule for XMLResourceParser
-keep class org.xmlpull.v1.** { *; }
-dontwarn org.xmlpull.v1.**

-dontwarn com.android.installreferrer.api.**
-dontwarn org.xmlpull.v1.XmlPullParser
-dontwarn org.xmlpull.v1.XmlSerializer
-keep class org.xmlpull.v1.* {*;}