1. 程式人生 > >MTK 平臺Android6.0 系統整合第三方apk 的解決策略

MTK 平臺Android6.0 系統整合第三方apk 的解決策略

比如我要整合的apk 的名字叫ATest.apk

1.在package/app/目錄下面面加入一個資料夾資料夾名字:ATest(這裡最好使用apk 一樣的名字,方便以後更好的程式碼維護,如果使用其它隨便命名的名字也是可以得。)


2.把ATest.apk 放入到ATest 資料夾下,並且自己定義一個mk 檔案。


3.Android.mk 的配置如下所示:

====================Android.mk begin====================

#
# Copyright (C) 2008 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#


LOCAL_PATH := $(call my-dir)


include $(CLEAR_VARS)
LOCAL_MODULE := IRblasterTest
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_PRIVILEGED_MODULE := true
LOCAL_PREBUILT_JNI_LIBS:= \
@lib/arm64-v8a/libserial_port.so
include $(BUILD_PREBUILT)

====================Android.mk end====================

其中如果編譯到ROM裡面的apk 不能正常執行這裡注意修改許可權

LOCAL_CERTIFICATE := PRESIGNED 這個改為LOCAL_CERTIFICATE := platform

這個 LOCAL_PRIVILEGED_MODULE := true  指的就是內建到system/priv-app下面

LOCAL_PREBUILT_JNI_LIBS:= \
@lib/arm64-v8a/libsnappydb-native.so  這個就是抽出lib庫


4.修改對應的mk 指令碼編譯

修改的指令碼目錄:device/company/project/full_project.mk


PRODUCT_PACKAGES += \
FactoryMode \
           XXXX1\
           XXXX2




---------------------------------------------------------------------------------------------


如果是v7a的lib庫 就像這個一樣加上LOCAL_MULTILIB :=32 告訴系統是32位的