02 设置工作环境与环境

Posted xuan01

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了02 设置工作环境与环境相关的知识,希望对你有一定的参考价值。

1、让GRUB只加载一个文件;

需要将多个文件封装成一个文件,成为内核映像文件;包含二级引导器的模块、内核模块、图片、字库文件;

为了让GRUB加载这个文件,并解析;需要定义好具体的格式; 4KB大小GRUB头、映像文件头描述符、文件头描述符、文件1...

两个c语言结构体,映像文件头描述符 s_mlosrddsc 和 文件描述符 s_fhdsc

准备打包映像文件的工具;

2、手工生成硬盘;

虚拟机只是用特定格式的文件来模拟硬盘,生产虚拟硬盘就变成了生成对应格式的文件;dd命令(用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换);

接着在一个文件上创建文件系统:首先让文件变成Linux下的回环设备;losetup命令设置回环设备;回环设备可以将文件虚拟成Linux下的块设备,用来模拟整个文件系统,并mount命令挂载;只能用超级用户设置;

接着mkfs.ext4命令格式化设备,建立EXT4文件系统;mount命令挂载设备;

3、正常安装的时候,Linux会把GRUB安装在物理硬盘上,现在要把它安装在我们的虚拟硬盘上;

上一步把挂载虚拟硬盘文件为loop0回环设备;

接着安装GRUB;

4、 将硬盘原来的二进制格式,转化为虚拟机本身能识别的 VDI 格式;

5、使用虚拟机命令挂载这个 硬盘到我们的系统;

 

更改语言环境在 Android 10 中停止工作

【中文标题】更改语言环境在 Android 10 中停止工作【英文标题】:Changing locale stopped working in Android 10 【发布时间】:2020-12-07 05:32:55 【问题描述】:

我一直在使用以下代码来更改 Android 应用中的区域设置(该应用有自己的区域设置,可能与操作系统区域设置不同)。该代码在 Android 9 (P) 之前运行良好。在 Android 10 (Q) 中,它停止工作,资源没有更新。我在 Android 10 发行说明中看不到任何与语言环境相关的更改。什么可以在 Android 10 中破坏此代码?如果它是已知的,谁能指出我的解决方案?

private fun setLocale(context: Context, language: String): Context 
    //...persist here. persisting works fine
    return if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N)
        updateResources(context, language)
    else
        updateResourcesLegacy(context, language)


@TargetApi(Build.VERSION_CODES.N)
private fun updateResources(context: Context, language: String): Context 
    val locale = Locale(language)
    Locale.setDefault(locale)

    val configuration = context.resources.configuration
    configuration.setLocale(locale)
    configuration.setLayoutDirection(locale)

    return context.createConfigurationContext(configuration)

UPD

我发现此代码在升级到androidx.appcompat:appcompat 的较新版本后停止工作。我可以缩小范围:它适用于1.2.0-alpha01,不适用于1.2.0-alpha02

我在 1.2.0-alpha02 的发行说明中看到与上下文相关的 3 处更改:https://developer.android.com/jetpack/androidx/releases/appcompat#1.2.0-alpha02

确保基本上下文始终是包装器 (aosp/1194355) 添加了一些改进,以便在修改基本上下文配置时更加智能 (aosp/1204543) 为 Robolectric 禁用 createConfigurationContext() (aosp/1186218)

【问题讨论】:

如何获取资源?是否有一些资源不会改变或全部? ADM,没有更新。 【参考方案1】:

我发布了对我有用的 Google 员工的回复。我在他们的问题跟踪器上问了这个问题,他们建议创建一个新的配置实例而不是修改现有的实例。

所以,代替这个(下面的行不通):

val configuration = context.resources.configuration
configuration.setLocale(locale)
configuration.setLayoutDirection(locale)

应该是(这行得通):

val configuration = Configuration()
configuration.setLocale(locale)
configuration.setLayoutDirection(locale)

他们的测试中使用了这种方式:one 和 two

【讨论】:

你能告诉我你是如何调用你的 setLocale() 的吗,它似乎不适用于我在 android 10 上。 我从 3 个地方调用 setLocale():应用程序的 onConfigurationChanged、活动的 attachBaseContext,以及当用户从设置更改区域设置时在我的自定义 UI 侦听器中。可以看一下源码:github.com/ptr-dorjin/feelings/blob/master/app/src/main/kotlin/…

以上是关于02 设置工作环境与环境的主要内容,如果未能解决你的问题,请参考以下文章

04 设置工作模式与环境(下)收集信息

基本工作流(打包与运行环境配置)

更改语言环境在 Android 10 中停止工作

Oracle 设置全球化支持环境

如何与多个用户环境中运行的PBS

内网渗透-Windows域环境的初识与搭建