build:重构项目并移除 Firebase 相关功能

-移除了 Firebase Analytics、Crashlytics 和 Performance Monitoring 的集成
- 删除了 EventRecord 类和相关的事件记录代码
- 更新了应用名称为"铁锈助手Lite"
- 调整了应用图标和主题颜色
- 移除了不必要的权限请求和相关代码
This commit is contained in:
Cold-Mint 2025-02-07 11:46:12 +08:00
parent 1e1b046d47
commit db003678d5
41 changed files with 60 additions and 337 deletions

View File

@ -3,10 +3,6 @@ plugins {
id 'kotlin-android' id 'kotlin-android'
// id "androidx.navigation.safeargs.kotlin" // id "androidx.navigation.safeargs.kotlin"
id 'kotlin-kapt' id 'kotlin-kapt'
id 'com.google.gms.google-services'
id 'com.google.firebase.firebase-perf'
id 'com.google.firebase.crashlytics'
} }
android { android {
@ -28,11 +24,11 @@ android {
// buildToolsVersion "30.0.3" // buildToolsVersion "30.0.3"
defaultConfig { defaultConfig {
applicationId "com.coldmint.rust.pro" applicationId "com.coldmint.rust.lite"
minSdkVersion 23 minSdkVersion 23
targetSdkVersion 33 targetSdkVersion 33
versionCode 28 versionCode 28
versionName "2.3.0 Test(2025-One)"// One Two Three Four versionName "1.0 Lite"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }
@ -96,10 +92,6 @@ dependencies {
implementation 'com.google.android.material:material:1.9.0' implementation 'com.google.android.material:material:1.9.0'
//BUG的组件 //BUG的组件
implementation platform('com.google.firebase:firebase-bom:31.3.0')
implementation 'com.google.firebase:firebase-analytics-ktx'
implementation 'com.google.firebase:firebase-crashlytics-ktx'
implementation 'com.google.firebase:firebase-perf-ktx'
implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: []) implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: [])
implementation project(path: ':library') implementation project(path: ':library')
implementation project(':imageactivity') implementation project(':imageactivity')

View File

@ -1,39 +0,0 @@
{
"project_info": {
"project_number": "787078274450",
"project_id": "rust-assistant-58ca5",
"storage_bucket": "rust-assistant-58ca5.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:787078274450:android:e5a88cb9c74737a9b6754b",
"android_client_info": {
"package_name": "com.coldmint.rust.pro"
}
},
"oauth_client": [
{
"client_id": "787078274450-uv7cj6beui62h4qpfqson6skek06u5sk.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyA5b4_azY4PMSnHDF3Qsu0cFwsFhWT413M"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "787078274450-uv7cj6beui62h4qpfqson6skek06u5sk.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}
],
"configuration_version": "1"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -17,7 +17,6 @@ import com.coldmint.rust.core.tool.FileOperator
import com.coldmint.rust.core.tool.FileOperator.copyFile import com.coldmint.rust.core.tool.FileOperator.copyFile
import com.coldmint.rust.pro.databinding.ActivityImporterBinding import com.coldmint.rust.pro.databinding.ActivityImporterBinding
import com.coldmint.rust.pro.tool.AppSettings import com.coldmint.rust.pro.tool.AppSettings
import com.coldmint.rust.pro.tool.EventRecord
import com.coldmint.rust.pro.tool.GlobalMethod import com.coldmint.rust.pro.tool.GlobalMethod
import com.coldmint.rust.pro.viewmodel.StartViewModel import com.coldmint.rust.pro.viewmodel.StartViewModel
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
@ -31,16 +30,12 @@ class ImporterActivity : BaseActivity<ActivityImporterBinding>() {
private var uri: Uri? = null private var uri: Uri? = null
private var fileName: String? = null private var fileName: String? = null
private var type: String? = null private var type: String? = null
val startViewModel by lazy { private val startViewModel by lazy {
ViewModelProvider(this).get(StartViewModel::class.java) ViewModelProvider(this)[StartViewModel::class.java]
} }
private fun initView() { private fun initView() {
setTitle(R.string.file_importer) setTitle(R.string.file_importer)
val account = AppSettings.getValue(AppSettings.Setting.Account, "")
if (account.isNotBlank()) {
EventRecord.setUserId(account)
}
startViewModel.initAllData() startViewModel.initAllData()
GlobalMethod.requestStoragePermissions(this) { GlobalMethod.requestStoragePermissions(this) {
if (it) { if (it) {

View File

@ -1,19 +1,15 @@
package com.coldmint.rust.pro package com.coldmint.rust.pro
import android.animation.ObjectAnimator import android.animation.ObjectAnimator
import android.app.Service
import android.content.Intent import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.os.VibrationEffect
import android.os.Vibrator
import android.text.Editable import android.text.Editable
import android.text.SpannableString import android.text.SpannableString
import android.text.TextPaint import android.text.TextPaint
import android.text.TextWatcher import android.text.TextWatcher
import android.text.method.LinkMovementMethod import android.text.method.LinkMovementMethod
import android.text.style.ClickableSpan import android.text.style.ClickableSpan
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import androidx.core.view.isVisible import androidx.core.view.isVisible
@ -30,10 +26,7 @@ import com.coldmint.rust.pro.base.BaseActivity
import com.coldmint.rust.pro.databinding.ActivityLoginBinding import com.coldmint.rust.pro.databinding.ActivityLoginBinding
import com.coldmint.rust.pro.tool.AppSettings import com.coldmint.rust.pro.tool.AppSettings
import com.coldmint.rust.pro.tool.EmailAutoCompleteHelper import com.coldmint.rust.pro.tool.EmailAutoCompleteHelper
import com.coldmint.rust.pro.tool.EventRecord
import com.coldmint.rust.pro.tool.GlobalMethod
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import com.gyf.immersionbar.ktx.immersionBar
class LoginActivity : BaseActivity<ActivityLoginBinding>() { class LoginActivity : BaseActivity<ActivityLoginBinding>() {
private var isLogin = false private var isLogin = false
@ -124,9 +117,6 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>() {
isLogin = false isLogin = false
viewBinding.button.setText(R.string.login) viewBinding.button.setText(R.string.login)
if (userData.code == ServerConfiguration.Success_Code) { if (userData.code == ServerConfiguration.Success_Code) {
//记录登录事件
EventRecord.setUserId(account)
EventRecord.login()
AppSettings.forceSetValue(AppSettings.Setting.PassWord, passWord) AppSettings.forceSetValue(AppSettings.Setting.PassWord, passWord)
AppSettings.forceSetValue( AppSettings.forceSetValue(
AppSettings.Setting.Account, AppSettings.Setting.Account,

View File

@ -33,7 +33,6 @@ import com.coldmint.rust.pro.base.BaseActivity
import com.coldmint.rust.pro.databinding.ActivityMainBinding import com.coldmint.rust.pro.databinding.ActivityMainBinding
import com.coldmint.rust.pro.databinding.HeadLayoutBinding import com.coldmint.rust.pro.databinding.HeadLayoutBinding
import com.coldmint.rust.pro.tool.AppSettings import com.coldmint.rust.pro.tool.AppSettings
import com.coldmint.rust.pro.tool.EventRecord
import com.coldmint.rust.pro.tool.GlobalMethod import com.coldmint.rust.pro.tool.GlobalMethod
import com.coldmint.rust.pro.viewmodel.StartViewModel import com.coldmint.rust.pro.viewmodel.StartViewModel
import com.google.android.material.color.DynamicColors import com.google.android.material.color.DynamicColors
@ -692,7 +691,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
opIntent.putExtra("userId", account) opIntent.putExtra("userId", account)
startActivity(opIntent) startActivity(opIntent)
} }
EventRecord.setUserId(account)
} }
startViewModel.needLoginLiveData.observe(this) { startViewModel.needLoginLiveData.observe(this) {

View File

@ -22,7 +22,6 @@ import com.coldmint.rust.core.interfaces.LineParserEvent
import com.coldmint.rust.core.tool.FileFinder2 import com.coldmint.rust.core.tool.FileFinder2
import com.coldmint.rust.core.tool.FileOperator import com.coldmint.rust.core.tool.FileOperator
import com.coldmint.rust.pro.databinding.ActivityPackBinding import com.coldmint.rust.pro.databinding.ActivityPackBinding
import com.coldmint.rust.pro.tool.EventRecord
import java.io.File import java.io.File
import java.lang.StringBuilder import java.lang.StringBuilder
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
@ -309,7 +308,6 @@ class PackActivity : BaseActivity<ActivityPackBinding>() {
override fun whenCompressionComplete(result: Boolean) { override fun whenCompressionComplete(result: Boolean) {
handler.post { handler.post {
EventRecord.packMod(targetFile.name)
resetButton(result) resetButton(result)
} }
} }

View File

@ -4,16 +4,12 @@ import android.annotation.SuppressLint
import android.app.Activity import android.app.Activity
import android.app.Application import android.app.Application
import android.content.Context import android.content.Context
import android.content.pm.ActivityInfo
import android.os.Bundle import android.os.Bundle
import cat.ereza.customactivityoncrash.config.CaocConfig import cat.ereza.customactivityoncrash.config.CaocConfig
import com.coldmint.rust.core.debug.LogCat import com.coldmint.rust.core.debug.LogCat
import com.coldmint.rust.core.debug.LogCatObserver
import com.coldmint.rust.pro.tool.AppSettings import com.coldmint.rust.pro.tool.AppSettings
import com.google.android.material.color.DynamicColors import com.google.android.material.color.DynamicColors
import com.google.android.material.color.DynamicColorsOptions import com.google.android.material.color.DynamicColorsOptions
import com.google.firebase.crashlytics.ktx.crashlytics
import com.google.firebase.ktx.Firebase
import com.hjq.language.MultiLanguages import com.hjq.language.MultiLanguages
import com.youth.banner.BuildConfig import com.youth.banner.BuildConfig
@ -47,11 +43,6 @@ class RustApplication : Application() {
) )
}.build() }.build()
DynamicColors.applyToActivitiesIfAvailable(this, options) DynamicColors.applyToActivitiesIfAvailable(this, options)
LogCat.attachObserver(object : LogCatObserver {
override fun onReceiveLog(msg: String) {
Firebase.crashlytics.log(msg)
}
})
LogCat.setEnable(!BuildConfig.DEBUG) LogCat.setEnable(!BuildConfig.DEBUG)
//程序崩溃 //程序崩溃
CaocConfig.Builder.create() CaocConfig.Builder.create()

View File

@ -13,30 +13,18 @@ import com.coldmint.rust.pro.base.BaseVh
import com.coldmint.rust.pro.databinding.ActivityCodeTableBinding import com.coldmint.rust.pro.databinding.ActivityCodeTableBinding
import com.coldmint.rust.pro.databinding.ItemCodetableBinding import com.coldmint.rust.pro.databinding.ItemCodetableBinding
import com.coldmint.rust.pro.tool.GlobalMethod import com.coldmint.rust.pro.tool.GlobalMethod
import com.google.android.gms.common.internal.Objects
class CodeTableAdapter( class CodeTableAdapter(
val context: Context, val context: Context,
private val group: List<SectionInfo>, private val group: List<SectionInfo>,
private val itemList: List<List<CodeInfo>>, private val itemList: List<List<CodeInfo>>,
private val binding: ActivityCodeTableBinding private val binding: ActivityCodeTableBinding
) : RecyclerView.Adapter<BaseVh<ItemCodetableBinding>>() { ) : RecyclerView.Adapter<BaseVh<ItemCodetableBinding>>() {
private var versionMap: HashMap<Int, String>? = null private var versionMap: HashMap<Int, String>? = null
private var typeNameMap: HashMap<String, String>? = null private var typeNameMap: HashMap<String, String>? = null
private var sectionMap: HashMap<String, String>? = null private var sectionMap: HashMap<String, String>? = null
/* private val executorService by lazy {
Executors.newSingleThreadExecutor()
}*/
private val lineParser = LineParser() private val lineParser = LineParser()
//Label点击事件
// var labelFunction: ((Int, View, String) -> Unit)? = null
/* private val developerMode by lazy {
AppSettings
.getValue(AppSettings.Setting.DeveloperMode, false)
}*/
/** /**
* 节名映射 * 节名映射
* @param sectionMap HashMap<String, String> * @param sectionMap HashMap<String, String>
@ -61,129 +49,17 @@ class CodeTableAdapter(
this.versionMap = versionMap this.versionMap = versionMap
} }
/* fun getChildView( override fun onCreateViewHolder(
groupPosition: Int, parent: ViewGroup,
childPosition: Int, viewType: Int
isLastChild: Boolean, ): BaseVh<ItemCodetableBinding> {
convertView: View?, return BaseVh(
parent: ViewGroup ItemCodetableBinding.inflate(
): View { LayoutInflater.from(parent.context),
val resultView: CodeTableItemBinding = parent,
CodeTableItemBinding.inflate(layoutInflater, parent, false) false
val codeInfo = itemList[groupPosition][childPosition] )
)
// resultView.belongStackLabelView.onLabelClickListener = OnLabelClickListener { index, v, s ->
// }
resultView.descriptionView.text = codeInfo.description
resultView.descriptionView.setOnClickListener {
GlobalMethod.copyText(context, codeInfo.description, it)
}
resultView.titleView.text = codeInfo.translate
resultView.titleView.setOnClickListener {
GlobalMethod.copyText(context, codeInfo.translate, it)
}
val demo = codeInfo.demo
resultView.imageView.isVisible = demo.isNotBlank()
resultView.imageView.setOnClickListener {
val dialog = MaterialAlertDialogBuilder(context);
dialog.setTitle(R.string.code_demo)
dialog.setMessage(demo)
dialog.setPositiveButton(R.string.dialog_ok){
v,a->
}
dialog.show()
}
resultView.subTitleView.text = codeInfo.code
resultView.subTitleView.setOnClickListener {
GlobalMethod.copyText(context, codeInfo.code, it)
}
resultView.valueTypeView.text = typeNameMap?.get(codeInfo.type) ?: codeInfo.type
lineParser.text = codeInfo.section
resultView.chipGroup.removeAllViews()
var isNotEmpty = false
lineParser.analyse { lineNum, lineData, isEnd ->
isNotEmpty = true
val text = sectionMap?.get(lineData) ?: lineData
val chip = Chip(context)
chip.text = text
chip.setOnClickListener {
labelFunction?.invoke(lineNum, it, text)
}
resultView.chipGroup.addView(chip)
true
}
resultView.chipGroup.isVisible = isNotEmpty
resultView.valueTypeView.setOnClickListener {
val handler = Handler(Looper.getMainLooper())
executorService.submit {
val codeDataBase = CodeDataBase.getInstance(context)
val typeInfo = codeDataBase.getValueTypeDao().findTypeByType(codeInfo.type)
if (typeInfo == null) {
handler.post {
handler.post {
MaterialDialog(context).show {
title(text = codeInfo.type).message(
text = String.format(
context.getString(
R.string.unknown_type
), codeInfo.type
)
)
.positiveButton(R.string.dialog_ok)
}
}
}
} else {
if (developerMode) {
val stringBuilder = StringBuilder()
stringBuilder.append("介绍:")
stringBuilder.append(typeInfo.describe)
stringBuilder.append("\n附加信息:")
stringBuilder.append(typeInfo.external)
stringBuilder.append("\n关联的自动提示:")
stringBuilder.append(typeInfo.list)
stringBuilder.append("\n光标偏差:")
stringBuilder.append(typeInfo.offset)
stringBuilder.append("\n标签:")
stringBuilder.append(typeInfo.tag)
stringBuilder.append("\n数据规则:")
stringBuilder.append(typeInfo.rule)
handler.post {
MaterialDialog(context).show {
title(text = typeInfo.name + "(开发者模式)").message(text = stringBuilder.toString())
.positiveButton(R.string.dialog_ok)
}
}
} else {
if (typeInfo.describe == "@search(code)") {
handler.post {
MaterialDialog(context).show {
title(text = typeInfo.name).message(text = codeInfo.description)
.positiveButton(R.string.dialog_ok)
}
}
} else {
handler.post {
MaterialDialog(context).show {
title(text = typeInfo.name).message(text = typeInfo.describe)
.positiveButton(R.string.dialog_ok)
}
}
}
}
}
}
}
resultView.versionView.text =
versionMap?.get(codeInfo.addVersion) ?: codeInfo.addVersion.toString()
return resultView.root
}*/
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseVh<ItemCodetableBinding> {
return BaseVh(ItemCodetableBinding.inflate(LayoutInflater.from(parent.context), parent, false))
} }
override fun getItemCount(): Int { override fun getItemCount(): Int {
@ -207,28 +83,38 @@ class CodeTableAdapter(
override fun onBindViewHolder(holder: BaseVh<ItemCodetableBinding>, position: Int) { override fun onBindViewHolder(holder: BaseVh<ItemCodetableBinding>, position: Int) {
holder.binging.title.text = group[position].translate holder.binging.title.text = group[position].translate
val format = String.format( val format = String.format(
context.getString(R.string.filenum), context.getString(R.string.filenum),
itemList[position].size itemList[position].size
) )
holder.binging.message.text = format holder.binging.message.text = format
holder.itemView.setOnClickListener { holder.itemView.setOnClickListener {
i = group[position].translate val finalPosition = holder.layoutPosition
i = group[finalPosition].translate
pick = 0 pick = 0
pickString = "" pickString = ""
picklist.clear() picklist.clear()
if (item != null) { if (item != null) {
item!!.list = itemList[position] item!!.list = itemList[position]
binding.codeRecyclerB.adapter = item binding.codeRecyclerB.adapter = item
notifyDataSetChanged()
} }
// notifyItemChanged(p) notifyItemChanged(finalPosition)
} }
if (Objects.equal(group[position].translate, i)) { if (group[position].translate == i) {
//背景高亮 //背景高亮
holder.binging.root.setCardBackgroundColor(GlobalMethod.getThemeColor(context, R.attr.colorPrimaryContainer)) holder.binging.root.setCardBackgroundColor(
GlobalMethod.getThemeColor(
context,
R.attr.colorPrimaryContainer
)
)
} else { } else {
//背景恢复 //背景恢复
holder.binging.root.setCardBackgroundColor(GlobalMethod.getThemeColor(context, R.attr.colorSurface)) holder.binging.root.setCardBackgroundColor(
GlobalMethod.getThemeColor(
context,
R.attr.colorSurface
)
)
} }
} }

View File

@ -7,12 +7,8 @@ import android.view.ViewGroup
import android.widget.Toast import android.widget.Toast
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.viewbinding.ViewBinding import androidx.viewbinding.ViewBinding
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.analytics.ktx.analytics
import com.google.firebase.ktx.Firebase
abstract class BaseFragment<T : ViewBinding> : Fragment() { abstract class BaseFragment<T : ViewBinding> : Fragment() {
protected lateinit var firebaseAnalytics: FirebaseAnalytics
protected lateinit var viewBinding: T protected lateinit var viewBinding: T
@ -54,11 +50,6 @@ abstract class BaseFragment<T : ViewBinding> : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
try {
firebaseAnalytics = Firebase.analytics
} catch (e: Exception) {
e.printStackTrace()
}
whenViewCreated(layoutInflater, savedInstanceState) whenViewCreated(layoutInflater, savedInstanceState)
} }
} }

View File

@ -19,7 +19,6 @@ import com.coldmint.rust.pro.base.BaseFragment
import com.coldmint.rust.pro.databean.CommunityServiceInfo import com.coldmint.rust.pro.databean.CommunityServiceInfo
import com.coldmint.rust.pro.databinding.FragmentUserInfoBinding import com.coldmint.rust.pro.databinding.FragmentUserInfoBinding
import com.coldmint.rust.pro.tool.AppSettings import com.coldmint.rust.pro.tool.AppSettings
import com.coldmint.rust.pro.tool.EventRecord
import com.coldmint.rust.pro.tool.GlobalMethod import com.coldmint.rust.pro.tool.GlobalMethod
class UserInfoFragment : BaseFragment<FragmentUserInfoBinding>() { class UserInfoFragment : BaseFragment<FragmentUserInfoBinding>() {
@ -171,8 +170,6 @@ class UserInfoFragment : BaseFragment<FragmentUserInfoBinding>() {
override fun whenViewCreated(inflater: LayoutInflater, savedInstanceState: Bundle?) { override fun whenViewCreated(inflater: LayoutInflater, savedInstanceState: Bundle?) {
viewBinding.logOutButton.setOnClickListener { viewBinding.logOutButton.setOnClickListener {
EventRecord.logout()
EventRecord.setUserId(null)
AppSettings.setValue(AppSettings.Setting.LoginStatus, false) AppSettings.setValue(AppSettings.Setting.LoginStatus, false)
// GlobalMethod.isActive = false // GlobalMethod.isActive = false
AppSettings.setValue( AppSettings.setValue(

View File

@ -1,56 +0,0 @@
package com.coldmint.rust.pro.tool
import android.os.Bundle
import com.google.firebase.analytics.ktx.analytics
import com.google.firebase.ktx.Firebase
/**
* 事件记录类
*/
object EventRecord {
const val Event_LOGOUT = "logout"
//打包Mod
const val Event_PACK_MOD = "pack_mod"
const val Event_LOGIN = "login"
private val firebaseAnalytics = Firebase.analytics
private var account: String? = null
/**
* 设置用户id
*/
fun setUserId(userId: String?) {
account = userId
}
/**
* 登录
*/
fun login() {
val bundle = Bundle()
bundle.putString("account", account)
firebaseAnalytics.logEvent(Event_LOGIN, bundle)
firebaseAnalytics.setUserId(account)
}
/**
* 登出
*/
fun logout() {
val bundle = Bundle()
bundle.putString("account", account)
firebaseAnalytics.logEvent(Event_LOGOUT, bundle)
}
/**
* 打包模组
*/
fun packMod(targetFileName: String) {
val bundle = Bundle()
bundle.putString("account", account)
bundle.putString("fileName", targetFileName)
firebaseAnalytics.logEvent(Event_PACK_MOD, bundle)
firebaseAnalytics.setUserId(account)
}
}

View File

@ -14,8 +14,6 @@ import com.coldmint.rust.pro.livedata.OpenedSourceFileListLiveData
import com.coldmint.rust.pro.tool.AppSettings import com.coldmint.rust.pro.tool.AppSettings
import com.coldmint.rust.pro.tool.CompletionItemConverter import com.coldmint.rust.pro.tool.CompletionItemConverter
import com.coldmint.rust.pro.tool.GlobalMethod import com.coldmint.rust.pro.tool.GlobalMethod
import com.google.firebase.crashlytics.ktx.crashlytics
import com.google.firebase.ktx.Firebase
import java.io.File import java.io.File
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
@ -38,13 +36,7 @@ class EditViewModel(application: Application) : BaseAndroidViewModel(application
var targetFile: File? = null var targetFile: File? = null
private val codeTranslate by lazy { private val codeTranslate by lazy {
val c = CodeTranslate(getApplication()) CodeTranslate(getApplication())
c.setCompileErrorRecordFun {
//将信息上传至FireBase
Firebase.crashlytics.setCustomKey("type", "代码编译错误")
Firebase.crashlytics.recordException(it)
}
c
} }
/** /**

View File

@ -1,28 +1,15 @@
package com.coldmint.rust.pro.viewmodel package com.coldmint.rust.pro.viewmodel
import android.Manifest
import android.app.Application import android.app.Application
import android.content.Context import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.content.res.Configuration import android.content.res.Configuration
import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Bundle
import android.os.CountDownTimer
import android.os.Environment import android.os.Environment
import android.provider.Settings
import android.util.Log
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import com.coldmint.rust.core.CompressionManager import com.coldmint.rust.core.CompressionManager
import com.coldmint.rust.core.DataSet import com.coldmint.rust.core.DataSet
import com.coldmint.rust.core.dataBean.LoginRequestData
import com.coldmint.rust.core.dataBean.user.ActivationInfo import com.coldmint.rust.core.dataBean.user.ActivationInfo
import com.coldmint.rust.core.dataBean.user.SocialInfoData
import com.coldmint.rust.core.dataBean.user.UserData
import com.coldmint.rust.core.database.code.CodeDataBase import com.coldmint.rust.core.database.code.CodeDataBase
import com.coldmint.rust.core.debug.LogCat import com.coldmint.rust.core.debug.LogCat
import com.coldmint.rust.core.interfaces.ApiCallBack import com.coldmint.rust.core.interfaces.ApiCallBack
@ -39,12 +26,8 @@ import com.coldmint.rust.pro.tool.BookmarkManager
import com.coldmint.rust.pro.tool.CompletionItemConverter import com.coldmint.rust.pro.tool.CompletionItemConverter
import com.coldmint.rust.pro.tool.GlobalMethod import com.coldmint.rust.pro.tool.GlobalMethod
import com.google.android.material.color.DynamicColors import com.google.android.material.color.DynamicColors
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.firebase.crashlytics.ktx.crashlytics
import com.google.firebase.ktx.Firebase
import java.io.File import java.io.File
import java.util.* import java.util.*
import java.util.concurrent.Executors
import java.util.zip.ZipEntry import java.util.zip.ZipEntry
@ -134,14 +117,12 @@ class StartViewModel(application: Application) : BaseAndroidViewModel(applicatio
val status = AppSettings.getValue(AppSettings.Setting.LoginStatus, false) val status = AppSettings.getValue(AppSettings.Setting.LoginStatus, false)
if (!status) { if (!status) {
needLoginLiveData.value = true needLoginLiveData.value = true
Firebase.crashlytics.setUserId("")
return return
} }
//验证登录 //验证登录
val token = AppSettings.getValue(AppSettings.Setting.Token, "") val token = AppSettings.getValue(AppSettings.Setting.Token, "")
if (token.isBlank()) { if (token.isBlank()) {
needLoginLiveData.value = true needLoginLiveData.value = true
Firebase.crashlytics.setUserId("")
} else { } else {
User.getUserActivationInfo(token, object : ApiCallBack<ActivationInfo> { User.getUserActivationInfo(token, object : ApiCallBack<ActivationInfo> {
override fun onFailure(e: Exception) { override fun onFailure(e: Exception) {
@ -151,7 +132,6 @@ class StartViewModel(application: Application) : BaseAndroidViewModel(applicatio
) )
if (localTime == (-2).toLong()) { if (localTime == (-2).toLong()) {
isActivationLiveData.value = true isActivationLiveData.value = true
Firebase.crashlytics.setUserId("")
} else { } else {
val nowTime = System.currentTimeMillis() val nowTime = System.currentTimeMillis()
//本地时间大于当前时间 激活 //本地时间大于当前时间 激活
@ -171,7 +151,6 @@ class StartViewModel(application: Application) : BaseAndroidViewModel(applicatio
time time
) )
isActivationLiveData.value = activationInfo.data.activation isActivationLiveData.value = activationInfo.data.activation
Firebase.crashlytics.setUserId(activationInfo.data.account)
} else { } else {
// 用户登录失败 // 用户登录失败
verifyErrorMsgLiveData.value = activationInfo.message verifyErrorMsgLiveData.value = activationInfo.message
@ -259,7 +238,10 @@ class StartViewModel(application: Application) : BaseAndroidViewModel(applicatio
DynamicColors.isDynamicColorAvailable() DynamicColors.isDynamicColorAvailable()
) )
//如果是安卓12或更低那么默认启用。安卓13默认关闭 //如果是安卓12或更低那么默认启用。安卓13默认关闭
AppSettings.initSetting(AppSettings.Setting.ClipboardCue,Build.VERSION.SDK_INT <= Build.VERSION_CODES.S_V2) AppSettings.initSetting(
AppSettings.Setting.ClipboardCue,
Build.VERSION.SDK_INT <= Build.VERSION_CODES.S_V2
)
AppSettings.initSetting(AppSettings.Setting.KeywordColor, "#2196f3") AppSettings.initSetting(AppSettings.Setting.KeywordColor, "#2196f3")
AppSettings.initSetting(AppSettings.Setting.SectionColor, "#e91e63") AppSettings.initSetting(AppSettings.Setting.SectionColor, "#e91e63")
AppSettings.initSetting(AppSettings.Setting.TextColor, "#212121") AppSettings.initSetting(AppSettings.Setting.TextColor, "#212121")
@ -324,7 +306,10 @@ class StartViewModel(application: Application) : BaseAndroidViewModel(applicatio
DebugHelper.printLog("加载数据集", "无法二次加载" + databaseFolder) DebugHelper.printLog("加载数据集", "无法二次加载" + databaseFolder)
} }
} else { } else {
DebugHelper.printLog("加载数据集", "已解压" + databaseFolder + "但不使用。") DebugHelper.printLog(
"加载数据集",
"已解压" + databaseFolder + "但不使用。"
)
} }
} }

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" /> <background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground" /> <foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon> </adaptive-icon>

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" /> <background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground" /> <foreground android:drawable="@drawable/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon> </adaptive-icon>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#3919CD</color>
</resources>

View File

@ -1,5 +1,5 @@
<resources> <resources>
<string name="app_name">铁锈助手</string> <string name="app_name">铁锈助手Lite</string>
<string name="dialog_title">权限申请</string> <string name="dialog_title">权限申请</string>
<string name="dialog_msg29">我们需要文件管理权限,用于读取模组列表,编辑源文件,导入导出模组。</string> <string name="dialog_msg29">我们需要文件管理权限,用于读取模组列表,编辑源文件,导入导出模组。</string>
<string name="dialog_confirm">授权</string> <string name="dialog_confirm">授权</string>

View File

@ -138,7 +138,7 @@ class CodeTranslate(val context: Context) {
num++ num++
debugKey = "代码翻译器-任务${num}" debugKey = "代码翻译器-任务${num}"
DebugHelper.printLog( DebugHelper.printLog(
CodeTranslate.debugKey, debugKey,
"开始执行(英文模式${englishMode} 翻译模式${translateMode})...", "开始执行(英文模式${englishMode} 翻译模式${translateMode})...",
"代码翻译", isError = true "代码翻译", isError = true
) )
@ -146,7 +146,7 @@ class CodeTranslate(val context: Context) {
if (englishMode) { if (englishMode) {
//如果是英文模式,无论是翻译还是编译都返回其本身。 //如果是英文模式,无论是翻译还是编译都返回其本身。
DebugHelper.printLog( DebugHelper.printLog(
CodeTranslate.debugKey, debugKey,
"是英文模式返回其本身。", "是英文模式返回其本身。",
"代码翻译", isError = true "代码翻译", isError = true
) )
@ -199,7 +199,7 @@ class CodeTranslate(val context: Context) {
) )
} }
DebugHelper.printLog( DebugHelper.printLog(
CodeTranslate.debugKey, debugKey,
"追加引用值[" + referenceValue + "]", "追加引用值[" + referenceValue + "]",
"翻译行引用处理" "翻译行引用处理"
) )
@ -235,7 +235,7 @@ class CodeTranslate(val context: Context) {
} else if (codeBlockType == CodeBlockType.Reference) { } else if (codeBlockType == CodeBlockType.Reference) {
//资源引用值应该被整体处理 //资源引用值应该被整体处理
DebugHelper.printLog( DebugHelper.printLog(
CodeTranslate.debugKey, debugKey,
"翻译添加引用值[" + code + "]", "翻译添加引用值[" + code + "]",
"翻译代码处理" "翻译代码处理"
) )
@ -356,7 +356,7 @@ class CodeTranslate(val context: Context) {
} }
translationResult.append(codeResult.toString()) translationResult.append(codeResult.toString())
DebugHelper.printLog( DebugHelper.printLog(
CodeTranslate.debugKey, debugKey,
"代码[" + code + "]译文[" + codeResult.toString() + "]是否翻译[" + (code != codeResult.toString()) + "]", "代码[" + code + "]译文[" + codeResult.toString() + "]是否翻译[" + (code != codeResult.toString()) + "]",
"翻译" "翻译"
) )