Replace OSS licenses plugin with Licensee and some manually done UI.
This should fix both configuration cache and reproducible F-droid builds. Cleanup and remove gplay/fdroid diff on open source licenses. Co-authored by @jmartinesp
This commit is contained in:
parent
9c21a96d3d
commit
b9169e6c76
38 changed files with 983 additions and 309 deletions
|
|
@ -17,15 +17,19 @@
|
|||
@file:Suppress("UnstableApiUsage")
|
||||
|
||||
import com.android.build.api.variant.FilterConfiguration.FilterType.ABI
|
||||
import com.android.build.gradle.internal.tasks.factory.dependsOn
|
||||
import com.android.build.gradle.tasks.GenerateBuildConfig
|
||||
import extension.AssetCopyTask
|
||||
import extension.GitBranchNameValueSource
|
||||
import extension.GitRevisionValueSource
|
||||
import extension.allEnterpriseImpl
|
||||
import extension.allFeaturesImpl
|
||||
import extension.allLibrariesImpl
|
||||
import extension.allServicesImpl
|
||||
import extension.gitBranchName
|
||||
import extension.gitRevision
|
||||
import extension.koverDependencies
|
||||
import extension.locales
|
||||
import extension.setupKover
|
||||
import java.util.Locale
|
||||
|
||||
plugins {
|
||||
id("io.element.android-compose-application")
|
||||
|
|
@ -36,7 +40,8 @@ plugins {
|
|||
id(libs.plugins.firebaseAppDistribution.get().pluginId)
|
||||
alias(libs.plugins.knit)
|
||||
id("kotlin-parcelize")
|
||||
id("com.google.android.gms.oss-licenses-plugin")
|
||||
alias(libs.plugins.licensee)
|
||||
alias(libs.plugins.kotlin.serialization)
|
||||
// To be able to update the firebase.xml files, uncomment and build the project
|
||||
// id("com.google.gms.google-services")
|
||||
}
|
||||
|
|
@ -61,9 +66,6 @@ android {
|
|||
abiFilters += listOf("armeabi-v7a", "x86", "arm64-v8a", "x86_64")
|
||||
}
|
||||
|
||||
buildConfigField("String", "GIT_REVISION", "\"${gitRevision()}\"")
|
||||
buildConfigField("String", "GIT_BRANCH_NAME", "\"${gitBranchName()}\"")
|
||||
|
||||
// Ref: https://developer.android.com/studio/build/configure-apk-splits.html#configure-abi-split
|
||||
splits {
|
||||
// Configures multiple APKs based on ABI.
|
||||
|
|
@ -215,6 +217,9 @@ androidComponents {
|
|||
output.versionCode.set((output.versionCode.orNull ?: 0) * 10 + abiCode)
|
||||
}
|
||||
}
|
||||
|
||||
val reportingExtension: ReportingExtension = project.extensions.getByType(ReportingExtension::class.java)
|
||||
configureLicensesTasks(reportingExtension)
|
||||
}
|
||||
|
||||
// Knit
|
||||
|
|
@ -259,8 +264,6 @@ dependencies {
|
|||
// Comment to not include unified push in the project
|
||||
implementation(projects.libraries.pushproviders.unifiedpush)
|
||||
|
||||
"gplayImplementation"(libs.play.services.oss.licenses)
|
||||
|
||||
implementation(libs.appyx.core)
|
||||
implementation(libs.androidx.splash)
|
||||
implementation(libs.androidx.core)
|
||||
|
|
@ -291,3 +294,51 @@ dependencies {
|
|||
|
||||
koverDependencies()
|
||||
}
|
||||
|
||||
tasks.withType<GenerateBuildConfig>().configureEach {
|
||||
outputs.upToDateWhen { false }
|
||||
val gitRevision = providers.of(GitRevisionValueSource::class.java) {}.get()
|
||||
val gitBranchName = providers.of(GitBranchNameValueSource::class.java) {}.get()
|
||||
android.defaultConfig.buildConfigField("String", "GIT_REVISION", "\"$gitRevision\"")
|
||||
android.defaultConfig.buildConfigField("String", "GIT_BRANCH_NAME", "\"$gitBranchName\"")
|
||||
}
|
||||
|
||||
licensee {
|
||||
allow("Apache-2.0")
|
||||
allow("MIT")
|
||||
allow("GPL-2.0-with-classpath-exception")
|
||||
allow("BSD-2-Clause")
|
||||
allowUrl("https://opensource.org/licenses/MIT")
|
||||
allowUrl("https://developer.android.com/studio/terms.html")
|
||||
allowUrl("http://openjdk.java.net/legal/gplv2+ce.html")
|
||||
allowUrl("https://www.zetetic.net/sqlcipher/license/")
|
||||
allowUrl("https://jsoup.org/license")
|
||||
allowUrl("https://asm.ow2.io/license.html")
|
||||
ignoreDependencies("com.github.matrix-org", "matrix-analytics-events")
|
||||
}
|
||||
|
||||
fun Project.configureLicensesTasks(reportingExtension: ReportingExtension) {
|
||||
androidComponents {
|
||||
onVariants { variant ->
|
||||
val capitalizedVariantName = variant.name.replaceFirstChar {
|
||||
if (it.isLowerCase()) {
|
||||
it.titlecase(Locale.getDefault())
|
||||
} else {
|
||||
it.toString()
|
||||
}
|
||||
}
|
||||
val artifactsFile = reportingExtension.file("licensee/android$capitalizedVariantName/artifacts.json")
|
||||
|
||||
val copyArtifactsTask =
|
||||
project.tasks.register<AssetCopyTask>("copy${capitalizedVariantName}LicenseeReportToAssets") {
|
||||
inputFile.set(artifactsFile)
|
||||
targetFileName.set("licensee-artifacts.json")
|
||||
}
|
||||
variant.sources.assets?.addGeneratedSourceDirectory(
|
||||
copyArtifactsTask,
|
||||
AssetCopyTask::outputDirectory,
|
||||
)
|
||||
copyArtifactsTask.dependsOn("licenseeAndroid$capitalizedVariantName")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,32 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2024 New Vector Ltd
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.element.android.x.licenses
|
||||
|
||||
import android.app.Activity
|
||||
import com.squareup.anvil.annotations.ContributesBinding
|
||||
import io.element.android.features.preferences.api.OpenSourceLicensesProvider
|
||||
import io.element.android.libraries.di.AppScope
|
||||
import javax.inject.Inject
|
||||
|
||||
@ContributesBinding(AppScope::class)
|
||||
class FdroidOpenSourceLicensesProvider @Inject constructor() : OpenSourceLicensesProvider {
|
||||
override val hasOpenSourceLicenses: Boolean = false
|
||||
|
||||
override fun navigateToOpenSourceLicenses(activity: Activity) {
|
||||
error("Not supported, please ensure that hasOpenSourcesLicenses is true before calling this method")
|
||||
}
|
||||
}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<application>
|
||||
<activity
|
||||
android:name="com.google.android.gms.oss.licenses.OssLicensesMenuActivity"
|
||||
android:theme="@style/Theme.OssLicenses" />
|
||||
<activity
|
||||
android:name="com.google.android.gms.oss.licenses.OssLicensesActivity"
|
||||
android:theme="@style/Theme.OssLicenses" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2024 New Vector Ltd
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.element.android.x.licenses
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import com.google.android.gms.oss.licenses.OssLicensesMenuActivity
|
||||
import com.squareup.anvil.annotations.ContributesBinding
|
||||
import io.element.android.features.preferences.api.OpenSourceLicensesProvider
|
||||
import io.element.android.libraries.di.AppScope
|
||||
import io.element.android.libraries.ui.strings.CommonStrings
|
||||
import javax.inject.Inject
|
||||
|
||||
@ContributesBinding(AppScope::class)
|
||||
class OssOpenSourcesLicensesProvider @Inject constructor() : OpenSourceLicensesProvider {
|
||||
override val hasOpenSourceLicenses: Boolean = true
|
||||
|
||||
override fun navigateToOpenSourceLicenses(activity: Activity) {
|
||||
val title = activity.getString(CommonStrings.common_open_source_licenses)
|
||||
OssLicensesMenuActivity.setActivityTitle(title)
|
||||
activity.startActivity(Intent(activity, OssLicensesMenuActivity::class.java))
|
||||
}
|
||||
}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2024 New Vector Ltd
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<resources>
|
||||
|
||||
<!-- Use a few colors from compoundColorsDark -->
|
||||
<!-- DarkColorTokens.colorThemeBg -->
|
||||
<color name="colorThemeBg">#FF101317</color>
|
||||
<!-- DarkColorTokens.colorGray1400 -->
|
||||
<color name="textPrimary">#FFEBEEF2</color>
|
||||
<!-- DarkColorTokens.colorGray900 -->
|
||||
<color name="textSecondary">#ff808994</color>
|
||||
<!-- DarkColorTokens.colorBlue900 -->
|
||||
<color name="textLinkExternal">#FF4187EB</color>
|
||||
|
||||
<bool name="windowLightStatusBar">false</bool>
|
||||
<bool name="windowLightNavigationBar">false</bool>
|
||||
|
||||
</resources>
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2024 New Vector Ltd
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<resources>
|
||||
|
||||
<style name="Theme.OssLicenses.Light.v27" parent="Base.Theme.OssLicenses">
|
||||
<item name="android:windowLightNavigationBar">@bool/windowLightNavigationBar</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.OssLicenses" parent="Theme.OssLicenses.Light.v27"/>
|
||||
|
||||
</resources>
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2024 New Vector Ltd
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<resources>
|
||||
|
||||
<!-- Use a few colors from compoundColorsLight -->
|
||||
<!-- LightColorTokens.colorThemeBg -->
|
||||
<color name="colorThemeBg">#FFFFFFFF</color>
|
||||
<!-- LightColorTokens.colorGray1400 -->
|
||||
<color name="textPrimary">#FF1B1D22</color>
|
||||
<!-- LightColorTokens.colorGray900 -->
|
||||
<color name="textSecondary">#FF656D77</color>
|
||||
<!-- LightColorTokens.colorBlue900 -->
|
||||
<color name="textLinkExternal">#FF0467DD</color>
|
||||
|
||||
<bool name="windowLightStatusBar">true</bool>
|
||||
<bool name="windowLightNavigationBar">true</bool>
|
||||
|
||||
</resources>
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2024 New Vector Ltd
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<resources>
|
||||
|
||||
<style name="NoElevationToolbar" parent="Widget.MaterialComponents.Toolbar">
|
||||
<item name="android:elevation">0dp</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2024 New Vector Ltd
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<resources>
|
||||
|
||||
<style name="Base.Theme.OssLicenses" parent="Theme.MaterialComponents.DayNight">
|
||||
<!-- Background of title bar -->
|
||||
<item name="colorPrimary">@color/colorThemeBg</item>
|
||||
<!-- Background of the screen -->
|
||||
<item name="android:colorBackground">@color/colorThemeBg</item>
|
||||
<!-- Text of the licenses -->
|
||||
<item name="android:textColor">@color/textSecondary</item>
|
||||
<!-- Link text color -->
|
||||
<item name="android:textColorLink">@color/textLinkExternal</item>
|
||||
<!-- Title, back button and license item text color -->
|
||||
<item name="android:textColorPrimary">@color/textPrimary</item>
|
||||
<!-- Background of status bar -->
|
||||
<item name="android:statusBarColor">@color/colorThemeBg</item>
|
||||
<item name="android:windowLightStatusBar">@bool/windowLightStatusBar</item>
|
||||
<!-- Background of navigation bar -->
|
||||
<item name="android:navigationBarColor">@color/colorThemeBg</item>
|
||||
<!-- Try to remove Toolbar elevation, but it does not work :/ -->
|
||||
<item name="toolbarStyle">@style/NoElevationToolbar</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.OssLicenses" parent="Base.Theme.OssLicenses" />
|
||||
|
||||
</resources>
|
||||
Loading…
Add table
Add a link
Reference in a new issue