AndroidAPK呼び出しシステム隠しAPI

APKは隠しAPIを呼び出します

SerialServiceの呼び出し例

1、修改フレームワーク\ 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に変更し、AndroidStudioにインポートします。

          

 

4.プロジェクトのbuild.gradleに次のコードを追加します

  

 

5. SerialManager.java- >  getInstance ()メソッドを呼び出します

 

getSerialPorts()アプリを呼び出すには、android.permission.SERIAL_PORT権限を取得する必要があります

 

システム以外のアプリがこの権限を取得すると、エラーが報告されます。AndroidStudioのデフォルト構成を次のように変更する必要があります。

 

次に、apkをコンパイルして生成し、このapkをシステムにビルドします。

  1. 図に示すように、Packages / apps /の下にフォルダーを作成し、android.mkファイルを追加して、スタジオによって生成されたapkをインポートします。

      

 

  1. 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)

 

  1. device \ mediatek \ mt6761 \ device.mkマクロを追加
PRODUCT_PACKAGES += MyApplicition

 

  1. ./buildall_userdebug.sh B5528BIO

コンパイルが成功すると、システム/アプリの下にapkが生成されます

 

おすすめ

転載: blog.csdn.net/liu362732346/article/details/102970544