Android 无法解析配置CompileClasspath的所有文件
我试图用“.\gradlew AssembledUng”运行我的项目,但我一直得到这个输出Android 无法解析配置CompileClasspath的所有文件,android,gradle,android-gradle-plugin,Android,Gradle,Android Gradle Plugin,我试图用“.\gradlew AssembledUng”运行我的项目,但我一直得到这个输出 Could not resolve all files for configuration ':app:mobileGoogleZappDebugCompileClasspath'. > Could not resolve com.applicaster:GrandeFamily:0.3.+. Required by: project :app > Failed to l
Could not resolve all files for configuration ':app:mobileGoogleZappDebugCompileClasspath'.
> Could not resolve com.applicaster:GrandeFamily:0.3.+.
Required by:
project :app
> Failed to list versions for com.applicaster:GrandeFamily.
> Unable to load Maven meta-data from https://dl.bintray.com/applicaster-ltd/maven/com/applicaster/GrandeFamily/maven-metadata.xml.
> Could not get resource 'https://dl.bintray.com/applicaster-ltd/maven/com/applicaster/GrandeFamily/maven-metadata.xml'.
> java.lang.NullPointerException (no error message)
我在网上寻找答案,但大多数人只是说要改变google()
、maven()
和jcenter()
的顺序,但没有帮助
这是我的项目级渐变文件:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.2.0'
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
classpath 'com.google.android.gms:strict-version-matcher-plugin:1.0.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
maven { url 'https://maven.google.com' }
maven { url 'https://jitpack.io' }
maven {
credentials{
username System.getenv("MAVEN_USERNAME")
password System.getenv("MAVEN_PASSWORD")
}
url 'https://dl.bintray.com/applicaster-ltd/maven'
}
maven {
url "$rootDir/node_modules/react-native/android"
}
maven {
url "$rootDir/.m2"
}
maven {
url "https://dl.bintray.com/applicaster-ltd/maven_plugins"
}
maven {
url "https://mvn.jwplayer.com/content/repositories/releases/"
}
maven {
url "https://dl.bintray.com/applicaster-ltd/maven_plugins/"
}
maven { url 'https://github.com/applicaster/APLiveScreenPro7-RN.git' }
}
}
/**
* Auto-generated from .env build configuration.
*/
ext.dimensionsConfig = [
"platform": "mobile", // ["google", "amazon"]
"vendor": "google", // ["mobile", "tv"]
"flavor": "zapp", // ["zapp", "quickbrick"]
]
/**
* Order of dimensions is critical! platform > vendor > flavor
*/
ext.zappProductFlavors = [
mobile: "platform",
tv: "platform",
google: "vendor",
amazon: "vendor",
zapp: "flavor",
quickbrick: "flavor",
]
ext.zappProductFlavorsMap = {
zappProductFlavors.each { key, dim ->
"${key}" { dimension "${dim}" }
}
}
subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
flavorDimensions dimensionsConfig.keySet() as String[]
productFlavors zappProductFlavorsMap
}
/**
* Reject all variants that are not relevant for the current build -
* you should be left with two only, debug and release.
* e.g.: "mobileGoogleZappDebug/Release" or "tvAmazonZappDebug/Release" etc.
*/
android.variantFilter { variant ->
for (flavor in variant.getFlavors()) {
if (flavor.name != dimensionsConfig[flavor.dimension]) {
variant.setIgnore(true)
}
}
}
}
}
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
buildToolsVersion "28.0.3"
defaultConfig {
applicationId "com.protvromania"
minSdkVersion 19
targetSdkVersion 28
versionCode 273
versionName "1.0.4-alpha.3"
manifestPlaceholders = [
app_name: "PROTV",
fb_app_id: "1147926948637494",
]
multiDexEnabled true
renderscriptSupportModeEnabled true
ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
dexOptions {
jumboMode = true
preDexLibraries = false
javaMaxHeapSize "4g"
}
packagingOptions {
// Common
pickFirst 'META-INF/NOTICE.txt'
pickFirst 'META-INF/LICENSE.txt'
pickFirst 'META-INF/LICENSE'
pickFirst 'META-INF/ASL2.0'
pickFirst 'META-INF/NOTICE'
pickFirst 'META-INF/MANIFEST.MF'
// https://github.com/ReactiveX/RxJava/issues/4445
pickFirst 'META-INF/rxjava.properties'
// This IMA hack is resolved with gradle wrapper version 2.3.3 - it's kept here for backward compatability - can be removed after a while.
exclude 'jsr305_annotations/Jsr305_annotations.gwt.xml'
}
signingConfigs {
release {
storeFile file("../dist.keystore")
storePassword ""
keyAlias ""
keyPassword ""
}
}
buildTypes {
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
/**
* See top-level build.gradle for:
* - Dimension configuration of the specific build
* - All product flavors mapping
*/
flavorDimensions dimensionsConfig.keySet() as String[]
productFlavors zappProductFlavorsMap
}
/*
* Create alias for the generated mobile flavors combination,
* to keep backward compatibility without modifying CircleCI code.
* e.g.: "apk/mobile/app-mobile-debug.apk" will actually point to "apk/mobileGoogleZapp/debug/app-mobile-google-zapp-debug.apk"
*/
ext.createMobileShortcut = { runtimeBuildType ->
if (dimensionsConfig.platform == 'mobile') {
def vendor = dimensionsConfig.vendor
def flavor = dimensionsConfig.flavor
def mobilePath = "app/build/outputs/apk/mobile/" + runtimeBuildType
def apkPath = mobilePath + "/app-mobile-" + runtimeBuildType + ".apk"
def compatibilityApkPath = "app/build/outputs/apk/app-mobile-" + runtimeBuildType + ".apk"
def mobileApk = new File(apkPath)
if (!mobileApk.exists()) {
new File(mobilePath).mkdirs()
def baseDirectory = System.getProperty("user.dir")
def existingApkPath = baseDirectory + '/app/build/outputs/apk/mobile' + vendor.capitalize() + flavor.capitalize() + '/' + runtimeBuildType + '/app-mobile-' + vendor + '-' + flavor + '-' + runtimeBuildType + '.apk'
['ln', '-s', existingApkPath, apkPath].execute().waitFor()
['ln', '-s', existingApkPath, compatibilityApkPath].execute().waitFor()
new File("app/build/outputs/mapping/mobile/" + runtimeBuildType).mkdirs()
['ln', '-s', baseDirectory + '/app/build/outputs/mapping/mobile' + vendor.capitalize() + flavor.capitalize() + '/' + runtimeBuildType + '/mapping.txt', 'app/build/outputs/mapping/mobile/' + runtimeBuildType + '/mapping.txt'].execute().waitFor()
}
}
}
/**
* Create alias for the generated tv flavors combination, see example in createMobileShortcut
*/
ext.createTvShortcut = { runtimeBuildType ->
if (dimensionsConfig.platform == 'tv') {
def vendor = dimensionsConfig.vendor
def flavor = dimensionsConfig.flavor
def tvPath = "app/build/outputs/apk/tv/" + runtimeBuildType
def apkPath = tvPath + "/app-tv-" + runtimeBuildType + ".apk"
def tvApk = new File(apkPath)
if (!tvApk.exists()) {
new File(tvPath).mkdirs()
['ln', '-s', System.getProperty("user.dir") + '/app/build/outputs/apk/tv' + vendor.capitalize() + flavor.capitalize() + '/' + runtimeBuildType + '/app-tv-' + vendor + '-' + flavor + '-' + runtimeBuildType + '.apk', apkPath].execute().waitFor()
new File("app/build/outputs/mapping/tv/" + runtimeBuildType).mkdirs()
['ln', '-s', System.getProperty("user.dir") + '/app/build/outputs/mapping/tv' + vendor.capitalize() + flavor.capitalize() + '/' + runtimeBuildType + '/mapping.txt', 'app/build/outputs/mapping/tv/' + runtimeBuildType + '/mapping.txt'].execute().waitFor()
}
}
}
ext.dimensionedBuildTaskName = { suffix ->
def capitalizedDimensions = dimensionsConfig.inject([]) { r, v -> r << v.value.capitalize() }.join("")
'assemble' + capitalizedDimensions + suffix.capitalize()
}
/**
* Helper closure for creating paths - no more slash bugs
*/
ext.combinePaths = { paths ->
if (paths in String) paths = [paths] // be nice and return a proper path also with a single String
def file = new File("")
paths.each { path ->
file = new File(file.getPath(), path)
}
file.getPath()
}
task assembleMobileDebug() {
dependsOn dimensionedBuildTaskName('debug')
doLast {
createMobileShortcut('debug')
}
}
task assembleMobileRelease() {
dependsOn dimensionedBuildTaskName('release')
doLast {
createMobileShortcut('release')
}
}
task assembleTvDebug() {
dependsOn dimensionedBuildTaskName('debug')
doLast {
createTvShortcut('debug')
}
}
task assembleTvRelease() {
dependsOn dimensionedBuildTaskName('release')
doLast {
createTvShortcut('release')
}
}
if (System.getenv("CIRCLECI")) {
android.signingConfigs.debug.storeFile = file("../debug.keystore")
}
dependencies {
implementation ("com.applicaster:JWPlayerPlugin:1.5.+") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:GrandeFamily:0.3.+") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:ChagresFamily:0.3.2") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:LermaFamily:0.3.+") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:RhineFamily:0.4.4") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:BottomTabBarMenu-Android:5.1.0") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:FirebaseAnalyticsPlugin:2.3.0") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:DanubeFamily:0.4.+") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:DFP-Plugin:0.3.+") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:GoogleAnalyticsProvider:3.1.0") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:protv-login-plugin:0.2.+") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:ColoradoFamily:0.4.0") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:ElbeFamily:0.9.+") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:urbanAirship-Android:2.0.0") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
api 'com.applicaster:applicaster-modular-sdk:100.0.0'
implementation (project(':react-native-linear-gradient')) {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
}
implementation (project(':react-native-svg')) {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
}
}
apply plugin: 'com.google.android.gms.strict-version-matcher-plugin'
这是我的应用程序级渐变文件:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.2.0'
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
classpath 'com.google.android.gms:strict-version-matcher-plugin:1.0.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
maven { url 'https://maven.google.com' }
maven { url 'https://jitpack.io' }
maven {
credentials{
username System.getenv("MAVEN_USERNAME")
password System.getenv("MAVEN_PASSWORD")
}
url 'https://dl.bintray.com/applicaster-ltd/maven'
}
maven {
url "$rootDir/node_modules/react-native/android"
}
maven {
url "$rootDir/.m2"
}
maven {
url "https://dl.bintray.com/applicaster-ltd/maven_plugins"
}
maven {
url "https://mvn.jwplayer.com/content/repositories/releases/"
}
maven {
url "https://dl.bintray.com/applicaster-ltd/maven_plugins/"
}
maven { url 'https://github.com/applicaster/APLiveScreenPro7-RN.git' }
}
}
/**
* Auto-generated from .env build configuration.
*/
ext.dimensionsConfig = [
"platform": "mobile", // ["google", "amazon"]
"vendor": "google", // ["mobile", "tv"]
"flavor": "zapp", // ["zapp", "quickbrick"]
]
/**
* Order of dimensions is critical! platform > vendor > flavor
*/
ext.zappProductFlavors = [
mobile: "platform",
tv: "platform",
google: "vendor",
amazon: "vendor",
zapp: "flavor",
quickbrick: "flavor",
]
ext.zappProductFlavorsMap = {
zappProductFlavors.each { key, dim ->
"${key}" { dimension "${dim}" }
}
}
subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
flavorDimensions dimensionsConfig.keySet() as String[]
productFlavors zappProductFlavorsMap
}
/**
* Reject all variants that are not relevant for the current build -
* you should be left with two only, debug and release.
* e.g.: "mobileGoogleZappDebug/Release" or "tvAmazonZappDebug/Release" etc.
*/
android.variantFilter { variant ->
for (flavor in variant.getFlavors()) {
if (flavor.name != dimensionsConfig[flavor.dimension]) {
variant.setIgnore(true)
}
}
}
}
}
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
buildToolsVersion "28.0.3"
defaultConfig {
applicationId "com.protvromania"
minSdkVersion 19
targetSdkVersion 28
versionCode 273
versionName "1.0.4-alpha.3"
manifestPlaceholders = [
app_name: "PROTV",
fb_app_id: "1147926948637494",
]
multiDexEnabled true
renderscriptSupportModeEnabled true
ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
dexOptions {
jumboMode = true
preDexLibraries = false
javaMaxHeapSize "4g"
}
packagingOptions {
// Common
pickFirst 'META-INF/NOTICE.txt'
pickFirst 'META-INF/LICENSE.txt'
pickFirst 'META-INF/LICENSE'
pickFirst 'META-INF/ASL2.0'
pickFirst 'META-INF/NOTICE'
pickFirst 'META-INF/MANIFEST.MF'
// https://github.com/ReactiveX/RxJava/issues/4445
pickFirst 'META-INF/rxjava.properties'
// This IMA hack is resolved with gradle wrapper version 2.3.3 - it's kept here for backward compatability - can be removed after a while.
exclude 'jsr305_annotations/Jsr305_annotations.gwt.xml'
}
signingConfigs {
release {
storeFile file("../dist.keystore")
storePassword ""
keyAlias ""
keyPassword ""
}
}
buildTypes {
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
/**
* See top-level build.gradle for:
* - Dimension configuration of the specific build
* - All product flavors mapping
*/
flavorDimensions dimensionsConfig.keySet() as String[]
productFlavors zappProductFlavorsMap
}
/*
* Create alias for the generated mobile flavors combination,
* to keep backward compatibility without modifying CircleCI code.
* e.g.: "apk/mobile/app-mobile-debug.apk" will actually point to "apk/mobileGoogleZapp/debug/app-mobile-google-zapp-debug.apk"
*/
ext.createMobileShortcut = { runtimeBuildType ->
if (dimensionsConfig.platform == 'mobile') {
def vendor = dimensionsConfig.vendor
def flavor = dimensionsConfig.flavor
def mobilePath = "app/build/outputs/apk/mobile/" + runtimeBuildType
def apkPath = mobilePath + "/app-mobile-" + runtimeBuildType + ".apk"
def compatibilityApkPath = "app/build/outputs/apk/app-mobile-" + runtimeBuildType + ".apk"
def mobileApk = new File(apkPath)
if (!mobileApk.exists()) {
new File(mobilePath).mkdirs()
def baseDirectory = System.getProperty("user.dir")
def existingApkPath = baseDirectory + '/app/build/outputs/apk/mobile' + vendor.capitalize() + flavor.capitalize() + '/' + runtimeBuildType + '/app-mobile-' + vendor + '-' + flavor + '-' + runtimeBuildType + '.apk'
['ln', '-s', existingApkPath, apkPath].execute().waitFor()
['ln', '-s', existingApkPath, compatibilityApkPath].execute().waitFor()
new File("app/build/outputs/mapping/mobile/" + runtimeBuildType).mkdirs()
['ln', '-s', baseDirectory + '/app/build/outputs/mapping/mobile' + vendor.capitalize() + flavor.capitalize() + '/' + runtimeBuildType + '/mapping.txt', 'app/build/outputs/mapping/mobile/' + runtimeBuildType + '/mapping.txt'].execute().waitFor()
}
}
}
/**
* Create alias for the generated tv flavors combination, see example in createMobileShortcut
*/
ext.createTvShortcut = { runtimeBuildType ->
if (dimensionsConfig.platform == 'tv') {
def vendor = dimensionsConfig.vendor
def flavor = dimensionsConfig.flavor
def tvPath = "app/build/outputs/apk/tv/" + runtimeBuildType
def apkPath = tvPath + "/app-tv-" + runtimeBuildType + ".apk"
def tvApk = new File(apkPath)
if (!tvApk.exists()) {
new File(tvPath).mkdirs()
['ln', '-s', System.getProperty("user.dir") + '/app/build/outputs/apk/tv' + vendor.capitalize() + flavor.capitalize() + '/' + runtimeBuildType + '/app-tv-' + vendor + '-' + flavor + '-' + runtimeBuildType + '.apk', apkPath].execute().waitFor()
new File("app/build/outputs/mapping/tv/" + runtimeBuildType).mkdirs()
['ln', '-s', System.getProperty("user.dir") + '/app/build/outputs/mapping/tv' + vendor.capitalize() + flavor.capitalize() + '/' + runtimeBuildType + '/mapping.txt', 'app/build/outputs/mapping/tv/' + runtimeBuildType + '/mapping.txt'].execute().waitFor()
}
}
}
ext.dimensionedBuildTaskName = { suffix ->
def capitalizedDimensions = dimensionsConfig.inject([]) { r, v -> r << v.value.capitalize() }.join("")
'assemble' + capitalizedDimensions + suffix.capitalize()
}
/**
* Helper closure for creating paths - no more slash bugs
*/
ext.combinePaths = { paths ->
if (paths in String) paths = [paths] // be nice and return a proper path also with a single String
def file = new File("")
paths.each { path ->
file = new File(file.getPath(), path)
}
file.getPath()
}
task assembleMobileDebug() {
dependsOn dimensionedBuildTaskName('debug')
doLast {
createMobileShortcut('debug')
}
}
task assembleMobileRelease() {
dependsOn dimensionedBuildTaskName('release')
doLast {
createMobileShortcut('release')
}
}
task assembleTvDebug() {
dependsOn dimensionedBuildTaskName('debug')
doLast {
createTvShortcut('debug')
}
}
task assembleTvRelease() {
dependsOn dimensionedBuildTaskName('release')
doLast {
createTvShortcut('release')
}
}
if (System.getenv("CIRCLECI")) {
android.signingConfigs.debug.storeFile = file("../debug.keystore")
}
dependencies {
implementation ("com.applicaster:JWPlayerPlugin:1.5.+") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:GrandeFamily:0.3.+") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:ChagresFamily:0.3.2") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:LermaFamily:0.3.+") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:RhineFamily:0.4.4") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:BottomTabBarMenu-Android:5.1.0") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:FirebaseAnalyticsPlugin:2.3.0") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:DanubeFamily:0.4.+") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:DFP-Plugin:0.3.+") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:GoogleAnalyticsProvider:3.1.0") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:protv-login-plugin:0.2.+") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:ColoradoFamily:0.4.0") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:ElbeFamily:0.9.+") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
implementation ("com.applicaster:urbanAirship-Android:2.0.0") {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
exclude group: 'com.applicaster', module: 'zapp-root-android'
}
api 'com.applicaster:applicaster-modular-sdk:100.0.0'
implementation (project(':react-native-linear-gradient')) {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
}
implementation (project(':react-native-svg')) {
exclude group: 'com.applicaster', module: 'applicaster-android-sdk'
}
}
apply plugin: 'com.google.android.gms.strict-version-matcher-plugin'
apply插件:“com.android.application”
安卓{
编译DK28版
buildToolsVersion“28.0.3”
默认配置{
应用程序ID“com.protvromania”
明斯克版本19
targetSdkVersion 28
版本代码273
版本名称“1.0.4-alpha.3”
占位符=[
应用程序名称:“PROTV”,
fb_应用程序_id:“114792694848637494”,
]
多索引启用真
renderscriptSupportModeEnabled true
ndk.ABI过滤器“armeabi-v7a”、“arm64-v8a”、“x86”、“x86_64”
}
编译选项{
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
林特选项{
异常错误
}
德克斯选项{
巨型模型=真
preDexLibraries=false
javaMaxHeapSize“4g”
}
包装选项{
//普通的
pickFirst'META-INF/NOTICE.txt'
选择第一个“META-INF/LICENSE.txt”
选择第一个“META-INF/许可证”
选择第一个“META-INF/ASL2.0”
选择第一个“META-INF/通知”
选择第一个“META-INF/MANIFEST.MF”
// https://github.com/ReactiveX/RxJava/issues/4445
选择第一个“META-INF/rxjava.properties”
//这种IMA攻击通过gradle包装器版本2.3.3得到解决——它保留在这里是为了向后兼容——可以在一段时间后删除。
排除'jsr305_annotations/jsr305_annotations.gwt.xml'
}
签名配置{
释放{
存储文件文件(“../dist.keystore”)
存储密码“”
密钥别名“”
密钥密码“”
}
}
建筑类型{
调试{
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard rules.pro'
signingConfig signingConfigs.debug
}
释放{
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard rules.pro'
signingConfig signingConfigs.release
}
}
/**
*有关以下内容,请参见顶级build.gradle:
*-特定生成的维度配置
*-所有产品口味映射
*/
flavorDimensions维度Config.keySet()作为字符串[]
产品风味zappProductFlavorsMap
}
/*
*为生成的移动口味组合创建别名,
*在不修改CircleCI代码的情况下保持向后兼容性。
*例如:“apk/mobile/app-mobile-debug.apk”实际上会指向“apk/mobileGoogleZapp/debug/app-mobile-google-zapp-debug.apk”
*/
ext.createMobileShortcut={runtimeBuildType->
如果(dimensionsConfig.platform=='mobile'){
def vendor=尺寸config.vendor
def flavor=维度config.flavor
def mobilePath=“app/build/outputs/apk/mobile/”+runtimeBuildType
def apkPath=mobilePath+“/app mobile-“+runtimeBuildType+”.apk”
def compatibilityApkPath=“app/build/outputs/apk/app mobile-“+runtimeBuildType+”.apk”
def mobileApk=新文件(apkPath)
如果(!mobileApk.exists()){
新文件(mobilePath).mkdirs()
def baseDirectory=System.getProperty(“user.dir”)
def existingApkPath=baseDirectory++'/app/build/outputs/apk/mobile'+vendor.capitalize()+flavor.capitalize()++'/'+runtimeBuildType++'/app mobile-'+vendor+'-'+flavor+'-'+runtimeBuildType+'.apk'
['ln','-s',存在apkPath,apkPath].execute().waitFor()
['ln','-s',existingApkPath,compatibilityApkPath].execute().waitFor()
新文件(“app/build/outputs/mapping/mobile/”+runtimeBuildType).mkdirs()
['ln'、'-s',baseDirectory+/app/build/outputs/mapping/mobile'+vendor.capitalize()+flavor.capitalize()+'/'+runtimeBuildType+/mapping.txt',app/build/outputs/mapping/mobile/'+runtimeBuildType+//mapping.txt']执行().waitFor()
}
}
}
/**
*为生成的tv口味组合创建别名,请参见createMobileShortcut中的示例
*/
ext.createTvShortcut={runtimeBuildType->
if(dimensionsConfig.platform==“tv”){
def vendor=尺寸config.vendor
def flavor=维度config.flavor
def tvPath=“app/build/outputs/apk/tv/”+runtimeBuildType
def apkPath=tvPath+“/app tv-“+runtimeBuildType+”.apk”
def tvApk=新文件(apkPath)
如果(!tvApk.exists()){
新文件(tvPath).mkdirs()
['ln','-s',System.getProperty(“user.dir”)++'/app/build/outputs/apk/tv'+vendor.capitalize()+flavor.capitalize()++'/'+runtimeBuildType++'/app-tv-'+vendor++'+flavor++'+runtimeBuildType++'.apk',apkPath].execute().waitFor()
新文件(“app/build/outputs/mapping/tv/”+runtimeBuildType).mkdirs()
['ln','-s',System.getProperty(“user.dir”)++'/app/build/outputs/mapping/tv'+vendor.capitalize()+flavor.capitalize()++'/'+runtimeBuildType++'/mapping.txt',app/build/outputs/mapping/tv/'+runtimeBuildType++'/mapping.txt'].execute().waitFor()
}
}
}
ext.dimensionedBuildTaskName={后缀->
def capitalizedDimensions=维度配置注入([]){r,v->r
if(paths in String)paths=[paths]//请友好,并使用单个字符串返回正确的路径
def文件=新文件(“”)
paths.each{path->
file=新文件(file.getPath(),path)
}
file.getPath()文件
}
任务集合emobiledbug(){
dependsOn dimensionedBuildTaskName('debug')
多拉斯特{
createMobileShortcut(“调试”)
}
}
任务集合emobilerelease(){
dependsOn维度BuildTaskna