正在构建 GrapheneOS 的自定义版本,并一直在尝试将预构建的 APK (Mdm.apk) 包含到构建中。为此,我将 APK 添加到“external/MyApp”目录,然后修改“build/target/product/handheld_product.mk”以包含新包 (Mdm.apk) 的条目。此外,我创建了一个单独的预构建模块来包含权限 XML 文件 (app.grapheneos.appstore.xml),并将其指定为 Mdm.apk 所需的模块。
“handheld_product.mk”的目录结构和相关部分如下所示:
external/
|-- MyApp/
| |-- myapp.apk
|-- app.grapheneos.myapp.xml
build/
|-- target/
| |-- product/
| | |-- handheld_product.mk
但是,进行这些更改后,自定义构建不再成功启动。设备卡住或无法继续播放启动动画。我怀疑我在构建中包含预构建的 APK 及其关联的权限文件的方式可能存在问题。
这是我的“handheld_product.mk”的相关部分:
include $(CLEAR_VARS)
LOCAL_MODULE := app.grapheneos.myapp.xml
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT_ETC)/permissions
LOCAL_SRC_FILES := permissions/$(LOCAL_MODULE)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := myapp.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_PRIVILEGED_MODULE := true
LOCAL_MODULE_PATH := $(TARGET_OUT)/priv-app
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_SRC_FILES := myapp.apk
LOCAL_OPTIONAL_USES_LIBRARIES := androidx.window.extensions androidx.window.sidecar
LOCAL_REQUIRED_MODULES := app.grapheneos.myapp.xml
include $(BUILD_PREBUILT)
您是否检查过以确保您的所有权限都正确?当我在没有相关应用程序的情况下进行构建之前遇到此问题时,启动,安装(通过 adb,但不应该影响如何)应用程序,然后运行:
adb shell dumpsys package [your package name here]
这应该会带回安装所需的权限列表,我将其重新格式化为我的 priv-app 权限列表。然后我用有问题的应用程序重建并成功启动。
还基于您的文件结构和您拥有的makefile,不确定这是否是一个错误,但如果您没有将权限列表存储在“MyApp/permissions”中,那么构建系统似乎不会找到它
最后,您的手持式产品.mk 可能看起来不是这样的;我的猜测是你的 Android.mk 属于你的 MyApp 目录。手持式产品是您在 PRODUCT_PACKAGES 列表中声明您的应用程序的位置,有点像这样:
PRODUCT_PACKAGES += \
...
MyApp \
我可以获得有关如何集成 apk 的详细步骤吗?我正在密切关注 Pixel 8a 的官方构建指南,但我被困住了。没有这个 apk,我已经成功构建操作系统并将其刷新到我的设备中
我在handled_product.mk中提到了MyApp,我的android.mk如下
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := MDMApk
LOCAL_MODULE_CLASS := APPS
LOCAL_SRC_FILES := MDMApk.apk
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
include $(BUILD_PREBUILT)
我想知道我是否需要做一些事情,例如使用 GrapeheneOS 或其他任何东西签署此 apk。请告诉我。