本文主要是介绍将apk和所需库文件编译打包到system/priv-app路径下,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
有时候通过安装apk方式来运行此apk会遇到一些avc denied(比如,没有system权限访问不了system/lib64下的库文件),需要将apk以及apk所需要的so文件拷贝到system/priv-app/路径下,到时有时候没有root权限,并不能往system/priv-app/路径下创建文件,所以我们需要做如下操作:
- 在有root权限的机器上安装apk
- adb root
- adb remount
- adb shell进入adb模式
- cd /data/app/apk包名-xxxxxxx
- 将上述base.apk和lib文件夹pull出来当一个文件夹中,并将base.apk重命名为apk原先的名字
- 新建一个HelloWorld文件夹,并将上述所有so文件和HelloWorld.apk拷贝到HelloWorld文件夹中
- 将HelloWorld文件夹拷贝到Android源码中的external/xxx/路径下
- 在external/mobicore/HelloWorld/路径下创建Android.mk,并添加如下内容(对于不同apk,只需要修改LOCAL_MODULE和LOCAL_PREDUILT_JNI_LIBS)
LOCAL_PATH := $(my-dir)#apk file
include $(CLEAR_VARS)
LOCAL_MODULE := HelloWorld
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_PRIVILEGED_MODULE := true
LOCAL_DEX_PREOPT := false
#LOCAL_MULTILIB := 32
#LOCAL_JNI_SHARED_LIBRARIES := libAndro7za libbase_module_dex libbitmaps libblur_armv7 libcmdsh libcommon_basemodule_jni libFdToFilePath libFileNDK libgif-jni libmemchunk libmttgpu_info libmttport_shared libmttwebview libmttwebview_plat_support libNativeRQD libqb_keystore libresapk libSharpPDecoder libtbs_sdk_extension_dex libtbs_shell_dex libtbsconf libTencentLocationSDK libtencentpos libvideo_impl_dex libwebp_base libwebview_dex libwebview_internal_service_dexLOCAL_PREBUILT_JNI_LIBS := libHelloWorldJavaClient.so \
libTee.so \
libTeeClient.so \
libblur_armv7.so \
libTeeJni.soPRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES += $(LOCAL_MODULE)include $(BUILD_PREBUILT)
- 保存之后,build系统,之后可以看到out/target/product/${product_name}/system/priv-app/HelloWorld已经打包进来了
- 重刷system.img
这篇关于将apk和所需库文件编译打包到system/priv-app路径下的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!