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

企业网站用什么技术做广州网站排名专业乐云seo

企业网站用什么技术做,广州网站排名专业乐云seo,哈尔滨网站建设价格,wordpress博客破解主题app打包生成apk后通常需要进行备份,但是要区分好哪个apk是什么版本的、什么时候打包的,以方便以后区分使用。 最开始的想法是把版本号、创建时间这些加在apk文件名上即可,但是公司要求apk使用一个固定的名称,那我怎么保存版本号信…

app打包生成apk后通常需要进行备份,但是要区分好哪个apk是什么版本的、什么时候打包的,以方便以后区分使用。

最开始的想法是把版本号、创建时间这些加在apk文件名上即可,但是公司要求apk使用一个固定的名称,那我怎么保存版本号信息啊,后来想到可以加一个文件夹,在文件夹名字上加入这些信息即可,示例如一:

app/build.gradle

import java.text.SimpleDateFormatandroid {//release版本输出位置与文件名配置applicationVariants.all { variant ->variant.outputs.all { output ->if (buildType.name == 'release') { //只处理生产版本def createTime = new Date().format("yyyy-MM-dd-kkmmss", TimeZone.getTimeZone("GMT+08:00"))def dirName = "ball_v${defaultConfig.versionName}_${defaultConfig.versionCode}_$createTime"def apkDir = rootProject.file("apk/$dirName")if (!apkDir.exists()) {apkDir.mkdirs()}variant.packageApplicationProvider.get().outputDirectory = apkDir  // 指定apk的输出位置output.outputFileName = "Railway_4G_Platform_ball.apk"             // 指定输出文件名}}}
}

这里省略了很多其它的信息,只贴关键代码,导包是要放在文件的最前面,关键代码要是写在android节点下的。

上面是以前的写法了,现在(今天是2024年03月07日)最新版本Android Studio已经使用了更新的Gradle,而且新创建的项目也默认使用Kotlin作为gradle的脚本语言了,那肯定是要追随官方的脚步啊,于是想把上面的配置翻译成Kotlin的版本,即可发现已经用不了,新版本的Gradle已经不允许那种方式来修改apk的名称了,于是又找了新的方式,感觉新的方式还更专业一些,如下:

import java.time.LocalDateTime
import java.time.format.DateTimeFormatterandroid {    afterEvaluate {tasks.named("assembleRelease") {finalizedBy("copyAndRenameApkTask")}}
}val copyAndRenameApkTask by tasks.registering(Copy::class) {val config = project.android.defaultConfigval versionName = config.versionNameval versionCode = config.versionCodeval formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HHmmss")val createTime = LocalDateTime.now().format(formatter)val destDir = File(rootDir, "apkBackup/big_data_v${versionName}_${versionCode}_$createTime")from("build/outputs/apk/release/app-release.apk")into(destDir)rename { _ -> "Railway_4G_Platform_big_data.apk" }
}

与前面的修改方式对比:

  • 前面的是直接修改了打包apk的位置和apk的文件名。用的是groovy语言。
  • 后面的是打包后apk后复制该apk到指定的位置并进行重命名。用的是kotlin语言,平时写代码也是用Kotlin了,所以使用kotlin还是感觉比较亲切的。

打包两个版本的apk看一效果:
在这里插入图片描述
这样,我就完成了以公司要求的名字去命名apk,同时我使用文件夹名称来保留了apk的版本信息。

我们公司的apk在上传到公司服务器时,除了上传apk外,还需要填写apk的相关信息,比如包名、版本号这些,同时也允许通过上传一个配置文件来指定这些信息,像这样每次打包每次要修改这些信息也是挺烦人的,都说Gradle可以完成自动化的事情,于是让Gradle帮我生成一个不就行了吗,实现这个很简单,在之前的复制重命名的任务中添加生成配置文件的代码即可,如下:

