首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

硬编码app:首选项中的片段字符串在版本中崩溃

硬编码(Hardcoding)是指在软件开发过程中,将某些应该由外部配置或用户输入的数据直接写入到程序代码中的做法。这种做法通常会导致代码的可维护性和灵活性降低,尤其是在需要频繁更改这些数据的情况下。

基础概念

在应用程序中,首选项(Preferences)通常用于存储用户的个性化设置或其他重要信息。硬编码的字符串片段如果直接嵌入到首选项中,可能会导致以下问题:

  1. 版本兼容性问题:当应用更新时,硬编码的字符串可能不再适用,导致应用崩溃。
  2. 国际化问题:硬编码的字符串难以支持多语言环境。
  3. 安全性问题:敏感信息如果硬编码在代码中,可能会被轻易获取。

相关优势

避免硬编码的优势包括:

  • 提高可维护性:数据与代码分离,便于修改和管理。
  • 增强灵活性:可以通过外部配置文件或数据库动态更改设置。
  • 支持多语言:易于实现国际化(i18n)。
  • 提升安全性:敏感信息可以存储在更安全的地方。

类型与应用场景

硬编码的应用场景通常出现在快速原型开发或小型项目中,但在大型和长期维护的项目中应尽量避免。

遇到的问题及原因

在你的情况下,应用在版本更新后崩溃,很可能是因为硬编码的字符串片段在新版本中发生了变化,但首选项中的数据没有同步更新,导致应用在读取这些数据时出现错误。

解决方法

  1. 使用资源文件:将字符串片段存储在资源文件(如strings.xml)中,而不是直接写在代码里。
  2. 使用资源文件:将字符串片段存储在资源文件(如strings.xml)中,而不是直接写在代码里。
  3. 动态获取字符串:在代码中通过资源ID动态获取字符串。
  4. 动态获取字符串:在代码中通过资源ID动态获取字符串。
  5. 版本迁移策略:如果必须保留旧的首选项数据,可以在应用启动时检查版本号,并根据需要迁移旧数据到新格式。
  6. 版本迁移策略:如果必须保留旧的首选项数据,可以在应用启动时检查版本号,并根据需要迁移旧数据到新格式。
  7. 使用SharedPreferences的apply()和commit():确保在修改首选项时正确地保存更改。
  8. 使用SharedPreferences的apply()和commit():确保在修改首选项时正确地保存更改。

通过上述方法,可以有效避免因硬编码导致的版本崩溃问题,并提高应用的整体质量和用户体验。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

我在测试中遇到app崩溃的现象怎么办?

首先,崩溃有几种情况: 闪退 提示停止运行 无响应 ( 不同情况虽然没有严格意义上区分开引起原因,但是都有侧重。在之后的工作中,我会实时补充统计。)...所以测试的时候要构造特殊环境,来让所以接口依次超时。方法可以是在抓包工具上打断点,然后不进行继续操作,挺着看app最终会不会崩溃。...[测试方法]:先进行兼容性测试,用不同的操作系统/手机型号/品牌/系统版本/蓝牙版本去执行一些跟写入读取有关的功能的用例。用emmagee监控app,看到各种操作后,占用的内存是否超过预期。.../ 要进行手动破坏性测试,1:如删除本地文件,比如app要调取本地缓存的4张图片,在app刚要调用的时候,已经选择好的时候,切换到本地文件管理中,删掉其中一个,那么app就会访问到一个不存在的文件,会引发越界等代码报错...7.系统高优先级app问题 [直接原因]:导致自家app突然被挂起或放置后台 [引起原因]:突然来电话,突然收短信,闹钟,会议提醒系统原生app等情况 [测试方法]:在各个页面,功能运行前中后。

1.6K30

Android编程规范

