Android studio 将build.gradle从2.3.3更新到3.4.1,我仍然收到警告;编撰;替换为“;实施;?
我查阅了类似的帖子,但由于我没有使用com.google.gms,我有点不知所措,我还更新了所有的实现(以前是编译)引用 这里是我在app/build.gradle上收到的警告 警告:API“variantOutput.getPackageApplication()”已过时,并已替换为“variant.getPackageApplicationProvider()”。 它将于2019年底拆除。 有关详细信息,请参阅。 要确定调用variantOutput.getPackageApplication()的内容,请在命令行上使用-Pandroid.debug.obsoleteApi=true以显示更多信息。 受影响模块:应用程序Android studio 将build.gradle从2.3.3更新到3.4.1,我仍然收到警告;编撰;替换为“;实施;?,android-studio,android-gradle-plugin,build.gradle,Android Studio,Android Gradle Plugin,Build.gradle,我查阅了类似的帖子,但由于我没有使用com.google.gms,我有点不知所措,我还更新了所有的实现(以前是编译)引用 这里是我在app/build.gradle上收到的警告 警告:API“variantOutput.getPackageApplication()”已过时,并已替换为“variant.getPackageApplicationProvider()”。 它将于2019年底拆除。 有关详细信息,请参阅。 要确定调用variantOutput.getPackageApplicatio
// changed from gradle 2.3.3 to gradle 3.4.1 syntax as per
// google developer sites and gradle blogs
// app/build.gradle:
#import java.text.DateFormat
#import java.text.SimpleDateFormat
// migrate from Android Studio with gradle:2.3.3
// to Android Studio with gradle:3.4.1
// jm*20190531
buildscript {
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.jakewharton.hugo:hugo-plugin:1.2.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
apply plugin: 'com.android.application'
apply plugin: 'hugo'
apply plugin: 'maven'
/* **
some methods to build app names with date, git-commit, version numbers
here omitted
** */
android {
compileSdkVersion 28 // jm*20190405
buildToolsVersion "28.0.3" // "25.0.3"
defaultConfig {
minSdkVersion 16 /*** was: 9, then: 14 ***/
targetSdkVersion 28 /*** was: 21, then: 25 ***/
buildConfigField "String", "BUILD_DATE", "\"" + todayIso8601() + "\""
buildConfigField "String", "SHORT_COMMIT_HASH", "\"" + getShortCommitHash() + "\""
}
signingConfigs {
create("myConfig") {
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeType "jks"
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
// signingConfig = signingConfigs.wxConfig
}
}
flavorDimensions 'vox' // jm*20190512
productFlavors {
voxDigits {
applicationId "net.wavvox.VoxDigits13"
versionCode versionCodeVoxDigits()
versionName versionNameVoxDigits()
dimension 'vox'
}
voxChat {
applicationId "net.wavvox.voxchat"
versionCode versionCodeVoxChat()
versionName versionNameVoxChat()
dimension 'vox'
}
// Rename APK for the appropriate productFlavor
applicationVariants.all { variant ->
//variant.outputs.every { output ->
variant.outputs.all { output ->
String flavorName = variant.productFlavors[0].name
System.out.println("***** flavorName: " + flavorName)
def relativeRootDir = output.packageApplication.outputDirectory.toPath()
.relativize(rootDir.toPath()).toFile()
def relativeRootDir0 = "../../.."
switch (flavorName) { // jm*20190405
case "voxChat":
//output.outputFile = new File(output.outputFile.parent,
// output.outputFile.name.replace("app-voxChat", apkNameVoxChat)) );
output.outputFileName = new File("$relativeRootDir"+"/"+"app",
output.outputFileName.replace("app-voxChat", apkNameVoxChat()) )
break
case "voxDigits":
//output.outputFile = new File(output.outputFile.parent,
// output.outputFile.name.replace("app-voxDigits", apkNameVoxDigits()) );
output.outputFileName = new File( "$relativeRootDir"+"/"+"app",
output.outputFileName.replace("app-voxDigits", apkNameVoxDigits()) )
break
default:
System.out.println("!!!!! unknown flavorName: " + flavorName + " !!!!!")
// old method, gradle:2.3.3
//output.outputFile = new File(output.outputFile.parent,
// output.outputFile.name.replace(".apk","-${finalVersion}.apk"))
// new method, gradle:3.4.1
//outputFileName = new File(output.outputFile.parent,
// outputFileName.replace(".apk", "-${finalVersionCode}.apk"))
break
} // switch
System.out.println("relativeRootDir: " + relativeRootDir)
System.out.println("output.outputFileName: " + output.outputFileName)
}
}
} // End productFlavors block
}
dependencies {
/* WavvoxLibrary AAR module */
implementation project(':wavvoxlibrary')
/* Google Android support libraries */
implementation 'com.android.support:support-annotations:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
/* Dagger 2 */
implementation 'com.google.dagger:dagger:2.22.1'
annotationProcessor 'com.google.dagger:dagger-compiler:2.22.1'
compileOnly 'javax.annotation:jsr250-api:1.0'
/* Progress Circle */
implementation 'com.github.jakob-grabner:Circle-Progress-View:v1.3'
}
/* **
not quite sure about Dagger and Progress Circle;
got inherited from some older projects
** */
警告:配置“编译”已过时,已替换为“实现”和“api”。
将于2018年底拆除。有关更多信息,请参阅:
受影响模块:应用程序
// changed from gradle 2.3.3 to gradle 3.4.1 syntax as per
// google developer sites and gradle blogs
// app/build.gradle:
#import java.text.DateFormat
#import java.text.SimpleDateFormat
// migrate from Android Studio with gradle:2.3.3
// to Android Studio with gradle:3.4.1
// jm*20190531
buildscript {
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.jakewharton.hugo:hugo-plugin:1.2.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
apply plugin: 'com.android.application'
apply plugin: 'hugo'
apply plugin: 'maven'
/* **
some methods to build app names with date, git-commit, version numbers
here omitted
** */
android {
compileSdkVersion 28 // jm*20190405
buildToolsVersion "28.0.3" // "25.0.3"
defaultConfig {
minSdkVersion 16 /*** was: 9, then: 14 ***/
targetSdkVersion 28 /*** was: 21, then: 25 ***/
buildConfigField "String", "BUILD_DATE", "\"" + todayIso8601() + "\""
buildConfigField "String", "SHORT_COMMIT_HASH", "\"" + getShortCommitHash() + "\""
}
signingConfigs {
create("myConfig") {
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeType "jks"
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
// signingConfig = signingConfigs.wxConfig
}
}
flavorDimensions 'vox' // jm*20190512
productFlavors {
voxDigits {
applicationId "net.wavvox.VoxDigits13"
versionCode versionCodeVoxDigits()
versionName versionNameVoxDigits()
dimension 'vox'
}
voxChat {
applicationId "net.wavvox.voxchat"
versionCode versionCodeVoxChat()
versionName versionNameVoxChat()
dimension 'vox'
}
// Rename APK for the appropriate productFlavor
applicationVariants.all { variant ->
//variant.outputs.every { output ->
variant.outputs.all { output ->
String flavorName = variant.productFlavors[0].name
System.out.println("***** flavorName: " + flavorName)
def relativeRootDir = output.packageApplication.outputDirectory.toPath()
.relativize(rootDir.toPath()).toFile()
def relativeRootDir0 = "../../.."
switch (flavorName) { // jm*20190405
case "voxChat":
//output.outputFile = new File(output.outputFile.parent,
// output.outputFile.name.replace("app-voxChat", apkNameVoxChat)) );
output.outputFileName = new File("$relativeRootDir"+"/"+"app",
output.outputFileName.replace("app-voxChat", apkNameVoxChat()) )
break
case "voxDigits":
//output.outputFile = new File(output.outputFile.parent,
// output.outputFile.name.replace("app-voxDigits", apkNameVoxDigits()) );
output.outputFileName = new File( "$relativeRootDir"+"/"+"app",
output.outputFileName.replace("app-voxDigits", apkNameVoxDigits()) )
break
default:
System.out.println("!!!!! unknown flavorName: " + flavorName + " !!!!!")
// old method, gradle:2.3.3
//output.outputFile = new File(output.outputFile.parent,
// output.outputFile.name.replace(".apk","-${finalVersion}.apk"))
// new method, gradle:3.4.1
//outputFileName = new File(output.outputFile.parent,
// outputFileName.replace(".apk", "-${finalVersionCode}.apk"))
break
} // switch
System.out.println("relativeRootDir: " + relativeRootDir)
System.out.println("output.outputFileName: " + output.outputFileName)
}
}
} // End productFlavors block
}
dependencies {
/* WavvoxLibrary AAR module */
implementation project(':wavvoxlibrary')
/* Google Android support libraries */
implementation 'com.android.support:support-annotations:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
/* Dagger 2 */
implementation 'com.google.dagger:dagger:2.22.1'
annotationProcessor 'com.google.dagger:dagger-compiler:2.22.1'
compileOnly 'javax.annotation:jsr250-api:1.0'
/* Progress Circle */
implementation 'com.github.jakob-grabner:Circle-Progress-View:v1.3'
}
/* **
not quite sure about Dagger and Progress Circle;
got inherited from some older projects
** */
警告:配置“debugCompile”已过时,并已替换为“debugImplementation”和“debugApi”。
将于2018年底拆除。有关更多信息,请参阅:
受影响模块:应用程序
// changed from gradle 2.3.3 to gradle 3.4.1 syntax as per
// google developer sites and gradle blogs
// app/build.gradle:
#import java.text.DateFormat
#import java.text.SimpleDateFormat
// migrate from Android Studio with gradle:2.3.3
// to Android Studio with gradle:3.4.1
// jm*20190531
buildscript {
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.jakewharton.hugo:hugo-plugin:1.2.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
apply plugin: 'com.android.application'
apply plugin: 'hugo'
apply plugin: 'maven'
/* **
some methods to build app names with date, git-commit, version numbers
here omitted
** */
android {
compileSdkVersion 28 // jm*20190405
buildToolsVersion "28.0.3" // "25.0.3"
defaultConfig {
minSdkVersion 16 /*** was: 9, then: 14 ***/
targetSdkVersion 28 /*** was: 21, then: 25 ***/
buildConfigField "String", "BUILD_DATE", "\"" + todayIso8601() + "\""
buildConfigField "String", "SHORT_COMMIT_HASH", "\"" + getShortCommitHash() + "\""
}
signingConfigs {
create("myConfig") {
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeType "jks"
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
// signingConfig = signingConfigs.wxConfig
}
}
flavorDimensions 'vox' // jm*20190512
productFlavors {
voxDigits {
applicationId "net.wavvox.VoxDigits13"
versionCode versionCodeVoxDigits()
versionName versionNameVoxDigits()
dimension 'vox'
}
voxChat {
applicationId "net.wavvox.voxchat"
versionCode versionCodeVoxChat()
versionName versionNameVoxChat()
dimension 'vox'
}
// Rename APK for the appropriate productFlavor
applicationVariants.all { variant ->
//variant.outputs.every { output ->
variant.outputs.all { output ->
String flavorName = variant.productFlavors[0].name
System.out.println("***** flavorName: " + flavorName)
def relativeRootDir = output.packageApplication.outputDirectory.toPath()
.relativize(rootDir.toPath()).toFile()
def relativeRootDir0 = "../../.."
switch (flavorName) { // jm*20190405
case "voxChat":
//output.outputFile = new File(output.outputFile.parent,
// output.outputFile.name.replace("app-voxChat", apkNameVoxChat)) );
output.outputFileName = new File("$relativeRootDir"+"/"+"app",
output.outputFileName.replace("app-voxChat", apkNameVoxChat()) )
break
case "voxDigits":
//output.outputFile = new File(output.outputFile.parent,
// output.outputFile.name.replace("app-voxDigits", apkNameVoxDigits()) );
output.outputFileName = new File( "$relativeRootDir"+"/"+"app",
output.outputFileName.replace("app-voxDigits", apkNameVoxDigits()) )
break
default:
System.out.println("!!!!! unknown flavorName: " + flavorName + " !!!!!")
// old method, gradle:2.3.3
//output.outputFile = new File(output.outputFile.parent,
// output.outputFile.name.replace(".apk","-${finalVersion}.apk"))
// new method, gradle:3.4.1
//outputFileName = new File(output.outputFile.parent,
// outputFileName.replace(".apk", "-${finalVersionCode}.apk"))
break
} // switch
System.out.println("relativeRootDir: " + relativeRootDir)
System.out.println("output.outputFileName: " + output.outputFileName)
}
}
} // End productFlavors block
}
dependencies {
/* WavvoxLibrary AAR module */
implementation project(':wavvoxlibrary')
/* Google Android support libraries */
implementation 'com.android.support:support-annotations:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
/* Dagger 2 */
implementation 'com.google.dagger:dagger:2.22.1'
annotationProcessor 'com.google.dagger:dagger-compiler:2.22.1'
compileOnly 'javax.annotation:jsr250-api:1.0'
/* Progress Circle */
implementation 'com.github.jakob-grabner:Circle-Progress-View:v1.3'
}
/* **
not quite sure about Dagger and Progress Circle;
got inherited from some older projects
** */
我想处理这些警告,并学习如何调试和找到问题的根源;警告不是描述性的
谢谢,
jm.问题是,您使用的一些库可能使用编译而不是实现,检查您目前使用的库并不多 我看到库
com.github.jakob-grabner:Circle Progress View:v1.3
使用compile添加依赖项com.android.support:support annotation:25.1.0
,在下面的链接中,您可以看到它们使用compile而不是api、实现等()
通过查看库的存储库,我发现有一个更新的版本,它是1.4(),如果更新了该版本,并使用关键字api添加依赖项
我建议您更新库以避免该警告。问题是,您使用的一些库可能正在使用编译而不是实现,检查您使用的库目前并不多 我看到库
com.github.jakob-grabner:Circle Progress View:v1.3
使用compile添加依赖项com.android.support:support annotation:25.1.0
,在下面的链接中,您可以看到它们使用compile而不是api、实现等()
通过查看库的存储库,我发现有一个更新的版本,它是1.4(),如果更新了该版本,并使用关键字api添加依赖项
我建议您更新库以避免该警告。顺便说一句,我成功地将我的项目从Android Studio&gradle 2.3.3更新为3.4.1;我的库甚至从gradle实验0.9.3更新;看到可能重复的你可以在这里检查:注意雨果插件。谢谢你,我读了关于“雨果”;问题是,通过删除classpatch和apply插件,我现在得到了错误:“错误:没有为属性‘manifestOutputDirectory’指定任何值”,而不是三个警告中的前两个。还有关于variantOutput的警告:“警告:API‘variantOutput.getPackageApplication()’已过时,并已替换为‘variant.getPackageApplicationProvider()。(…)受影响的模块:app”和该模块(因为单击“app”不会转到导致此问题的行)也可能来自指定的一个额外工具…?关于“类路径”的答案/注释没有解决问题,因为警告在gradle构建期间出现!“实施”部分需要进行审查,因为这里(外部)的项目都有自己的build.gradle;如果这些项目还没有更新,gradle就会发出警告!在我的案例中(至少是“编译”与“实现”警告的对比),Jacob Grabner的“循环进度视图”项目是罪魁祸首。不,前面的评论中没有重复的问题,也没有与“Hugo”插件无关的问题!顺便说一句,我设法将我的项目从Android Studio&gradle 2.3.3升级到3.4.1;我的库甚至从gradle实验0.9.3更新;看到可能重复的你可以在这里检查:注意雨果插件。谢谢你,我读了关于“雨果”;问题是,通过删除classpatch和apply插件,我现在得到了错误:“错误:没有为属性‘manifestOutputDirectory’指定任何值”,而不是三个警告中的前两个。还有关于variantOutput的警告:“警告:API‘variantOutput.getPackageApplication()’已过时,并已替换为‘variant.getPackageApplicationProvider()。(…)受影响的模块:app”和该模块(因为单击“app”不会转到导致此问题的行)也可能来自指定的一个额外工具…?关于“类路径”的答案/注释没有解决问题,因为警告在gradle构建期间出现!“实施”部分需要进行审查,因为这里(外部)的项目都有自己的build.gradle;如果这些项目还没有更新,gradle就会发出警告!在我的案例中(至少是“编译”与“实现”警告的对比),Jacob Grabner的“循环进度视图”项目是罪魁祸首。不,前面的评论中没有重复的问题,也没有与“Hugo”插件无关的问题!谢谢;该版本使用的Minsdk版本高于我在项目中使用的版本;因此,在生成过程中会出现此错误:“失败:生成失败,出现异常。*出错原因:任务执行失败”:app:ProcessVoxDigitsReleaseMifest。“>清单合并失败:使用sdk:minSdkVersion 16不能小于库[com.github.jakob grabner:Circle Progress View:1.4]中声明的版本19”(…)或者使用工具:overrideLibrary=“at.grabner.circleprogress”