APK调用隐藏api
已调用SerialService为例
1,修改frameworks\base\core\java\android\hardware\SerialManager.java
添加如下代码:
public static SerialManager getInstance(Context context){
mSerialManager = (SerialManager)context.getSystemService(Context.SERIAL_SERVICE);
return mSerialManager;
}
2,编译代码生成class.jar
命令:./buildall_userdebug.sh B5528BIO
编译成功后,会生成
out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes.jar
3,将classes.jar改名为framework.jar导入到android studio中,如图:
4,在project下的build.gradle下添加如下代码
5,调SerialManager.java--> getInstance()方法
调用getSerialPorts() app需要获取到android.permission.SERIAL_PORT权限
非系统app获取此权限会报错,需要修改android studio默认配置,如下:
然后编译生成apk,将此apk内置到系统中,
- Packages/apps/下创建文件夹,添加android.mk文件,并将studio生成的apk导入进去,如图:
- anroid.mk修改编译
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := MyApplicition
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := MyApplicition.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_PREBUILT_JNI_LIBS := \
@lib/armeabi-v7a/liben_data_bundle.so \
@lib/armeabi-v7a/libgnustl_shared.so \
@lib/armeabi-v7a/libhmm_gesture_hwr_zh.so \
@lib/armeabi-v7a/libhwrword.so \
@lib/armeabi-v7a/libpinyin_data_bundle.so
LOCAL_MODULE_PATH := $(TARGET_OUT)/app
LOCAL_CERTIFICATE := platform
LOCAL_DEX_PREOPT := false
LOCAL_PACKAGE_NAME := MyApplicition
LOCAL_PRIVATE_PLATFORM_APIS := true
include $(BUILD_PREBUILT)
- device\mediatek\mt6761\device.mk添加宏
PRODUCT_PACKAGES += MyApplicition
- ./buildall_userdebug.sh B5528BIO
编译成功会在system/app下生成apk