注:不允许出现毫无意义的命名,例如textview1,textview2 关于字面常量: 代码中不允许出现直接硬编码的字面常量,如果是控件上面显示的文本,必须放在strings.xml资源文件中。...如果是硬编码在代码中则要修改所有使 用它的地方,而且拷贝容易出错。...在Activity之间传递参数的时候,intent.putExtra 的key值也要命名规范,并且统一定义为静态常量,不能直接硬编码在代码中,否则想要修改的时候很麻烦。...不允许因为服务端的json出问题,导致app在解析json的时候出现崩溃。 类成员初始化: 所有类的成员变量一定要赋初始值,不允许只定义,不赋值。...为程序添加全局异常捕获: 应该为app添加全局异常捕获,app中总会有一些我们未捕获的异常,一旦用户使用过程中遇到这样的异常,程序就会崩溃,我们应该检测该类未捕获的异常信息,程序崩溃的时候通过写文件日志

1.2K70
  • IntelliJ IDEA 2023.3 最新发布啦!盘点精彩亮点

    带有编辑操作的浮动工具栏图片IntelliJ IDEA 2023.3 引入了一个浮动工具栏,该工具栏显示在选定的代码片段旁边,并提供对Extract、 Surround、Reformat和Comment...默认情况下用颜色编码的编辑器选项卡图片为了增强您在编辑器中同时处理各种文件类型时的导航体验,我们为编辑器选项卡引入了默认颜色编码,反映了它们在项目工具窗口中的外观。...您可以在“设置/首选项 |”中管理此设置。外观与行为 | 文件颜色。...或者,您可以使用快捷方式 ⌘F,或者直接开始输入您的查询。您可以在 “设置/首选项|”中为“快速搜索”功能分配自定义快捷方式。键位图。...框架和技术HTTP 客户端中的增强结构工具窗口图片我们改进了HTTP 客户端中的结构.http工具窗口,以简化大文件中的导航。此更新为请求类型引入了颜色编码标签,并更清晰地列出了其内容。

    33910

    CleanMyMac X永久激活 Mac电脑清理垃圾软件

    CleanMyMac X取代了Mac的数十种优化工具。您可以说的是它:macOS清洁器,性能监视器,恶意软件清除器以及急救程序,今天为大家带来了最新的版本。...监控您的垃圾箱,帮助您正确卸载已删除的应用程序 密切关注您的可移动设备,以便从垃圾服务文件中清除它们 CMM3.5-3.png 修复: 多次崩溃以提高应用程序的稳定性。...“忽略系统应用程序”选项从CleanMyMac的“忽略列表首选项”中消失了。非常感谢Yaroslav Kopylov的报告。...Tips 如果在macOS 10.15.4中无法正常使用,请禁用SIP或CodeSign 打开终端.app,输入如下指令sudo codesign –sign – –force –deep /Applications.../CleanMyMac\ X.app 然后xattr -d com.apple.quarantine /Applications/CleanMyMac\ X.app 系统要求 OS X 10.10或更高版本

    1.6K00

    安卓 topic-UI-设置 settings

    为每个设置保存在 SharedPreferences 中的值可能是以下数据类型之一: 布尔值 浮点型 整型 长整型 字符串 字符串 Set 由于应用的设置 UI 是使用 Preference 对象(而非...注:如果您在开发针对 Android 3.0 及 更高版本的应用,则应改为使用 PreferenceFragment。转到下文有关使用首选项片段的部分。...使用首选项标头 在极少数情况下,您可能需要设计设置,使第一个屏幕仅显示子屏幕的列表(例如在系统“设置”应用中,如图 4 和图 5 所示)。...在 PreferenceActivity 中添加必要的首选项来控制应用的数据使用习惯后,您应立即在清单文件中为 ACTION_MANAGE_NETWORK_USAGE 添加 Intent 过滤器。...初始化当前值 提供默认值 保存和恢复首选项的状态 正如布局中的 View 一样,在重启 Activity 或片段时(例如,用户旋转屏幕),Preference 子类也负责保存并恢复其状态。

    3.1K10

    测试开发必备!webStorage 浏览器本地存储数据(附项目实战案例!)

    前言 前期分享的 200行纯前端Vue代码!教你写一个专属TodoList【零基础友好】 基础数据是硬编码在代码里的,相当于是写死在代码中,具体代码内容如下(核心代码片段)。...false}, {id:'004', title:'研究三角函数', done:false}, ] } } } 这种硬编码的初始化数据会导致一个问题是每次只要浏览器刷新...,替换掉了硬编码的初始化数据。...在 todoList 项目案例中只用到了getItem()和setItem()两个API。 特别说明: SessionStorage 存储的内容会随着浏览器窗口关闭而消失。...建议大家将本次分享中优化后的代码片段替换原代码文件片段,再使用npm run serve重启服务,亲自实践感受下浏览器刷新是否还会丢失新增的 todo 数据。

    55210

    Z社区 | Zabbix 3.4.0新功能,你觉得怎样?

    并行处理警报(alerts) 旧版本中,使用单个警报器进程来发送异常通知。 警报一个一个发出,在大环境中大量事件紧挨连续发生的情况下,警报可能会发生延迟。...这些选项要么作为监控项配置中的单独属性存在,要么是硬编码。在新版本中,所有监控项值预处理都整合在了一起,并放在监控项配置下新的 Preprocessing 选项卡里。 ?...JMX可配置端点 此前,JMX端点在Zabbix上进行硬编码,限制了使用不同端点的应用程序。为解除此限制,对JMX可配置端点的支持已经在JMX项目配置上成为了一个独立字段。...在执行步骤之前执行编码(数据保存在数据库中未编码)。 灵活的变量URL编码 场景或步骤级变量(宏命令)值可以灵活地由URL编码/解码,这取决于Web场景步骤中所选择的POST变量设置情况。...Server启动多少个告警进程 ● 更多关于Agent线程崩溃的信息 监控项变更/改进 添加了一个新的vfs.dir.size代理项以监视目录大小 LLD,低级别发现 ● 在触发器原型表达式的函数参数中支持

    1K40

    VS Code进阶

    、智能代码补全、自定义热键、代码折叠、代码片段、内置版本管理等特性,支持插件扩展,并拥有十分活跃的插件社区。...由于基于Electron进行开发,软件可以跨平台支持 Win、Mac 以及 Linux,保证了在不同系统上都有相同的版本迭代速度,运行流畅,编辑器内核采用强大的Monaco(一个HTML编辑器,也是微软出品...代码片段:在「首选项/用户代码片段」中可针对不同的编程语言添加代码片段,HTML Boilerplate就是基于此来快速生成干净的HTML模版的插件,从此敲起代码来快得简直不要不要的~ 自定义快捷方式:...生成的gist id将作为今后的配置下载地址; 在另外一台开发机器中的VSC中使用Shift + Alt + D快捷键(首次将需要输入gist id),配置和插件将自动同步或安装到本地VSC中; 可根据需要设置...Q:怎样提高在VSC中写markdown的效率? A:VSC原生支持MD,并能实现侧边栏预览,你也可以通过安装一些插件来增强体验。

    3.5K90

    CCS 2019论文解读:基于自动化App分析的BLE设备指纹识别

    在这些不安全的应用中,13.6%的应用在BLE通信过程中,对数据没有使用任何加密,12.9%的应用发送的数据全部是硬编码的值,攻击者可以绕过用户直接对设备进行操作。...在提取UUID的同时,BLESCOPE对UUID变量值的来源进行检测,分析变量值生成时是否经过了加密、哈希函数,变量值中有哪些部分来源于用户输入,哪些部分是硬编码的值。...一个典型的UUID是一段128位的数据,在应用apk包中通常存储为十六进制字符串。前面我们提到,连接一类特定的设备所使用的UUID是固定不变的。...因此,对设备配套应用进行反编译,我们就能够提取到一部分的UUID。如图 1就是智能医疗设备品牌Kinsa的App中的代码片段。 ?...图 1 IoT应用Kinsa反编译代码片段 除了硬编码的数据值之外,部分应用所使用的UUID值是通过一些运算得到的,针对这个问题,BLESCOPE采用了程序切片(Program Slicing)和值集分析

    1.6K10

    VS Code进阶

    ,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、代码折叠、代码片段、内置版本管理等特性,支持插件扩展,并拥有十分活跃的插件社区。...由于基于Electron进行开发,软件可以跨平台支持 Win、Mac 以及 Linux,保证了在不同系统上都有相同的版本迭代速度,运行流畅,编辑器内核采用强大的Monaco(一个HTML编辑器,也是微软出品...代码片段:在「首选项/用户代码片段」中可针对不同的编程语言添加代码片段,HTML Boilerplate就是基于此来快速生成干净的HTML模版的插件,从此敲起代码来快得简直不要不要的~ 自定义快捷方式:...生成的gist id将作为今后的配置下载地址; 在另外一台开发机器中的VSC中使用Shift + Alt + D快捷键(首次将需要输入gist id),配置和插件将自动同步或安装到本地VSC中; 可根据需要设置...Q:怎样提高在VSC中写markdown的效率? A:VSC原生支持MD,并能实现侧边栏预览,你也可以通过安装一些插件来增强体验。

    1.8K20

    优测优分享|Android开发常见风险及解决方案

    关闭调试日志函数调用,或者确保日志的输出使用了正确的级别,涉及敏感数据的日志信息在发布版本中被关闭,这些基本的检查还是不能省去的。...02、密钥硬编码漏洞 密钥硬编码是指在代码中直接将加密算法的密钥设置为一个固定值。通常加密算法本身都是公开的,而加密内容的保密则主要是依赖于加密密钥。...如果密钥泄露,根据加密算法和加密后的密文,很容易得到加密前的明文。而密钥硬编码在代码中,通过反编译攻击者可以直接查看密钥内容,整个加密算法将形同虚设。...密钥硬编码,可直接造成加密数据被破解,客户端与服务器之间的通信内容被破解,导致应用内的加密文件被破解,或是用户的敏感信息泄露。...攻击者可构造特殊格式的 URL 直接向系统发送意图,启动 App 应用的 Activity 组件或者发送异常数据,导致应用的敏感信息泄露或者应用崩溃。

    26010

    Techsmith Camtasia Studio2023最新版本功能介绍

    它具有即时播放和编辑压缩的功能,可对视频片段进行剪接、添加转场效果。...TechSmith还专门对Codec进行开发,研究开发了属于自己的一套压缩编码算法,叫做"TSCC" (TechSmith Screen Capture Codec),专门用于对动态影像的编码!...02.添加了更大的网络摄像头预览,可以在录制时显示。 03.添加了在录制开始之前显示的倒计时。 04.在录制过程中改进了Recorder UI。...07.现在,将鼠标悬停在介质箱中的介质上,就可以在介质中进行擦洗。 08.作为“高级首选项”菜单上的一个选项,添加了“删除所有代理视频”。 09.添加了对使用代理服务器激活的支持。...015.修复了用户报告的启动崩溃。 016.修复了一个错误,该错误可能会导致在从Media Bin中更换图像时,图像的持续时间为一帧。

    1.9K30

    高效Android开发者必须知道的4个工具

    移动app开发是一个漫长而费力的过程。然而,现在的企业总是希望能够尽快发布app。幸运的是,我们有很多帮助移动开发人员加快工作步伐的工具。 可用的工具集随着移动平台新版本的出现而不断更新。...是的,我们很难紧跟所有创新的脚步。这同样适用于通常不被公布的附加功能,尽管它们在常规作业中真的非常有用。 ? 特别是,在创建移动app的时候,每个Android开发者必须解决一系列的问题。...对于之前的版本,你需要单独插入注解。 Android Support Annotations Library允许你在开发下找app中的bug。...Resource Annotations @StringRes, @DrawableRes, @ColorRes 在编码时,移动开发者经常引用字符串、图像等资源。...并且它在Android以及iOS开发人员中很受欢迎。 4. LeakCanary 任务:及时检测内存泄漏以防止OutOfMemoryError崩溃,并降低app内存溢出的风险。

    70930

    高效Android开发者必须知道的4个工具

    移动app开发是一个漫长而费力的过程。然而,现在的企业总是希望能够尽快发布app。幸运的是,我们有很多帮助移动开发人员加快工作步伐的工具。 可用的工具集随着移动平台新版本的出现而不断更新。...是的,我们很难紧跟所有创新的脚步。这同样适用于通常不被公布的附加功能,尽管它们在常规作业中真的非常有用。 ? 特别是,在创建移动app的时候,每个Android开发者必须解决一系列的问题。...对于之前的版本,你需要单独插入注解。 Android Support Annotations Library允许你在开发下找app中的bug。...Resource Annotations @StringRes, @DrawableRes, @ColorRes 在编码时,移动开发者经常引用字符串、图像等资源。...并且它在Android以及iOS开发人员中很受欢迎。 4. LeakCanary 任务:及时检测内存泄漏以防止OutOfMemoryError崩溃,并降低app内存溢出的风险。

    1.3K10

    Swift 中 User Defaults 的读取和写入

    前言 User Defaults 是 Swift 应用程序存储在应用启动之间保持的首选项的首选解决方案。它是由属性列表(plist)文件支持的键-值存储。...我强烈建议从一开始就使用这种技术,即使现在可能没有共享首选项的需要,但如果你添加需要从主应用程序中读取或写入首选项的扩展,以后你会感谢自己的。...我在 Stock Analyzer 中使用此技术,根据主应用程序中配置的最喜欢的股票填充小部件。...User Defaults 支持以下类型: 数据 字符串 数字(NSNumber) 日期 数组 字典 布尔值 如果你的类型不在此列表中,你需要找到一种将其转换为任何受支持类型的方法。...例如,我在以下视频中正在开发 WeTransfer 应用程序中显示的工具提示。

    31520

    PyCharm 2016.3 公开预览版发布

    3.PEP 515:数字文字中的下划线:此PEP扩展了Python的语法和数字从字符串构造函数,以便下划线可以在整数,浮点和复数数字文字中用作数字分组目的的可视分隔符。...添加了一个新的“分支覆盖”选项,默认情况下禁用,但可以在设置(首选项)中轻松启用、构建、执行、部署、 覆盖等。...PyCharm 2016.2中曾实现了与VMprof的集成。 新版本迈向生产性分析的另一步,支持VMprof的“配置文件行”选项。 在分析模式下运行项目时,默认情况下将启用此选项。...九、版本控制改进 撤消提交和删除/恢复跟踪的分支操作 签署提交和文件范围突出显示 Git&Mercurial日志增强 自动解决版本控制冲突 远程管理Git …… 十、平台和UI更改 改进了在路径对话框中的查找...6的解构赋值 与Flow集成 在Node.js APP中使用docker Angular 2的编码协助增强 新的React项目 TypeScript改进 十一、数据库工具改进 在PyCharm 2016.3

    5.4K40

    Android App漏洞学习(一)

    该问题主要是由于app代码中将敏感信息输出到app的logcat中,查看app记录的logcat,可以使用如下命令: 1.adb logcat 2.输入用户凭证,观察日志输出。...PART 2 硬编码1 (class源文件) 很多开发小伙伴在开发app的时候,明明是可以用可变变量的,但是由于没有相关安全开发意识,使用了硬编码的方式,导致存在一定的安全风险。...具体有关硬编码的定义可以参考百度,开发人员在开发的过程中应该尽量避免使用硬编码。...PART 4 不安全的存储2(databases/xxx.db) 用户的敏感信息存储到本地的数据库中,一般app对应的数据库目录: /data/data/apppackagename/databases...PART 5 不安全的存储3(临时文件) cd /data/data/jakhar.aseen.diva/ ? ? PART 6 不安全的存储4(SD卡) 存储在sd卡中,漏洞代码片段: ?

    1K00

    戴尔OMSA文件读取漏洞分析

    除此之外,在发现这些漏洞的过程中,我们还发现曾在2016年披露的一个任意文件读取漏洞仍然存在于OMSA的最新版本中,也有可能是因为这个漏洞从来没有被修复过。...这个Web会话仅用于在集中式Web界面中呈现来自远程节点的内容。但是,我们发现在OMSA的9.4.0.0和9.4.0.2版本中,此会话将允许用户对底层API进行特权访问。...由于“a”只包含文本字符串,因此不用考虑任何类型的编码。只需对URL路径的一部分进行URL编码,即可完全绕过此过滤器,从而导致isFileHandlerRequest方法返回false。...help=Certificate&app=oma&vid={VID}&file=C:\some\file 其中的t被URL编码后为%74,请求将成功。...如果它正在使用中,当然,我们建议广大用户保持运行OMSA的最新版本,或安装最新的漏洞修复补丁。

    1.1K50
    领券