-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feat: android target * chore: fix doc for android * support jdk 1.8
- Loading branch information
Madray Haven
committed
Feb 17, 2024
1 parent
854ea84
commit 82d3d5d
Showing
7 changed files
with
150 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,16 @@ | ||
rootProject.name = "Kotlin-Multiplatform-AppDirs" | ||
dependencyResolutionManagement { | ||
repositories { | ||
mavenCentral() | ||
google() | ||
} | ||
} | ||
|
||
pluginManagement { | ||
repositories { | ||
mavenCentral() | ||
google() | ||
gradlePluginPortal() | ||
} | ||
} | ||
|
||
rootProject.name = "Kotlin-Multiplatform-AppDirs" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package ca.gosyer.appdirs | ||
|
||
import ca.gosyer.appdirs.impl.AndroidAppDirs | ||
import ca.gosyer.appdirs.impl.ContextRef | ||
|
||
actual fun AppDirs( | ||
appName: String?, | ||
appAuthor: String?, | ||
vararg extra: String | ||
): AppDirs = AndroidAppDirs( | ||
context = ContextRef, | ||
extra = extra, | ||
) |
44 changes: 44 additions & 0 deletions
44
src/androidMain/kotlin/ca/gosyer/appdirs/impl/AndroidAppDirs.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
package ca.gosyer.appdirs.impl | ||
|
||
import android.content.Context | ||
import ca.gosyer.appdirs.AppDirs | ||
import java.io.File | ||
|
||
class AndroidAppDirs( | ||
private val context: Context, | ||
vararg extra: String, | ||
): AppDirs { | ||
private val extras = extra.joinToString(pathSeparator()) | ||
|
||
override fun getUserDataDir(roaming: Boolean): String { | ||
return getUserDir("data") | ||
} | ||
|
||
override fun getUserCacheDir(): String { | ||
return File(context.cacheDir, extras).canonicalPath | ||
} | ||
|
||
override fun getUserConfigDir(roaming: Boolean): String { | ||
return getUserDir("config") | ||
} | ||
|
||
override fun getUserLogDir(): String { | ||
return getUserDir("logs") | ||
} | ||
|
||
private fun getUserDir(type: String, mode: Int = Context.MODE_PRIVATE): String { | ||
return File(context.getDir(type, mode), extras).canonicalPath | ||
} | ||
|
||
override fun getSiteDataDir(multiPath: Boolean): String { | ||
return context.getExternalFilesDir("data")!!.canonicalPath | ||
} | ||
|
||
override fun getSiteConfigDir(multiPath: Boolean): String { | ||
return context.getExternalFilesDir("config")!!.canonicalPath | ||
} | ||
|
||
override fun getSharedDir(): String { | ||
return context.getExternalFilesDir("shared")!!.canonicalPath | ||
} | ||
} |
23 changes: 23 additions & 0 deletions
23
src/androidMain/kotlin/ca/gosyer/appdirs/impl/AndroidUtil.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package ca.gosyer.appdirs.impl | ||
|
||
import android.app.Application | ||
import android.content.Context | ||
import ca.gosyer.appdirs.AppDirsException | ||
import java.lang.ref.WeakReference | ||
|
||
internal actual fun home(): String { | ||
throw UnsupportedOperationException() | ||
} | ||
|
||
internal actual fun pathSeparator(): String = "/" | ||
|
||
internal actual fun fileSeparator(): String = ":" | ||
|
||
private var _Context: WeakReference<Context>? = null | ||
internal val ContextRef: Context get() { | ||
return _Context?.get() ?: throw AppDirsException("In android target, please call Application#attachAppDirs() first!") | ||
} | ||
|
||
fun Application.attachAppDirs() { | ||
_Context = WeakReference(this) | ||
} |