一、项目地址:Github
allprojects { repositories { mavenCentral() } }dependencyResolutionManagement { repositories { mavenCentral() } }plugins{ id "com.google.devtools.ksp" version "2.0.10-1.0.24" id "org.jetbrains.kotlin.jvm" version "2.0.10" }//ksp插件 plugins { id 'com.google.devtools.ksp' } android{ //JAVA和jvm设置为11或更高 compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = '11' } } dependencies { //扩展库 implementation 'io.github.hearthappy:vma-ktx:1.0.4' //处理注解自动生成库 ksp 'io.github.hearthappy:vma-processor:1.0.4' }@ViewModelAutomation("MainViewModel") interface ApiService { @BindStateFlow @POST("login") suspend fun login(@Body loginBody: LoginBody): ResLogin @BindStateFlow("getImages", "sfImages") @GET("getImages") suspend fun getImage(@Query("page") page: Int, @Query("size") size: Int): ResImages @BindLiveData @GET("sentences") suspend fun getSentences(): BaseData<ResSentences> }./gradlew kspDebugKotlin 或
./gradlew kspReleaseKotlin
app/build/generated/ksp/*//RetrofitManage.apiService:是Retrofit的api代理接口 private val viewModel: MainViewModel by vma(RetrofitManage.apiService)private val viewModel by vmaFromActivity<MainViewModel>()//StateFlow监听 lifecycleScope.launch { lifecycle.repeatOnLifecycle(Lifecycle.State.CREATED) { viewModel.sfImages.collect { when (it) { is FlowResult.Default -> {} is FlowResult.Failed -> showMessage(it.asFailedMessage()) is FlowResult.Loading -> showMessage(getString(R.string.loading)) is FlowResult.Succeed<*> -> showMessage(it.body.toString()) is FlowResult.Throwable -> showMessage(it.asThrowableMessage()) } } } }//LiveData监听 viewModel.getSentencesLiveData.observe(this@MainActivity) { it?.let { when (it) { is Result.Failed -> showMessage(it.asFailedMessage()) is Result.Succeed -> showMessage(it.body.toString()) is Result.Throwable -> showMessage(it.asThrowableMessage()) } } }@DataStore("filename") data class ResSentences( @DataWrite("from") var from: String = "", @DataWrite("name") var name: String = "") implementation 'androidx.datastore:datastore-preferences:1.0.0' implementation 'androidx.datastore:datastore-preferences-core:1.0.0'-keep public class * extends androidx.lifecycle.AndroidViewModel -keep class com.hearthappy.vma_ktx.factory.** { *; } -keep class com.hearthappy.vma_ktx.network.** { *; } -keep class com.hearthappy.vma.model.response.** {*;} -keepattributes Signature -keepclassmembers class * { @org.jetbrains.annotations.NotNull <methods>; } 
