最近接到一条需求,需要调用WifiP2pManager.setWfdInfo方法进行投屏接收端功能开发,但查看此方法,发现是系统级别api,通过反射也无法调用,所以想到能否通过设置app为系统级别app来解决这个问题;
这里比较简单,网上资料很多,这里就不再赘述,直接上代码;
sharedUserId属性<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.xxx.xxx"
android:sharedUserId="android.uid.system">
<uses-permission android:name="android.permission.INSTALL_PACKAGES"/>
category属性; <activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.MONKEY" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
java -Djava.library.path=. -jar signapk.jar platform.x509.pem platform.pk8 source.apk target.apk【这里的source.apk指要进行系统签名的apk,target.apk指签名成功后输出的apk】过程中如果存在问题可以参考如下文档:
Android系统签名报错 no conscrypt_openjdk_jni in java.library.path
基于android-11.0.0_r39,系统应用的手动签名方法和过程
Android设置项目为系统APP
经过上述步骤后,我们已经成功将app打包成系统app,也就是上述生成的target.apk文件,然后将target.apk push到/system/app/下即可。
adb root
adb remount
adb push target.apk /system/app
adb reboot
设备重启后,我们的app就自动被安装成功系统app啦!!!
如果以上文章对您有一点点帮助,希望您不要吝啬的点个赞加个关注,您每一次小小的举动都是我坚持写作的不懈动力!ღ( ´・ᴗ・` )