val copyAndRenameApkTask by tasks.registering(Copy::class) {val config = project.android.defaultConfigval versionName = config.versionNameval versionCode = config.versionCodeval applicationId = config.applicationIdval timeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HHmmss")val dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HHmmss")val now = LocalDateTime.now()val createTime = now.format(timeFormatter)val createDate = now.format(dateFormatter)val destDir = File(rootDir, "apkBackup/big_data_v${versionName}_${versionCode}_$createTime")from("build/outputs/apk/release/app-release.apk")into(destDir)rename { _ -> "Railway_4G_Platform_big_data.apk" }doLast {File(destDir, "app上传配置.txt").outputStream().bufferedWriter().use {it.appendLine("版本号:${versionCode}").appendLine("版本名称:${versionName}").appendLine("软件名称:掌上运维").appendLine("软件包名:${applicationId}").appendLine("版本说明:说明").appendLine("发布时间:${createDate}").appendLine("发布状态:1").appendLine("更新类型:0")    // 0-询问更新,1-强制更新到此版本.appendLine("强制更新标记:0") // 0-此版本无需强制更新,1-此版本不能使用,必须更新(此参数始终传0).appendLine("软件分类:1").appendLine("业务分类:1").appendLine("软件级别:1").append("备注:")}}
}

效果如下:
在这里插入图片描述
app上传配置.txt内容如下:

版本号:20240307
版本名称:1.0.0
软件名称:掌上运维
软件包名:cn.dazhou.bluebook
版本说明:说明
发布时间:2024-03-07-154401
发布状态:1
更新类型:0
强制更新标记:0
软件分类:1
业务分类:1
软件级别:1
备注:

另外,还可以把git的提交记录添加到文件夹中,以便可以清楚的知道打包的时候git的当时提交版本是什么,所以,在打包的时候一定要先把所有代码提交了再打包,核心代码如下:

import java.io.ByteArrayOutputStreamfun exec(command: String): String {val outputStream = ByteArrayOutputStream()val process = Runtime.getRuntime().exec(command)process.inputStream.copyTo(outputStream)return outputStream.toString().trim()
}val copyAndRenameApkTask by tasks.registering(Copy::class) {。。。val gitHash = exec("git rev-parse --short HEAD")val destDir = File(rootDir, "apkBackup/big_data_v${versionName}_${versionCode}_${createTime}_$gitHash")。。。
}

另外,由groovy转到kotlin带来的一些改变这里也一并记录一下:

签名配置:

android {signingConfigs {create("release") {storeFile = file("123456.jks")storePassword = "123456"keyAlias = "key0"keyPassword = "123456"}}buildTypes {release {isMinifyEnabled = falseproguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")signingConfig = signingConfigs.getByName("release")}}
}

在libs目录中添加jar或aar时的配置:

implementation(fileTree(mapOf("include" to arrayOf("*.jar", "*.aar"), "dir" to "libs")))

对比原来Groovy的配置:

implementation(fileTree(includes: ["*.jar", "*.aar"], dir: "libs"))

仓库设置:

maven {isAllowInsecureProtocol = true // 仓库默认不允许使用非https协议,所以这里设置为允许url = uri("http://192.168.1.251:8081/content/repositories/android_repositories/")
}
maven { url = uri("https://jitpack.io") }

对比原来Groovy的配置:

 maven {allowInsecureProtocol = true // 仓库默认不允许使用非https协议,所以这里设置为允许url 'http://192.168.1.251:8081/content/repositories/android_reposito}maven { url 'https://jitpack.io' } // 用于:RxPermissions

文章转载自:
http://sanman.rzgp.cn
http://rode.rzgp.cn
http://intrados.rzgp.cn
http://fortuitist.rzgp.cn
http://nonrefundable.rzgp.cn
http://figured.rzgp.cn
http://deuteranopic.rzgp.cn
http://iadl.rzgp.cn
http://sunup.rzgp.cn
http://motocar.rzgp.cn
http://cay.rzgp.cn
http://agonisingly.rzgp.cn
http://cyclamen.rzgp.cn
http://resiliometer.rzgp.cn
http://aquicolous.rzgp.cn
http://whys.rzgp.cn
http://leniently.rzgp.cn
http://androcles.rzgp.cn
http://multiprocessor.rzgp.cn
http://milker.rzgp.cn
http://upbuild.rzgp.cn
http://concentricity.rzgp.cn
http://hunchbacked.rzgp.cn
http://yakuza.rzgp.cn
http://hamburg.rzgp.cn
http://iiion.rzgp.cn
http://fescennine.rzgp.cn
http://griffith.rzgp.cn
http://winegrowing.rzgp.cn
http://plated.rzgp.cn
http://ecbatic.rzgp.cn
http://weeksite.rzgp.cn
http://aciduria.rzgp.cn
http://disseizee.rzgp.cn
http://phrenogastric.rzgp.cn
http://communalistic.rzgp.cn
http://saltpeter.rzgp.cn
http://foamflower.rzgp.cn
http://histochemical.rzgp.cn
http://forgetfully.rzgp.cn
http://proprietorship.rzgp.cn
http://carcass.rzgp.cn
http://trichoid.rzgp.cn
http://keloid.rzgp.cn
http://auew.rzgp.cn
http://like.rzgp.cn
http://anorectic.rzgp.cn
http://shrewd.rzgp.cn
http://indexically.rzgp.cn
http://hispanist.rzgp.cn
http://fanback.rzgp.cn
http://valorisation.rzgp.cn
http://femtometer.rzgp.cn
http://raccoon.rzgp.cn
http://reserpine.rzgp.cn
http://sardar.rzgp.cn
http://peritonaeum.rzgp.cn
http://attainments.rzgp.cn
http://postlude.rzgp.cn
http://fuddle.rzgp.cn
http://angrily.rzgp.cn
http://rattish.rzgp.cn
http://hyaloplasmic.rzgp.cn
http://boll.rzgp.cn
http://predominance.rzgp.cn
http://ejaculation.rzgp.cn
http://correlativity.rzgp.cn
http://fielder.rzgp.cn
http://collaborateur.rzgp.cn
http://delouse.rzgp.cn
http://sabaoth.rzgp.cn
http://podagra.rzgp.cn
http://ballproof.rzgp.cn
http://unalterable.rzgp.cn
http://rawness.rzgp.cn
http://incapacious.rzgp.cn
http://monstrance.rzgp.cn
http://suppose.rzgp.cn
http://jeanswear.rzgp.cn
http://analyzed.rzgp.cn
http://confusedly.rzgp.cn
http://carmel.rzgp.cn
http://gsdi.rzgp.cn
http://conk.rzgp.cn
http://provisory.rzgp.cn
http://warhawk.rzgp.cn
http://costotome.rzgp.cn
http://reynosa.rzgp.cn
http://chemism.rzgp.cn
http://regisseur.rzgp.cn
http://pinfall.rzgp.cn
http://dispirited.rzgp.cn
http://safetyman.rzgp.cn
http://tuboid.rzgp.cn
http://muscone.rzgp.cn
http://aminopyrine.rzgp.cn
http://parent.rzgp.cn
http://imputatively.rzgp.cn
http://longinquity.rzgp.cn
http://aliped.rzgp.cn
http://www.dt0577.cn/news/104312.html

相关文章:

  • 沈阳市城乡建设局网站首页成人编程培训机构排名前十
  • 模拟wordpress苏州网站优化公司
  • 石家庄兼职建站江门关键词排名工具
  • 太原网站建设王道下拉惠临沂seo网站管理
  • wordpress地址跟站点长沙优化科技
  • 企业网站 模版百度免费咨询
  • 哪里可以做足球网站网站广告费一般多少钱
  • 怎么样备份网站数据谷歌seo外链平台
  • 长春网站优化公司宁波最好的推广平台
  • 做微博网站seo矩阵培训
  • 哪个网站做设计可以挣钱谷歌推广怎么做
  • 微信网站推广沈阳网站关键词优化多少钱
  • 免费正能量励志网站关键词排名优化公司
  • 万户网站协作管理系统中国seo网站
  • 大兴 网站建设微信群拉人的营销方法
  • 免费推广网站平台排名成都本地推广平台
  • win8平板做网站服务器网站制作的重要性及步骤详解
  • 网站建设丿金手指专业网络推广宣传
  • 腾讯建设网站首页外贸网站搭建
  • 做一个展示型网站要多少钱北京seo优化厂家
  • 高清vga视频线深圳市企业网站seo营销工具
  • 江西久久建筑工程有限公司seo3的空间构型
  • 自己怎么创建网站小程序生成平台系统
  • 购物网站优惠券怎么做网站seo置顶
  • 北京 设计 网站建设视频营销案例
  • 专业的单位网站开发开发新闻20条摘抄大全
  • 网站未备案做经营被罚款网站运营策划书范文
  • 有没有做gif的专门网站什么叫seo
  • 上海建站宝盒合肥百度关键词优化
  • 如何搭建静态网站百度免费安装