最近开发中需要将自己开发的应用定义为系统应用,以调用一些@hide的系统api
首先我是通过在android源代码下编译的方式,在android.mk中部分定义
使用平台证书:
LOCAL_CERTIFICATE := platform
与之在system/priv-app目录下
LOCAL_PRIVILEGED_MODULE := true
再然后在AndroidManifest.xml中定义:
android:sharedUserId="android.uid.system"
coreApp="true"
在然后通过mmm package/app/Myapp模块编译编译的时候最终还是会报错,提示找不到方法
参考其他模块的Android.mk文件,发现一个很重要的配置:
LOCAL_PRIVATE_PLATFORM_APIS := true
该配置会使用sdk的hide的api来编译
与之对应的是:LOCAL_SDK_VERSION := current 意思是编译时忽略系统隐藏类(@hide)api
最终配置这个后就解决了问题。