持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第28天,点击查看活动详情
预置无源码apk进入android系统主要分为一下三步
1 拿到预置的APK 首先直接进行adb APK安装 确认APK功能是否OK.
如果可以直接安装,一般就没有大问题,注意相关预置问题即可;如果不能安装,根据命令行提示解决相关报错。
2 再packages\apps下建立与APK名字相同的文件夹,将APK放进去
3 建立Android.mk文件:Android.mk常用模块变量已下链接可以进行借鉴blog.csdn.net/a22796853/a…
例子:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := Test
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_PREBUILT_JNI_LIBS:= \
@lib/armeabi/libtest.so \
@lib/armeabi/libtest2.so
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)
若无so,删除LOCAL_PREBUILT_JNI_LIBS
若有so,使用LOCAL_PREBUILT_JNI_LIBS列出所有so的路径,不要忘记使用@。@标识符会将apk中的so抽离出来build进apk同级目录下的lib文件夹中
若apk支持不同cpu类型的so,针对so的部分的处理:
Ifeq ($(TARGET_ARCH),arm)
LOCAL_PREBUILT_JNI_LIBS := \
@lib/armeabi-v7a/xxx.so\
@lib/armeabi-v7a/xxxx.so
else ifeq ($(TARGET_ARCH),x86)
LOCAL_PREBUILT_JNI_LIBS := \
@lib/x86/xxx.so
else ifeq ($(TARGET_ARCH),arm64)
LOCAL_PREBUILT_JNI_LIBS := \
@lib/armeabi-v8a/xxx.so
…
打开文件 build/make/target/product/handheld_product.mk,将 Test 添加到 PRODUCT_PACKAGES 里面 即:PRODUCT_PACKAGES += Test
重新 build 整个工程 然后成功的将无源码apk编译进了系统,第一次写文有很多不足,请大家多多指教