Skip to content

Commit a98b87a

Browse files
chore: sync missing root files and folders from KMP project template (#2965)
1 parent a6713db commit a98b87a

File tree

191 files changed

+22575
-97
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

191 files changed

+22575
-97
lines changed
Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
/**
2+
* Kotlin Multiplatform project hierarchy template configuration.
3+
*
4+
* This file defines a structured hierarchy for organizing source sets in Kotlin Multiplatform
5+
* projects. It establishes a logical grouping of platform targets that enables efficient code
6+
* sharing across platforms with similar characteristics.
7+
*
8+
* The hierarchy template creates the following logical groupings:
9+
* - `common`: Base shared code for all platforms
10+
* - `nonAndroid`: Code shared between JVM, JS, and native platforms, excluding Android
11+
* - `jsCommon`: Code shared between JavaScript and WebAssembly JavaScript targets
12+
* - `nonJsCommon`: Code shared between JVM and native platforms, excluding JS platforms
13+
* - `jvmCommon`: Code shared between Android and JVM targets
14+
* - `nonJvmCommon`: Code shared between JS and native platforms, excluding JVM platforms
15+
* - `native`: Code shared across all native platforms
16+
* - `apple`: Code shared across Apple platforms (iOS, macOS)
17+
* - `ios`: iOS-specific code
18+
* - `macos`: macOS-specific code
19+
* - `nonNative`: Code shared between JS and JVM platforms
20+
*
21+
* This template applies to both main and test source sets, establishing a consistent
22+
* structure throughout the project.
23+
*
24+
* Note: This implementation uses experimental Kotlin Gradle plugin APIs and may be subject
25+
* to change in future Kotlin releases.
26+
*/
27+
@file:OptIn(ExperimentalKotlinGradlePluginApi::class)
28+
29+
package org.mifos.mobile
30+
31+
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
32+
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
33+
import org.jetbrains.kotlin.gradle.plugin.KotlinHierarchyBuilder
34+
import org.jetbrains.kotlin.gradle.plugin.KotlinHierarchyTemplate
35+
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetTree
36+
37+
/**
38+
* Defines the hierarchical structure for source set organization.
39+
*
40+
* This template establishes the relationships between different platform targets,
41+
* creating logical groupings based on platform similarities to facilitate code sharing.
42+
*/
43+
private val hierarchyTemplate = KotlinHierarchyTemplate {
44+
withSourceSetTree(
45+
KotlinSourceSetTree.main,
46+
KotlinSourceSetTree.test,
47+
)
48+
49+
common {
50+
withCompilations { true }
51+
52+
groupNonAndroid()
53+
groupJsCommon()
54+
groupNonJsCommon()
55+
groupJvmCommon()
56+
groupNonJvmCommon()
57+
groupNative()
58+
groupNonNative()
59+
groupJvmJsCommon()
60+
groupMobile()
61+
}
62+
}
63+
64+
/**
65+
* Creates a group of non-Android platforms (JVM, JS, and native).
66+
*/
67+
private fun KotlinHierarchyBuilder.groupNonAndroid() {
68+
group("nonAndroid") {
69+
withJvm()
70+
groupJsCommon()
71+
groupNative()
72+
}
73+
}
74+
75+
/**
76+
* Creates a group of JavaScript-related platforms (JS and WebAssembly JS).
77+
*/
78+
private fun KotlinHierarchyBuilder.groupJsCommon() {
79+
group("jsCommon") {
80+
withJs()
81+
withWasmJs()
82+
}
83+
}
84+
85+
/**
86+
* Creates a group of non-JavaScript platforms (JVM-based and native).
87+
*/
88+
private fun KotlinHierarchyBuilder.groupNonJsCommon() {
89+
group("nonJsCommon") {
90+
groupJvmCommon()
91+
groupNative()
92+
}
93+
}
94+
95+
/**
96+
* Creates a group of JVM-based platforms (Android and JVM).
97+
*/
98+
private fun KotlinHierarchyBuilder.groupJvmCommon() {
99+
group("jvmCommon") {
100+
withAndroidTarget()
101+
withJvm()
102+
}
103+
}
104+
105+
/**
106+
* Creates a group of non-JVM platforms (JavaScript and native).
107+
*/
108+
private fun KotlinHierarchyBuilder.groupNonJvmCommon() {
109+
group("nonJvmCommon") {
110+
groupJsCommon()
111+
groupNative()
112+
}
113+
}
114+
115+
/**
116+
* Creates a group of JVM, JS platforms (JavaScript and JVM).
117+
*/
118+
private fun KotlinHierarchyBuilder.groupJvmJsCommon() {
119+
group("jvmJsCommon") {
120+
groupJsCommon()
121+
withJvm()
122+
}
123+
}
124+
125+
/**
126+
* Creates a hierarchical group of native platforms with subgroups for Apple platforms.
127+
*/
128+
private fun KotlinHierarchyBuilder.groupNative() {
129+
group("native") {
130+
withNative()
131+
132+
group("apple") {
133+
withApple()
134+
135+
group("ios") {
136+
withIos()
137+
}
138+
139+
group("macos") {
140+
withMacos()
141+
}
142+
}
143+
}
144+
}
145+
146+
/**
147+
* Creates a group of non-native platforms (JavaScript and JVM-based).
148+
*/
149+
private fun KotlinHierarchyBuilder.groupNonNative() {
150+
group("nonNative") {
151+
groupJsCommon()
152+
groupJvmCommon()
153+
}
154+
}
155+
156+
private fun KotlinHierarchyBuilder.groupMobile() {
157+
group("mobile") {
158+
withAndroidTarget()
159+
withApple()
160+
}
161+
}
162+
163+
/**
164+
* Applies the predefined hierarchy template to a Kotlin Multiplatform project.
165+
*
166+
* This extension function should be called within the `kotlin` block of a Multiplatform
167+
* project's build script to establish the source set hierarchy defined in this file.
168+
*
169+
* Example usage:
170+
* ```
171+
* kotlin {
172+
* applyProjectHierarchyTemplate()
173+
* // Configure targets...
174+
* }
175+
* ```
176+
*/
177+
fun KotlinMultiplatformExtension.applyProjectHierarchyTemplate() {
178+
applyHierarchyTemplate(hierarchyTemplate)
179+
}

build-logic/convention/src/main/kotlin/org/mifos/mobile/KotlinMultiplatform.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
99
@OptIn(ExperimentalWasmDsl::class, ExperimentalKotlinGradlePluginApi::class)
1010
internal fun Project.configureKotlinMultiplatform() {
1111
extensions.configure<KotlinMultiplatformExtension> {
12-
applyDefaultHierarchyTemplate()
12+
applyProjectHierarchyTemplate()
1313

1414
jvm("desktop")
1515
androidTarget()

cmp-android/prodRelease-badging.txt

Lines changed: 89 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package: name='org.mifospay' versionCode='1' versionName='2024.12.4-beta.0.4' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
1+
package: name='org.mifos.mobile' versionCode='1' versionName='2024.12.4-beta.0.4' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
22
sdkVersion:'26'
33
targetSdkVersion:'34'
44
uses-permission: name='android.permission.INTERNET'
@@ -12,100 +12,100 @@ uses-permission: name='android.permission.WAKE_LOCK'
1212
uses-permission: name='com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE'
1313
uses-permission: name='android.permission.ACCESS_ADSERVICES_ATTRIBUTION'
1414
uses-permission: name='android.permission.ACCESS_ADSERVICES_AD_ID'
15-
uses-permission: name='org.mifospay.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
16-
application-label:'Mifos Pay'
17-
application-label-af:'Mifos Pay'
18-
application-label-am:'Mifos Pay'
19-
application-label-ar:'Mifos Pay'
20-
application-label-as:'Mifos Pay'
21-
application-label-az:'Mifos Pay'
22-
application-label-be:'Mifos Pay'
23-
application-label-bg:'Mifos Pay'
24-
application-label-bn:'Mifos Pay'
25-
application-label-bs:'Mifos Pay'
26-
application-label-ca:'Mifos Pay'
27-
application-label-cs:'Mifos Pay'
28-
application-label-da:'Mifos Pay'
29-
application-label-de:'Mifos Pay'
30-
application-label-el:'Mifos Pay'
31-
application-label-en-AU:'Mifos Pay'
32-
application-label-en-CA:'Mifos Pay'
33-
application-label-en-GB:'Mifos Pay'
34-
application-label-en-IN:'Mifos Pay'
35-
application-label-en-XC:'Mifos Pay'
36-
application-label-es:'Mifos Pay'
37-
application-label-es-US:'Mifos Pay'
38-
application-label-et:'Mifos Pay'
39-
application-label-eu:'Mifos Pay'
40-
application-label-fa:'Mifos Pay'
41-
application-label-fi:'Mifos Pay'
42-
application-label-fr:'Mifos Pay'
43-
application-label-fr-CA:'Mifos Pay'
44-
application-label-gl:'Mifos Pay'
45-
application-label-gu:'Mifos Pay'
46-
application-label-hi:'Mifos Pay'
47-
application-label-hr:'Mifos Pay'
48-
application-label-hu:'Mifos Pay'
49-
application-label-hy:'Mifos Pay'
50-
application-label-in:'Mifos Pay'
51-
application-label-is:'Mifos Pay'
52-
application-label-it:'Mifos Pay'
53-
application-label-iw:'Mifos Pay'
54-
application-label-ja:'Mifos Pay'
55-
application-label-ka:'Mifos Pay'
56-
application-label-kk:'Mifos Pay'
57-
application-label-km:'Mifos Pay'
58-
application-label-kn:'Mifos Pay'
59-
application-label-ko:'Mifos Pay'
60-
application-label-ky:'Mifos Pay'
61-
application-label-lo:'Mifos Pay'
62-
application-label-lt:'Mifos Pay'
63-
application-label-lv:'Mifos Pay'
64-
application-label-mk:'Mifos Pay'
65-
application-label-ml:'Mifos Pay'
66-
application-label-mn:'Mifos Pay'
67-
application-label-mr:'Mifos Pay'
68-
application-label-ms:'Mifos Pay'
69-
application-label-my:'Mifos Pay'
70-
application-label-nb:'Mifos Pay'
71-
application-label-ne:'Mifos Pay'
72-
application-label-nl:'Mifos Pay'
73-
application-label-or:'Mifos Pay'
74-
application-label-pa:'Mifos Pay'
75-
application-label-pl:'Mifos Pay'
76-
application-label-pt:'Mifos Pay'
77-
application-label-pt-BR:'Mifos Pay'
78-
application-label-pt-PT:'Mifos Pay'
79-
application-label-ro:'Mifos Pay'
80-
application-label-ru:'Mifos Pay'
81-
application-label-si:'Mifos Pay'
82-
application-label-sk:'Mifos Pay'
83-
application-label-sl:'Mifos Pay'
84-
application-label-sq:'Mifos Pay'
85-
application-label-sr:'Mifos Pay'
86-
application-label-sr-Latn:'Mifos Pay'
87-
application-label-sv:'Mifos Pay'
88-
application-label-sw:'Mifos Pay'
89-
application-label-ta:'Mifos Pay'
90-
application-label-te:'Mifos Pay'
91-
application-label-th:'Mifos Pay'
92-
application-label-tl:'Mifos Pay'
93-
application-label-tr:'Mifos Pay'
94-
application-label-uk:'Mifos Pay'
95-
application-label-ur:'Mifos Pay'
96-
application-label-uz:'Mifos Pay'
97-
application-label-vi:'Mifos Pay'
98-
application-label-zh-CN:'Mifos Pay'
99-
application-label-zh-HK:'Mifos Pay'
100-
application-label-zh-TW:'Mifos Pay'
101-
application-label-zu:'Mifos Pay'
15+
uses-permission: name='org.mifos.mobile.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
16+
application-label:'Mifos Mobile'
17+
application-label-af:'Mifos Mobile'
18+
application-label-am:'Mifos Mobile'
19+
application-label-ar:'Mifos Mobile'
20+
application-label-as:'Mifos Mobile'
21+
application-label-az:'Mifos Mobile'
22+
application-label-be:'Mifos Mobile'
23+
application-label-bg:'Mifos Mobile'
24+
application-label-bn:'Mifos Mobile'
25+
application-label-bs:'Mifos Mobile'
26+
application-label-ca:'Mifos Mobile'
27+
application-label-cs:'Mifos Mobile'
28+
application-label-da:'Mifos Mobile'
29+
application-label-de:'Mifos Mobile'
30+
application-label-el:'Mifos Mobile'
31+
application-label-en-AU:'Mifos Mobile'
32+
application-label-en-CA:'Mifos Mobile'
33+
application-label-en-GB:'Mifos Mobile'
34+
application-label-en-IN:'Mifos Mobile'
35+
application-label-en-XC:'Mifos Mobile'
36+
application-label-es:'Mifos Mobile'
37+
application-label-es-US:'Mifos Mobile'
38+
application-label-et:'Mifos Mobile'
39+
application-label-eu:'Mifos Mobile'
40+
application-label-fa:'Mifos Mobile'
41+
application-label-fi:'Mifos Mobile'
42+
application-label-fr:'Mifos Mobile'
43+
application-label-fr-CA:'Mifos Mobile'
44+
application-label-gl:'Mifos Mobile'
45+
application-label-gu:'Mifos Mobile'
46+
application-label-hi:'Mifos Mobile'
47+
application-label-hr:'Mifos Mobile'
48+
application-label-hu:'Mifos Mobile'
49+
application-label-hy:'Mifos Mobile'
50+
application-label-in:'Mifos Mobile'
51+
application-label-is:'Mifos Mobile'
52+
application-label-it:'Mifos Mobile'
53+
application-label-iw:'Mifos Mobile'
54+
application-label-ja:'Mifos Mobile'
55+
application-label-ka:'Mifos Mobile'
56+
application-label-kk:'Mifos Mobile'
57+
application-label-km:'Mifos Mobile'
58+
application-label-kn:'Mifos Mobile'
59+
application-label-ko:'Mifos Mobile'
60+
application-label-ky:'Mifos Mobile'
61+
application-label-lo:'Mifos Mobile'
62+
application-label-lt:'Mifos Mobile'
63+
application-label-lv:'Mifos Mobile'
64+
application-label-mk:'Mifos Mobile'
65+
application-label-ml:'Mifos Mobile'
66+
application-label-mn:'Mifos Mobile'
67+
application-label-mr:'Mifos Mobile'
68+
application-label-ms:'Mifos Mobile'
69+
application-label-my:'Mifos Mobile'
70+
application-label-nb:'Mifos Mobile'
71+
application-label-ne:'Mifos Mobile'
72+
application-label-nl:'Mifos Mobile'
73+
application-label-or:'Mifos Mobile'
74+
application-label-pa:'Mifos Mobile'
75+
application-label-pl:'Mifos Mobile'
76+
application-label-pt:'Mifos Mobile'
77+
application-label-pt-BR:'Mifos Mobile'
78+
application-label-pt-PT:'Mifos Mobile'
79+
application-label-ro:'Mifos Mobile'
80+
application-label-ru:'Mifos Mobile'
81+
application-label-si:'Mifos Mobile'
82+
application-label-sk:'Mifos Mobile'
83+
application-label-sl:'Mifos Mobile'
84+
application-label-sq:'Mifos Mobile'
85+
application-label-sr:'Mifos Mobile'
86+
application-label-sr-Latn:'Mifos Mobile'
87+
application-label-sv:'Mifos Mobile'
88+
application-label-sw:'Mifos Mobile'
89+
application-label-ta:'Mifos Mobile'
90+
application-label-te:'Mifos Mobile'
91+
application-label-th:'Mifos Mobile'
92+
application-label-tl:'Mifos Mobile'
93+
application-label-tr:'Mifos Mobile'
94+
application-label-uk:'Mifos Mobile'
95+
application-label-ur:'Mifos Mobile'
96+
application-label-uz:'Mifos Mobile'
97+
application-label-vi:'Mifos Mobile'
98+
application-label-zh-CN:'Mifos Mobile'
99+
application-label-zh-HK:'Mifos Mobile'
100+
application-label-zh-TW:'Mifos Mobile'
101+
application-label-zu:'Mifos Mobile'
102102
application-icon-160:'res/mipmap-anydpi-v26/ic_launcher.xml'
103103
application-icon-240:'res/mipmap-anydpi-v26/ic_launcher.xml'
104104
application-icon-320:'res/mipmap-anydpi-v26/ic_launcher.xml'
105105
application-icon-480:'res/mipmap-anydpi-v26/ic_launcher.xml'
106106
application-icon-640:'res/mipmap-anydpi-v26/ic_launcher.xml'
107107
application-icon-65534:'res/mipmap-anydpi-v26/ic_launcher.xml'
108-
application: label='Mifos Pay' icon='res/mipmap-anydpi-v26/ic_launcher.xml'
108+
application: label='Mifos Mobile' icon='res/mipmap-anydpi-v26/ic_launcher.xml'
109109
launchable-activity: name='org.mifospay.MainActivity' label='' icon=''
110110
property: name='android.adservices.AD_SERVICES_CONFIG' resource='res/xml/ga_ad_services_config.xml'
111111
uses-library-not-required:'androidx.window.extensions'

0 commit comments

Comments
 (0)