Skip to content

Commit 60441e2

Browse files
authored
Merge pull request #130 from solrudev/develop
0.14.0
2 parents db2d66d + dc38636 commit 60441e2

33 files changed

Lines changed: 200 additions & 185 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Ackpine depends on Jetpack libraries, so it's also necessary to add the `google(
3535

3636
```toml
3737
[versions]
38-
ackpine = "0.13.2"
38+
ackpine = "0.14.0"
3939

4040
[libraries]
4141
ackpine-core = { module = "ru.solrudev.ackpine:ackpine-core", version.ref = "ackpine" }
@@ -76,7 +76,7 @@ ackpine = [
7676

7777
```kotlin
7878
dependencies {
79-
val ackpineVersion = "0.13.2"
79+
val ackpineVersion = "0.14.0"
8080
implementation("ru.solrudev.ackpine:ackpine-core:$ackpineVersion")
8181

8282
// optional - Kotlin extensions and Coroutines support

ackpine-api/api-main/api/api-main.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ public final class ru/solrudev/ackpine/installer/parameters/InstallParameters :
270270
public final fun getName ()Ljava/lang/String;
271271
public fun getNotificationData ()Lru/solrudev/ackpine/session/parameters/NotificationData;
272272
public final fun getPackageSource ()Lru/solrudev/ackpine/installer/parameters/PackageSource;
273+
public final fun getPluginContainer ()Lru/solrudev/ackpine/plugability/AckpinePluginContainer;
273274
public final fun getPlugins ()Lru/solrudev/ackpine/plugability/AckpinePluginContainer;
274275
public final fun getPreapproval ()Lru/solrudev/ackpine/installer/parameters/InstallPreapproval;
275276
public final fun getRequestUpdateOwnership ()Z

ackpine-api/api-main/consumer-rules.pro

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
-keep interface ru.solrudev.ackpine.session.parameters.DrawableId { *; }
33
-keep class * implements ru.solrudev.ackpine.session.parameters.DrawableId { *; }
44
-keep class ru.solrudev.ackpine.installer.InstallFailure { *; }
5-
-keep class ru.solrudev.ackpine.installer.InstallFailure$* { *; }
6-
-keep class ru.solrudev.ackpine.uninstaller.UninstallFailure { *; }
7-
-keep class ru.solrudev.ackpine.uninstaller.UninstallFailure$* { *; }
8-
-keep class ru.solrudev.ackpine.installer.parameters.InstallConstraints$TimeoutStrategy { *; }
9-
-keep class ru.solrudev.ackpine.installer.parameters.InstallConstraints$TimeoutStrategy$* { *; }
5+
-keep class * extends ru.solrudev.ackpine.installer.InstallFailure { *; }
6+
-keep interface ru.solrudev.ackpine.uninstaller.UninstallFailure { *; }
7+
-keep class * implements ru.solrudev.ackpine.uninstaller.UninstallFailure { *; }
8+
-keep interface ru.solrudev.ackpine.installer.parameters.InstallConstraints$TimeoutStrategy { *; }
9+
-keep class * implements ru.solrudev.ackpine.installer.parameters.InstallConstraints$TimeoutStrategy { *; }
1010

1111
# Plugins
1212
-keep interface ru.solrudev.ackpine.plugability.AckpinePlugin { *; }

ackpine-api/api-main/src/main/kotlin/ru/solrudev/ackpine/installer/parameters/InstallParameters.kt

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import androidx.annotation.RequiresApi
2424
import ru.solrudev.ackpine.DelicateAckpineApi
2525
import ru.solrudev.ackpine.exceptions.SplitPackagesNotSupportedException
2626
import ru.solrudev.ackpine.plugability.AckpinePlugin
27+
import ru.solrudev.ackpine.plugability.AckpinePluginCache
2728
import ru.solrudev.ackpine.plugability.AckpinePluginContainer
2829
import ru.solrudev.ackpine.session.parameters.Confirmation
2930
import ru.solrudev.ackpine.session.parameters.ConfirmationAware
@@ -134,9 +135,16 @@ public class InstallParameters private constructor(
134135
/**
135136
* [Plugins][AckpinePlugin] applied to the install session.
136137
*/
137-
public val plugins: AckpinePluginContainer
138+
public val pluginContainer: AckpinePluginContainer
138139
) : ConfirmationAware {
139140

141+
/**
142+
* [Plugins][AckpinePlugin] applied to the install session.
143+
*/
144+
@Deprecated(message = "Renamed to pluginContainer", replaceWith = ReplaceWith(expression = "pluginContainer"))
145+
public val plugins: AckpinePluginContainer
146+
get() = pluginContainer
147+
140148
override fun equals(other: Any?): Boolean {
141149
if (this === other) return true
142150
if (javaClass != other?.javaClass) return false
@@ -152,7 +160,7 @@ public class InstallParameters private constructor(
152160
if (preapproval != other.preapproval) return false
153161
if (constraints != other.constraints) return false
154162
if (packageSource != other.packageSource) return false
155-
if (plugins != other.plugins) return false
163+
if (pluginContainer != other.pluginContainer) return false
156164
return true
157165
}
158166

@@ -168,7 +176,7 @@ public class InstallParameters private constructor(
168176
result = 31 * result + preapproval.hashCode()
169177
result = 31 * result + constraints.hashCode()
170178
result = 31 * result + packageSource.hashCode()
171-
result = 31 * result + plugins.hashCode()
179+
result = 31 * result + pluginContainer.hashCode()
172180
return result
173181
}
174182

@@ -185,7 +193,7 @@ public class InstallParameters private constructor(
185193
"constraints=$constraints, " +
186194
"requestUpdateOwnership=$requestUpdateOwnership, " +
187195
"packageSource=$packageSource, " +
188-
"plugins=$plugins" +
196+
"pluginContainer=$pluginContainer" +
189197
")"
190198
}
191199

@@ -430,15 +438,15 @@ public class InstallParameters private constructor(
430438
plugin: Class<out AckpinePlugin<Params>>,
431439
parameters: Params
432440
): Builder = apply {
433-
plugins.put(plugin, parameters)
441+
plugins[plugin] = parameters
434442
}
435443

436444
/**
437445
* Applies a [plugin] to the session.
438446
* @param plugin Java class of an applied plugin, implementing [AckpinePlugin].
439447
*/
440448
public fun usePlugin(plugin: Class<out AckpinePlugin<AckpinePlugin.Parameters.None>>): Builder = apply {
441-
plugins.put(plugin, AckpinePlugin.Parameters.None)
449+
plugins[plugin] = AckpinePlugin.Parameters.None
442450
}
443451

444452
/**
@@ -447,7 +455,10 @@ public class InstallParameters private constructor(
447455
@SuppressLint("NewApi")
448456
public fun build(): InstallParameters {
449457
val pluginContainer = AckpinePluginContainer.from(plugins)
450-
for (plugin in pluginContainer.getPluginInstances().keys) {
458+
val pluginInstances = pluginContainer
459+
.getPlugins()
460+
.map { (pluginClass, _) -> AckpinePluginCache.get(pluginClass) }
461+
for (plugin in pluginInstances) {
451462
plugin.apply(this)
452463
}
453464
return InstallParameters(

ackpine-api/api-main/src/main/kotlin/ru/solrudev/ackpine/plugability/AckpinePluginContainer.kt

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,35 +16,20 @@
1616

1717
package ru.solrudev.ackpine.plugability
1818

19-
import androidx.annotation.RestrictTo
20-
2119
/**
2220
* A container of [AckpinePlugins][AckpinePlugin] applied to a session.
2321
*/
2422
public class AckpinePluginContainer private constructor(
2523
private val pluginsMap: Map<Class<out AckpinePlugin<*>>, AckpinePlugin.Parameters>
2624
) {
2725

28-
private val pluginInstancesMap by lazy {
29-
pluginsMap.mapKeys { (pluginClass, _) -> AckpinePluginCache.get(pluginClass) }
30-
}
31-
3226
/**
3327
* Returns a new copy of plugin entries saved inside of this container.
3428
*/
3529
public fun getPlugins(): Map<Class<out AckpinePlugin<*>>, AckpinePlugin.Parameters> {
3630
return pluginsMap.toMap()
3731
}
3832

39-
/**
40-
* Returns a map of plugin instances with their parameters saved inside of this container.
41-
*/
42-
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
43-
@JvmSynthetic
44-
public fun getPluginInstances(): Map<AckpinePlugin<*>, AckpinePlugin.Parameters> {
45-
return pluginInstancesMap.toMap()
46-
}
47-
4833
override fun equals(other: Any?): Boolean {
4934
if (this === other) return true
5035
if (other !is AckpinePluginContainer) return false

ackpine-api/api-stubs/src/main/kotlin/ru/solrudev/ackpine/impl/installer/PackageInstallerImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import ru.solrudev.ackpine.installer.PackageInstaller
2323
* Stub for `PackageInstallerImpl` from `ackpine-core`.
2424
*/
2525
public class PackageInstallerImpl : PackageInstaller {
26-
public companion object Companion {
26+
public companion object {
2727
public fun getInstance(context: Context): PackageInstallerImpl {
2828
throw NotImplementedError()
2929
}

ackpine-core/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ ackpine {
3333
}
3434

3535
room {
36-
schemaDirectory("$projectDir/schemas")
36+
schemaDirectory(layout.projectDirectory.dir("schemas"))
3737
}
3838

3939
dependencies {

ackpine-core/src/main/kotlin/ru/solrudev/ackpine/impl/installer/InstallSessionFactory.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import ru.solrudev.ackpine.installer.parameters.InstallParameters
4747
import ru.solrudev.ackpine.installer.parameters.InstallerType
4848
import ru.solrudev.ackpine.installer.parameters.PackageSource
4949
import ru.solrudev.ackpine.plugability.AckpinePlugin
50+
import ru.solrudev.ackpine.plugability.AckpinePluginCache
5051
import ru.solrudev.ackpine.resources.ResolvableString
5152
import ru.solrudev.ackpine.session.Progress
5253
import ru.solrudev.ackpine.session.Session
@@ -115,7 +116,12 @@ internal class InstallSessionFactoryImpl internal constructor(
115116

116117
InstallerType.SESSION_BASED -> withPackageInstallerService(
117118
id,
118-
runCatching { parameters.plugins.getPluginInstances() }
119+
runCatching {
120+
parameters
121+
.pluginContainer
122+
.getPlugins()
123+
.mapKeys { (pluginClass, _) -> AckpinePluginCache.get(pluginClass) }
124+
}
119125
) { packageInstallerService ->
120126
SessionBasedInstallSession(
121127
applicationContext,

ackpine-core/src/main/kotlin/ru/solrudev/ackpine/impl/plugability/AckpineServiceProvider.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ public interface AckpineServiceProvider {
4949
*/
5050
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
5151
public abstract class AbstractAckpineServiceProvider(
52-
serviceFactories: Set<ServiceFactory<*>>
52+
serviceFactories: Set<ServiceFactory<*>>,
53+
override val pluginId: String
5354
) : AckpineServiceProvider {
5455

5556
private val factories = serviceFactories.associate { it.serviceClass to it.serviceFactory }

ackpine-plugins/shizuku-stubs/build.gradle.kts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,18 @@
1414
* limitations under the License.
1515
*/
1616

17-
import ru.solrudev.ackpine.gradle.Constants
18-
1917
description = "API stubs for ackpine-shizuku"
2018

2119
plugins {
22-
`java-library`
20+
id("ru.solrudev.ackpine.library.base")
21+
}
22+
23+
ackpine {
24+
id = "shizuku-stubs"
2325
}
2426

25-
java {
26-
toolchain.languageVersion = JavaLanguageVersion.of(Constants.JDK_VERSION)
27+
dependencies {
28+
annotationProcessor(libs.hiddenApiRefine.processor)
29+
compileOnly(libs.hiddenApiRefine.annotation)
30+
api(androidx.annotation)
2731
}

0 commit comments

Comments
 (0)