Commit b592ddbd authored by dsq's avatar dsq

expect/actual实现

parent 519a5ca4
...@@ -78,15 +78,19 @@ kotlin { ...@@ -78,15 +78,19 @@ kotlin {
ohosArm64 { ohosArm64 {
binaries.sharedLib { binaries.sharedLib {
baseName = "kn" // 共享库名称为kn baseName = "kn" // 共享库名称为kn
freeCompilerArgs += listOf("-Xbinary=sanitizer=address") freeCompilerArgs += listOf(
"-Xbinary=sanitizer=address",
"-Xdisable-platform-devices" // 禁用平台设备库
)
export(libs.compose.multiplatform.export) // 导出compose多平台库的接口 export(libs.compose.multiplatform.export) // 导出compose多平台库的接口
} }
val main by compilations.getting // 获取主编译内容 // val main by compilations.getting // 获取主编译内容
// val resource by main.cinterops.creating { // val resource by main.cinterops.creating {
// //配置C interop(cinterop)资源 // //配置C interop(cinterop)资源
// defFile(file("src/ohosArm64Main/cinterop/resource.def")) // cinterop定义文件 // defFile(file("src/ohosArm64Main/cinterop/resource.def")) // cinterop定义文件
// includeDirs(file("src/ohosArm64Main/cinterop/include")) // cinterop包含目录 // includeDirs(file("src/ohosArm64Main/cinterop/include")) // cinterop包含目录
// } // compilerOpts("-fno-modules") // 禁用模块以避免平台库依赖
// }
} }
...@@ -108,9 +112,21 @@ kotlin { ...@@ -108,9 +112,21 @@ kotlin {
implementation(libs.kotlinx.coroutines.core) // 官方协程核心库 implementation(libs.kotlinx.coroutines.core) // 官方协程核心库
implementation(libs.atomicFu) // Kotlin AtomicFu原子库 implementation(libs.atomicFu) // Kotlin AtomicFu原子库
} }
commonTest.dependencies {
implementation(libs.kotlin.test) // 添加Kotlin通用测试依赖
}
val ohosArm64Main by getting { val ohosArm64Main by getting {
dependencies { dependencies {
api(libs.compose.multiplatform.export) // 导出compose多平台接口给依赖消费者 api(libs.compose.multiplatform.export) // 导出compose多平台接口给依赖消费者
// 添加OHOS平台特定依赖
implementation("org.jetbrains.kotlin:kotlin-stdlib")
}
}
// iOS平台配置
iosMain {
dependencies {
implementation(libs.kotlinx.coroutines.core) // iOS也需要协程支持
} }
} }
} }
......
package com.dong.demo013
actual fun createTimer(): com.dong.demo013.TimerController {
TODO("Not yet implemented")
}
package com.dong.demo013 package com.dong.demo013
import com.dong.test1.TimerControllerImpl import com.dong.demo013.TimerControllerImpl
import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
......
package com.dong.test1 package com.dong.demo013
import com.dong.demo013.TimerController import com.dong.demo013.TimerController
import kotlinx.atomicfu.AtomicBoolean import kotlinx.atomicfu.AtomicBoolean
......
...@@ -16,4 +16,4 @@ kotlin.native.cacheKind=none ...@@ -16,4 +16,4 @@ kotlin.native.cacheKind=none
org.gradle.internal.http.connectionTimeout=100000 org.gradle.internal.http.connectionTimeout=100000
org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.socketTimeout=100000
kotlin.mpp.applyDefaultHierarchyTemplate=false # kotlin.mpp.applyDefaultHierarchyTemplate=false
...@@ -122,7 +122,7 @@ typedef struct { ...@@ -122,7 +122,7 @@ typedef struct {
} libkn_kref_com_dong_demo013_OhosPlatform; } libkn_kref_com_dong_demo013_OhosPlatform;
typedef struct { typedef struct {
libkn_KNativePtr pinned; libkn_KNativePtr pinned;
} libkn_kref_com_dong_test1_TimerControllerImpl; } libkn_kref_com_dong_demo013_TimerControllerImpl;
extern void* MainArkUIViewController(void* env); extern void* MainArkUIViewController(void* env);
extern libkn_KInt hiLogPrintMsg(libkn_KUInt type, libkn_KUInt level, libkn_KUInt domain, const char* tag, const char* message); extern libkn_KInt hiLogPrintMsg(libkn_KUInt type, libkn_KUInt level, libkn_KUInt domain, const char* tag, const char* message);
...@@ -293,69 +293,85 @@ typedef struct { ...@@ -293,69 +293,85 @@ typedef struct {
libkn_kref_com_dong_demo013_OhosPlatform (*OhosPlatform)(); libkn_kref_com_dong_demo013_OhosPlatform (*OhosPlatform)();
const char* (*get_name)(libkn_kref_com_dong_demo013_OhosPlatform thiz); const char* (*get_name)(libkn_kref_com_dong_demo013_OhosPlatform thiz);
} OhosPlatform; } OhosPlatform;
struct {
libkn_KType* (*_type)(void);
libkn_kref_com_dong_demo013_TimerControllerImpl (*TimerControllerImpl)();
libkn_KLong (*get_elapsedTime)(libkn_kref_com_dong_demo013_TimerControllerImpl thiz);
libkn_KBoolean (*get_isRunning)(libkn_kref_com_dong_demo013_TimerControllerImpl thiz);
void (*reset)(libkn_kref_com_dong_demo013_TimerControllerImpl thiz);
void (*start)(libkn_kref_com_dong_demo013_TimerControllerImpl thiz);
void (*stop)(libkn_kref_com_dong_demo013_TimerControllerImpl thiz);
} TimerControllerImpl;
libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter)(); libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter)();
libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter)(); libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter)();
libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter)(); libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter)();
libkn_KInt (*com_dong_demo013_TimerControllerImpl$stableprop_getter)();
libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter_)(); libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter_)();
libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter_)(); libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter_)();
libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter_)(); libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter_)();
libkn_KInt (*com_dong_demo013_TimerControllerImpl$stableprop_getter_)();
libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter__)(); libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter__)();
libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter__)(); libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter__)();
libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter__)(); libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter__)();
libkn_KInt (*com_dong_demo013_TimerControllerImpl$stableprop_getter__)();
libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter___)(); libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter___)();
libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter___)(); libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter___)();
libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter___)(); libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter___)();
libkn_KInt (*com_dong_demo013_TimerControllerImpl$stableprop_getter___)();
libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter____)(); libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter____)();
libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter____)(); libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter____)();
libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter____)(); libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter____)();
libkn_KInt (*com_dong_demo013_TimerControllerImpl$stableprop_getter____)();
libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter_____)(); libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter_____)();
libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter_____)(); libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter_____)();
libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter_____)(); libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter_____)();
libkn_KInt (*com_dong_demo013_TimerControllerImpl$stableprop_getter_____)();
libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter______)(); libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter______)();
libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter______)(); libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter______)();
libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter______)(); libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter______)();
libkn_KInt (*com_dong_demo013_TimerControllerImpl$stableprop_getter______)();
libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter_______)(); libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter_______)();
libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter_______)(); libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter_______)();
libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter_______)(); libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter_______)();
libkn_KInt (*com_dong_demo013_TimerControllerImpl$stableprop_getter_______)();
libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter________)(); libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter________)();
libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter________)(); libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter________)();
libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter________)(); libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter________)();
libkn_KInt (*com_dong_demo013_TimerControllerImpl$stableprop_getter________)();
libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter_________)(); libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter_________)();
libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter_________)(); libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter_________)();
libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter_________)(); libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter_________)();
libkn_KInt (*com_dong_demo013_TimerControllerImpl$stableprop_getter_________)();
libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter__________)(); libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter__________)();
libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter__________)(); libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter__________)();
libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter__________)(); libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter__________)();
libkn_KInt (*com_dong_demo013_TimerControllerImpl$stableprop_getter__________)();
libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter___________)(); libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter___________)();
libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter___________)(); libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter___________)();
libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter___________)(); libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter___________)();
libkn_KInt (*com_dong_demo013_TimerControllerImpl$stableprop_getter___________)();
void* (*MainArkUIViewController_)(void* env); void* (*MainArkUIViewController_)(void* env);
libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter____________)(); libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter____________)();
libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter____________)(); libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter____________)();
libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter____________)(); libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter____________)();
libkn_KInt (*com_dong_demo013_TimerControllerImpl$stableprop_getter____________)();
libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter_____________)(); libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter_____________)();
libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter_____________)(); libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter_____________)();
libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter_____________)(); libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter_____________)();
libkn_KInt (*com_dong_demo013_TimerControllerImpl$stableprop_getter_____________)();
libkn_kref_com_dong_demo013_Platform (*getPlatform)(); libkn_kref_com_dong_demo013_Platform (*getPlatform)();
libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter______________)(); libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter______________)();
libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter______________)(); libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter______________)();
libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter______________)(); libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter______________)();
libkn_KInt (*com_dong_demo013_TimerControllerImpl$stableprop_getter______________)();
libkn_kref_com_dong_demo013_TimerController (*createTimer)(); libkn_kref_com_dong_demo013_TimerController (*createTimer)();
libkn_KInt (*hiLogPrintMsg_)(libkn_KUInt type, libkn_KUInt level, libkn_KUInt domain, const char* tag, const char* message); libkn_KInt (*hiLogPrintMsg_)(libkn_KUInt type, libkn_KUInt level, libkn_KUInt domain, const char* tag, const char* message);
libkn_kref_com_dong_demo013_LogController (*startLog)(libkn_KInt speed, libkn_kref_kotlin_Function1 onLogGenerated, libkn_kref_kotlin_Function1 onTimerUpdated); libkn_kref_com_dong_demo013_LogController (*startLog)(libkn_KInt speed, libkn_kref_kotlin_Function1 onLogGenerated, libkn_kref_kotlin_Function1 onTimerUpdated);
libkn_KInt (*com_dong_demo013_Greeting$stableprop_getter_______________)();
libkn_KInt (*com_dong_demo013_LogControllerImpl$stableprop_getter_______________)();
libkn_KInt (*com_dong_demo013_OhosPlatform$stableprop_getter_______________)();
libkn_KInt (*com_dong_demo013_TimerControllerImpl$stableprop_getter_______________)();
} demo013; } demo013;
struct {
struct {
libkn_KType* (*_type)(void);
libkn_kref_com_dong_test1_TimerControllerImpl (*TimerControllerImpl)();
libkn_KLong (*get_elapsedTime)(libkn_kref_com_dong_test1_TimerControllerImpl thiz);
libkn_KBoolean (*get_isRunning)(libkn_kref_com_dong_test1_TimerControllerImpl thiz);
void (*reset)(libkn_kref_com_dong_test1_TimerControllerImpl thiz);
void (*start)(libkn_kref_com_dong_test1_TimerControllerImpl thiz);
void (*stop)(libkn_kref_com_dong_test1_TimerControllerImpl thiz);
} TimerControllerImpl;
libkn_KInt (*com_dong_test1_TimerControllerImpl$stableprop_getter)();
} test1;
} dong; } dong;
} com; } com;
struct { struct {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment