当前位置: 首页 > news >正文

俄文网站商城建设加强网站信息内容建设管理

俄文网站商城建设,加强网站信息内容建设管理,英山县城乡建设规划局网站,网页制作模板端午节目标#xff1a;通过本教程学习如何使用 Kotlin Multiplatform Library 创建多平台分发库(iOS#xff0c;安卓)。 创建一个项目 1、本教程使用的是Android Studio创建 2、选择 新建工程#xff0c;选择 Kotlin Multiplatform Library 3、点击next 输入需要创建的项目名称以…目标通过本教程学习如何使用 Kotlin Multiplatform Library 创建多平台分发库(iOS安卓)。 创建一个项目 1、本教程使用的是Android Studio创建 2、选择 新建工程选择 Kotlin Multiplatform Library 3、点击next 输入需要创建的项目名称以及存放的位置 4、点击next输入要创建的库的名称默认shared 建议都选上 测试单元。 到这项目基本创建完毕开始进入编写分发库代码阶段。 编写跨平台代码 定义要在公共代码中实现的类和接口 1、在公共模块中创建一个目录 org.jetbrains.base64 用来存放编写代码 2、在新建目录下面创建 Base64.kt 文件 3、在新创建的的文件中定义 Base64Encoder 将字节转换为 Base64格式的接口 package org.jetbrains.base64interface Base64Encoder {fun encode(src: ByteArray): ByteArray }4、定义对象 Base64Factory 作为公共代码 以提供接口实现实例 Base64Encoder的方式 expect object Base64Factory {fun createEncoder(): Base64Encoder }expext 是在跨平台代码中用到的关键字被expext 关键字修饰的Base64Factory对象 。对于需要分发的平台需要使用关键字 actual 关键字予以实现。 此时项目应该会爆红因为在公共模块中使用关键字 expect 创建了对象对应的分发平台还没实现这时需要一一进行实现 提供对应平台代码实现 安卓平台 1、找到安卓模块在模块下面创建一个 org.jetbrains.base64 的新包 2、在新包里面创建 Base64.kt 文件 3、使用关键字 actual 实现公共模块声明的 Base64Factory对象方法 package com.example.myapplication.org.jetbrains.base64import android.annotation.TargetApi import android.os.Build import java.util.*actual object Base64Factory {actual fun createEncoder(): Base64Encoder JvmBase64Encoder }object JvmBase64Encoder : Base64Encoder {TargetApi(Build.VERSION_CODES.O)override fun encode(src: ByteArray): ByteArray Base64.getEncoder().encode(src)}写到这安卓的代码以好应为安卓可以直接使用api进行转换。 iOS平台 iOS在这方面比较吃亏没有现成的东西可以用需要自己实现。 1、找到iOS模块在模块下面创建一个org.jetbrains.base64包 2、在新包下面创建一个 Base64.kt文件 3、实现公共模块的代码 package com.example.myapplication.org.jetbrains.base64private val BASE64_ALPHABET: String ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/ private val BASE64_MASK: Byte 0x3f private val BASE64_PAD: Char private val BASE64_INVERSE_ALPHABET IntArray(256) {BASE64_ALPHABET.indexOf(it.toChar()) }private fun Int.toBase64(): Char BASE64_ALPHABET[this]actual object Base64Factory {actual fun createEncoder(): Base64Encoder NativeBase64Encoder }object NativeBase64Encoder : Base64Encoder {// encode(src: ByteArray): ByteArrayoverride fun encode(src: ByteArray): ByteArray {fun ByteArray.getOrZero(index: Int): Int if (index size) 0 else get(index).toInt()// 4n / 3 is expected Base64 payloadval result ArrayListByte(4 * src.size / 3)var index 0while (index src.size) {val symbolsLeft src.size - indexval padSize if (symbolsLeft 3) 0 else (3 - symbolsLeft) * 8 / 6val chunk (src.getOrZero(index) shl 16) or (src.getOrZero(index 1) shl 8) or src.getOrZero(index 2)index 3for (i in 3 downTo padSize) {val char (chunk shr (6 * i)) and BASE64_MASK.toInt()result.add(char.toBase64().code.toByte())}// Fill the pad with repeat(padSize) { result.add(BASE64_PAD.code.toByte()) }}return result.toByteArray()}} 到此公共模块安卓模块以及iOS模块代码已经编写完毕。可以在测试类中测试刚才编写的代码。 在先写之前将 encodeToString 方法添加到 默认实现Base64Encoder 的接口中该方法 将字节数组转换成字符串方便测试。 interface Base64Encoder {fun encode(src: ByteArray): ByteArrayfun encodeToString(src: ByteArray): String {val encoded encode(src)return buildString(encoded.size) {encoded.forEach { append(it.toInt().toChar()) }}}}公共模块 object JvmBase64Encoder : Base64Encoder {TargetApi(Build.VERSION_CODES.O)override fun encode(src: ByteArray): ByteArray Base64.getEncoder().encode(src)TargetApi(Build.VERSION_CODES.O)override fun encodeToString(src: ByteArray): String Base64.getEncoder().encodeToString(src) }安卓模块 object NativeBase64Encoder : Base64Encoder {// encode(src: ByteArray): ByteArrayoverride fun encode(src: ByteArray): ByteArray {fun ByteArray.getOrZero(index: Int): Int if (index size) 0 else get(index).toInt()// 4n / 3 is expected Base64 payloadval result ArrayListByte(4 * src.size / 3)var index 0while (index src.size) {val symbolsLeft src.size - indexval padSize if (symbolsLeft 3) 0 else (3 - symbolsLeft) * 8 / 6val chunk (src.getOrZero(index) shl 16) or (src.getOrZero(index 1) shl 8) or src.getOrZero(index 2)index 3for (i in 3 downTo padSize) {val char (chunk shr (6 * i)) and BASE64_MASK.toInt()result.add(char.toBase64().code.toByte())}// Fill the pad with repeat(padSize) { result.add(BASE64_PAD.code.toByte()) }}return result.toByteArray()}// encodeToString(src: ByteArray): Stringoverride fun encodeToString(src: ByteArray): String {return super.encodeToString(src)}}iOS 模块 至此用于测试转换以及各模块代码已经编写完毕。剩下的就是便携测试模块代码。
http://www.hkea.cn/news/14319060/

相关文章:

  • 宣城高端网站建设猪八戒托管赏金做网站
  • 做外贸网站用哪些小语种网站空间如何使用
  • 网络网站知识app手机网站建设图片
  • 吴川网站建设重庆网站建设制作
  • 小域名 网站备案做内部网站费用
  • 网站建设千套素材制作一个网站并上传访问
  • 给别人做网站需要增值电信做html的简单网站
  • 四川成都网站网页设计wordpress升级无法创建目录
  • 外贸网站高端定做广东建设项目备案公示网站
  • 深圳企业网站建设服务中心wordpress 国内 主题
  • 网站可以不备案石家庄网络关键词排名
  • 做网站分什么酒店移动网站建设方案
  • 本地江苏网站建设如何做网站轮播图和菜单全屏
  • 仿站是什么企业网站建设的四大因素
  • 如何自己做直播网站长沙楼市最新消息
  • 掌网站开发的基本流程旅游网站建设ppt
  • 网页与网站设计实验报告遵义在线论坛
  • 著名网站建设公司资阳网站建设
  • 网站后台怎么修改代码wordpress 群
  • 网站哪里做达州网站建设yufanse
  • 吕梁网站制作吕梁安全网站360全景图怎么做
  • 深圳网站优讳化做网站的用什么电脑好
  • 电商网站开发模块跨境电商资讯网
  • 哪家专门做特卖的网站网站设计就业
  • pc wap 装修公司网站源码ps做网站心得
  • 网站开发实战上海网站建设百度推广公司
  • 摄影网站建设的意义flash个人网站欣赏
  • 苏州行业网站建设旅游网站html5代码模板
  • 网站运营学习网站规划书包括哪些方面
  • 宁波网站关键词优化代码网站建设承揽合同