首页 > 解决方案 > 为预安装的应用程序设置初始 shared_prefs?

问题描述

我正在构建一个 Android 映像,并使用以下内容预安装一个应用程序Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := MyApplication
LOCAL_MODULE_TAGS := optional
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_SRC_FILES := com.foobar.myapplication.apk
include $(BUILD_PREBUILT)

现在我还想预装一些配置文件。为此,我必须将文件复制到/data/data/com.foobar.myapplication/shared_prefs/. 我试图通过PRODUCT_COPY_FILES在我的 makefile 中执行此操作,但是这些文件没有正确的权限,并且应用程序无法访问它们。

我能想出的唯一解决方案是init.rc在第一次运行时调用一个填充我的配置文件的脚本。但是,将配置文件创建为该应用程序的正确 Linux 用户会很棘手。如果我在文件上手动使用(用于测试目的)chmod a+rw,它会按预期工作。

有没有办法为预构建的应用程序提供初始配置?

标签: androidandroid-source

解决方案


如果我是你,我会遵循用户空间应用程序的常用方法,即:如果在应用程序启动时使用目录,则让应用程序本身填充初始共享首选项(通常在 onCreate() 中执行这样的操作)相关活动)。

这将解决正确位置、访问权限等问题。

最简单的方法是将默认值捆绑在资产中。


推荐阅读