如何覆盖 config.xml 中的值?

Sir*_*Lam 3 resources android

从Android框架的源代码中,有一个名为的文件config.xml,其中存储了Android内部使用的一些值。

还有一个值控制被视为缩放手势的手指之间的最小距离:

<!-- Minimum span needed to begin a touch scaling gesture.
     If the span is equal to or greater than this size, a scaling gesture
     will begin, where supported. (See android.view.ScaleGestureDetector)

     This also takes into account the size of any active touch points.
     Devices with screens that deviate too far from their assigned density
     bucket should consider tuning this value in a device-specific overlay.
     For best results, care should be taken such that this value remains
     larger than the minimum reported touchMajor/touchMinor values
     reported by the hardware. -->
<dimen name="config_minScalingSpan">27mm</dimen>
Run Code Online (Sandbox Code Playgroud)

正如它所说,如果我们想修改这个值,我们可以

在特定于设备的覆盖中调整此值。

经过短暂的谷歌搜索后,我找不到任何作为应用程序开发人员修改此值的方法。

我还尝试添加一个名为config.xmlunderres/values我的项目的新文件,但它不起作用。

这可能吗?我只是想调整被视为缩放手势的最小距离,但ScaleGestureDetector没有这样的API。

Cal*_*nic 6

我知道这是一个老问题,但我会回答它,以防其他人陷入同样的​​问题。请注意,这是创建自定义 Android ROM 版本时的操作方式。由于权限原因,它可能无法与 Android APK 一起使用。但是,如果您希望在自定义 ROM 中执行此操作,请继续阅读。

这很容易做到。下面是我如何尝试在 android 设置中覆盖 config.xml 文件的示例:

  1. 在项目的顶部,创建一个名为“ overlay ”的新目录
  2. 在该目录中创建一个与您要更改的packages/apps/Settings中的配置文件位置相对应的路径 packages/apps/Settings/res/values
  3. 将 config.xml 从 Android 源代码复制/粘贴到新目录(在 value 文件夹中)。这降低了出错的风险
  4. 删除所有不想修改的配置条目,但不要删除 XML 格式!
  5. 您现在可以根据需要对此 config.xml 进行更改
  6. 最后,在项目顶部将以下内容添加到make 文件(.mk) 中,并指定覆盖目录的正确路径: PRODUCT_PACKAGE_OVERLAYS += \ <path/to/overlay/directory/from/step/one>
  7. 完毕!您现在也可以使用这个单一的覆盖目录来覆盖其他存储库中的其他文件!无论您在覆盖目录下添加什么,现在都应该成功应用(只要路径/文件与 Android 源正确匹配)

这是我在这个论坛上的第一个答案。希望它对某人有帮助:)