Som*_*boy 1 kotlin android-resources kotlin-multiplatform android-jetpack-compose compose-multiplatform
很简单;刚刚通过向导创建了一个 Compose Multiplatform 项目。
继续创建主题;但我想使用相同的字体,所以我poppins.ttf把commonMain/resources/font/.
然后我在模块中声明了以下内容commonMain:
expect val projectFontFamily: FontFamily
Run Code Online (Sandbox Code Playgroud)
在我使用的模块上commonDesktop:
actual val projectFontFamily: FontFamily = FontFamily(
Font("font/poppins.ttf")
)
Run Code Online (Sandbox Code Playgroud)
太棒了,成功了。从今起commonAndroid:
actual val projectFontFamily: FontFamily = FontFamily(
Font(R.font.poppins)
)
Run Code Online (Sandbox Code Playgroud)
由于某种原因,该类R未正确生成,我无法使用R.font.poppins.
如果我将“资源”重命名为“res”并将字体推入其中,res/font/那么它就可以工作。(但我只是复制了字体文件)。
我该如何解决这个问题?
事实证明,这是一个 gradle 问题,而且对 KMM 缺乏经验。
默认情况下,Kotlin 多平台项目(无论平台如何)在resources每个模块内调用的文件夹中提供资源。
问题是Android的默认文件夹需要被调用res
因此,您可以通过以下任一方式应用修复:
resources将文件夹更改为res并相应修改 gradle或在 Android 项目中指示资源文件夹res不是resources.
我们最终在我们的项目中做了后者
// build.gradle.kts
android {
...
sourceSets["main"].res.srcDirs(
"src/commonMain/resources",
"src/androidMain/resources"
)
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1555 次 |
| 最近记录: |