开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,预置无源码apk进入android系统 >> >

371 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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编译进了系统,第一次写文有很多不足,请大家多多指教