AndroidプリセットApkメソッド
6012 ワード
仕事のために、システムアプリを開発したり、統合したりすることが多いので、Androidの統合システムアプリケーションを収集して記録する方法として、後で調べる準備をしています.
一、プリセットapk方法
Case 1:ソースコード付きAPKをシステムにプリセットする方法 packages/appsの下にプリセットが必要なAPKの名前で新しいフォルダを作成し、TestというAPKをプリセットする例 Test APKのSourceコードをTestフォルダにコピーし、/binおよび/genディレクトリ を削除 Testディレクトリの下にAndroidという名前を作成します.mkのファイル、内容は以下の通り: ファイルを開くmk、PRODUCT_にTestを追加PACKAGESの中. 再build工事全体 Case 2:どのようにしてソースコードのないAPKをシステムにプリセットしますか? packages/appsの下にプリセットが必要なAPK名でフォルダを作成し、TestというAPKをプリセットする例 Test.apkはpackages/apps/Testの下 に置く packages/apps/Testの下にファイルAndroidを作成します.mk、ファイル内容は以下の通り:
soがなければLOCAL_を削除PREBUILT_JNI_LIBSにsoがあればLOCAL_を使いますPREBUILT_JNI_LIBSはすべてのsoのパスをリストし、@を忘れないでください.@識別子はapkのsoを抽出しますbuildはapkの兄弟ディレクトリのlibフォルダに挿入されます
apkが異なるcpuタイプのsoをサポートする場合、soの部分に対する処理:
まもなくTARGET_とARCH対応so抽出ファイルを開くmk PRODUCT_にTestを追加PACKAGESの中.PRODUCT_PACKAGES += Test 再build工事全体 tip:AppがSystem Levelのpermissionを使用する場合は、/system/priv-appの下(元は/system/app)にプリセットする必要があります.Androidを修正mk、LOCAL_を追加PRIVILEGED_MODULE:=trueで、appを/system/priv-appの下に置く必要があることを宣言します.
Case 3:APKをプリセットしてユーザーがアンインストールできるようにするには、出荷時の設定を復元しても復元できませんか? packages/appsの下にプリセットが必要なAPK名でフォルダを作成し、TestというAPKをプリセットする例 Test.apkはpackages/apps/Testの下 に置く packages/apps/Testの下にファイルAndroidを作成します.mk、ファイル内容は以下の通り: ファイルを開くmk PRODUCT_にTestを追加PACKAGESの中. 再build全体の工事注意:これはアンインストールできないより1つ多い
Case 4:APKを事前に設定することで、ユーザーがアンインストールでき、出荷時の設定を復元できますか? vendormediatekproprietarybinary3 rd-partyfreeの下にプリセットが必要なAPK名でフォルダを作成し、TestというAPKをプリセットする例 Test.apkはvendormediatekproprietarybinary3 rd-partyfreeTestの下に を入れます vendormediatekproprietarybinary3 rd-partyfreeTestの下にファイルAndroidを作成します.mk、ファイル内容は以下の通り: ファイルを開くmk PRODUCT_にTestを追加PACKAGESの中. その後、 工事全体を再build
32 bitのapkとしてapkを実行する必要がある場合はAndroid.mkで定義
二、Android.mkファイルパラメータ説明
LOCAL_MODULE_TAGS := optional
optionalとは、このモジュールがすべてのバージョンでコンパイルされていることを意味します.
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
ディレクトリのjavaファイルの取得
LOCAL_PACKAGE_NAME := Test
パッケージ名
LOCAL_CERTIFICATE := platform
署名、PRESIGNEDはapkファイルを保持する前の署名を表し、platformはapkに対して再署名を行う
LOCAL_PROGUARD_ENABLED := disabled
コード混同ツールを使用して混同しないでください
転載情報:
作者:雨と風
リンク:https://www.jianshu.com/p/9af0a34d3eed
出典:簡書
一、プリセットapk方法
Case 1:ソースコード付きAPKをシステムにプリセットする方法
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := Test
include $(BUILD_PACKAGE)
PRODUCT_PACKAGES += Test
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := Test
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_PREBUILT_JNI_LIBS:= \
@lib/armeabi/libtest.so \
@lib/armeabi/libtest2.so
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)
soがなければLOCAL_を削除PREBUILT_JNI_LIBSにsoがあればLOCAL_を使いますPREBUILT_JNI_LIBSはすべてのsoのパスをリストし、@を忘れないでください.@識別子はapkのsoを抽出しますbuildはapkの兄弟ディレクトリのlibフォルダに挿入されます
apkが異なるcpuタイプのsoをサポートする場合、soの部分に対する処理:
Ifeq ($(TARGET_ARCH),arm)
LOCAL_PREBUILT_JNI_LIBS := \
@lib/armeabi-v7a/xxx.so\
@ lib/armeabi-v7a/xxxx.so
else ifeq ($(TARGET_ARCH),x86)
LOCAL_PREBUILT_JNI_LIBS := \
@lib/x86/xxx.so
else ifeq ($(TARGET_ARCH),arm64)
LOCAL_PREBUILT_JNI_LIBS := \
@lib/armeabi-v8a/xxx.so
…
まもなくTARGET_とARCH対応so抽出
Case 3:APKをプリセットしてユーザーがアンインストールできるようにするには、出荷時の設定を復元しても復元できませんか?
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := Test
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
# LOCAL_PRIVILEGED_MODULE := true
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)
PRODUCT_PACKAGES += Test
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
Case 4:APKを事前に設定することで、ユーザーがアンインストールでき、出荷時の設定を復元できますか?
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := Test
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_MODULE_PATH := $(TARGET_OUT)/vendor/operator/app
include $(BUILD_PREBUILT)
PRODUCT_PACKAGES += Test
32 bitのapkとしてapkを実行する必要がある場合はAndroid.mkで定義
LOCAL_MULTILIB :=32
二、Android.mkファイルパラメータ説明
LOCAL_MODULE_TAGS := optional
optionalとは、このモジュールがすべてのバージョンでコンパイルされていることを意味します.
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
ディレクトリのjavaファイルの取得
LOCAL_PACKAGE_NAME := Test
パッケージ名
LOCAL_CERTIFICATE := platform
署名、PRESIGNEDはapkファイルを保持する前の署名を表し、platformはapkに対して再署名を行う
LOCAL_PROGUARD_ENABLED := disabled
コード混同ツールを使用して混同しないでください
転載情報:
作者:雨と風
リンク:https://www.jianshu.com/p/9af0a34d3eed
出典:簡書