Skip to content
This repository has been archived by the owner on Oct 18, 2024. It is now read-only.

Commit

Permalink
fix(gradle-plugin): do not apply gradle plugin to projects without bu…
Browse files Browse the repository at this point in the history
…ildscript (fixes #1491)
  • Loading branch information
itsaky committed Nov 24, 2023
1 parent 433201b commit f40593a
Show file tree
Hide file tree
Showing 8 changed files with 122 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,13 @@ class AndroidIDEInitScriptPlugin : Plugin<Gradle> {

target.projectsLoaded { gradle ->
gradle.rootProject.subprojects { sub ->
if (!sub.buildFile.exists()) {
// For subproject ':nested:module',
// ':nested' represented as a 'Project', but it may or may not have a buildscript file
// if the project doesn't have a buildscript, then the plugins should not be applied
return@subprojects
}

sub.buildscript.dependencies.apply {
add("classpath", sub.ideDependency("gradle-plugin"))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,8 @@ package com.itsaky.androidide.gradle

import com.google.common.truth.Truth.assertThat
import com.itsaky.androidide.buildinfo.BuildInfo
import com.itsaky.androidide.utils.FileProvider
import org.gradle.testkit.runner.BuildResult
import org.gradle.testkit.runner.GradleRunner
import org.gradle.testkit.runner.internal.PluginUnderTestMetadataReading
import org.junit.jupiter.api.Test
import java.io.File
import java.io.FileNotFoundException
import kotlin.io.path.pathString

/**
* @author Akash Yadav
Expand Down Expand Up @@ -60,7 +54,9 @@ class AndroidIDEInitScriptPluginTest {
for ((project, variants) in mapOf(":app" to arrayOf("demoDebug", "fullDebug"))) {
for (variant in variants) {
assertThat(result.output).contains(
"Adding LogSender dependency (version '${depVersion(true)}') to variant '${variant}' of project '${project}'"
"Adding LogSender dependency (version '${
depVersion(true)
}') to variant '${variant}' of project '${project}'"
)
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/build
build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@

plugins {
id("com.android.application")
@@PLUGINS@@
}

android {
namespace = "com.example.myapplication2"
compileSdk = 33
buildToolsVersion = "33.0.2"

defaultConfig {
applicationId = "com.example.myapplication2"
minSdk = 21
targetSdk = 33
versionCode = 1
versionName = "1.0"

vectorDrawables {
useSupportLibrary = true
}
}

compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}

buildTypes {
release {
isMinifyEnabled = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}

buildFeatures {
viewBinding = true

}

// LogSender must be applied to all the debuggable product flavors
flavorDimensions += "version"
productFlavors {
create("demo") {
dimension = "version"
applicationIdSuffix = ".demo"
versionNameSuffix = "-demo"
}

create("full") {
dimension = "version"
applicationIdSuffix = ".full"
versionNameSuffix = "-full"
}
}
}

dependencies {
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
implementation("com.google.android.material:material:1.9.0")
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# 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
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android">
<application android:label="@string/app_name"/>
</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<!--
~ This file is part of AndroidIDE.
~
~ AndroidIDE is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ (at your option) any later version.
~
~ AndroidIDE is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
-->

<resources>
<string name="app_name">Sample app</string>
</resources>
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ dependencyResolutionManagement {
}

rootProject.name = "Sample App"
include(":app")
include(":app")
include(":nested:app")

0 comments on commit f40593a

Please sign in to comment.