我决定尝试一下Play Services OSS License Plugin并遇到了一些我不太明白的事情。
这个插件似乎连接正确,因为我在查看OssLicensesMenuActivity时看到了。
My App
但看看android上的stock dialer应用程序,他们的OssLicensesMenuActivity看起来是这样的。
Google's Phone App
为什么我的应用程序显示的是maven工件名称,而google的应用程序显示的是开放源码库依赖关系的格式良好的披露?
以下是梯度脚本的相关部分:
项目级别:

buildscript {
    ext.kotlin_version = '1.2.51'
    ext.kotlin_coroutines_version = '0.22.4'
    ext.support_lib_version = '27.1.1'

    repositories {
        google()
        jcenter()
        maven {
            url 'https://maven.fabric.io/public'
        }
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.3'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:3.2.0'
        classpath 'com.google.gms:oss-licenses:0.9.2'
        classpath 'io.fabric.tools:gradle:1.25.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: 'io.fabric'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.google.gms.oss.licenses.plugin'

android {
    compileSdkVersion 27
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 1
        versionName "4.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

dependencies {
    implementation project(':repository')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.google.android.gms:play-services-oss-licenses:15.0.1'
    implementation 'com.google.firebase:firebase-core:16.0.1'
    implementation 'com.google.firebase:firebase-messaging:17.1.0'
    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.4'
    implementation "com.android.support:appcompat-v7:$support_lib_version"
    implementation "com.android.support:preference-v7:$support_lib_version"
    implementation "com.android.support:design:$support_lib_version"
    implementation "com.android.support:support-v4:$support_lib_version"
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines_version"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_coroutines_version"
    implementation 'com.google.dagger:dagger:2.11'
    compileOnly 'org.glassfish:javax.annotation:10.0-b28'
    kapt 'com.google.dagger:dagger-compiler:2.11'
    implementation 'androidx.core:core-ktx:0.3'
    implementation 'com.squareup.okhttp3:okhttp:3.10.0'
    implementation('com.jsibbold:zoomage:1.1.0') {
        exclude group: "com.android.support", module: "appcompat-v7"
    }
    implementation 'com.github.bumptech.glide:glide:4.7.1'
    kapt 'com.github.bumptech.glide:compiler:4.7.1'
    implementation 'com.jakewharton.timber:timber:4.7.0'
    implementation 'com.amplitude:android-sdk:2.14.1'
    debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4'
    releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
    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'
}

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

任何洞察都是值得赞赏的!

最佳答案

play-services-oss-licenses库的许可证显示功能(由您的应用程序使用)和拨号程序应用程序的内部使用的许可证显示功能(我认为您的第二个屏幕截图指的是)有微妙的不同。显示许可证的plugin+play-services-oss-licenses方法还考虑了应用程序的直接依赖性(例如org.jetbrains.kotlinx.*),以及google play services库组件使用的任何oss库(例如com.google.firebase:firebase-core:16.0.1)。
对于你的应用程序对OSS库的直接依赖性,我们选择显示完全限定的Maven工件ID,因为这样可以更清楚地显示正在使用的库。
拨号应用程序显示的是更友好的名字,因为谷歌使用的构建系统地址OSS库通知和名称不同于外部构建系统。
另一方面,我们计划在不久的将来让OSS许可插件开源,这样你就可以自己看看我们在做什么。

10-07 20:50