`

android 5.0预制APK方法,android5.0预制apk

阅读更多
MTK

第一情况、如何将带源码的APK预置进系统
1) 在 packages/apps 下面以需要预置的 APK的 名字创建一个新文件夹,以预置一个名为Test的APK 为例
2) 将 Test APK的Source code 拷贝到 Test 文件夹下,删除 /bin 和 /gen 目录
3) 在 Test 目录下创建一个名为 Android.mk的文件,内容如下:
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)
4) 打开文件 device\mediatek\common\device.mk
将 Test 添加到 PRODUCT_PACKAGES 里面。
PRODUCT_PACKAGES += Test
5) 重新 build 整个工程

Second、如何将无源码的 APK 预置进系统
1) 在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以预置一个名为Test的APK为例
2) 将 Test.apk 放到 packages/apps/Test 下面
3) 在 packages/apps/Test 下面创建文件 Android.mk,文件内容如下:
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抽离出来

4) 打开文件 device\mediatek\common\device.mk
将 Test 添加到 PRODUCT_PACKAGES 里面。
PRODUCT_PACKAGES += Test
5) 重新 build 整个工程

注:如果App使用System Level的permission,需要預置到/system/priv-app底下 (原在/system/app)。
修改Android.mk,增加LOCAL_PRIVILEGED_MODULE := true,以声明app需要放在/system/priv-app下。

Third、如何预置APK使得用户可以卸载,恢复出厂设置时不能恢复?
1) 在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以预置一个名为Test的APK为例
2) 将 Test.apk 放到 packages/apps/Test 下面
3) 在 packages/apps/Test 下面创建文件 Android.mk,文件内容如下:

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)

4) 打开文件 device\mediatek\common\device.mk
将 Test 添加到 PRODUCT_PACKAGES 里面。
PRODUCT_PACKAGES += Test
5) 重新 build 整个工程
注意:这个比不能卸载的多了一句
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)

4-th、如何预置APK使得用户可以卸载,并且恢复出厂设置时能够恢复?
1在 vendor\mediatek\proprietary\binary\3rd-party\free下面以需要预置的 APK 名字创建文件夹,以预置一个名为Test的APK为例
2 将Test.apk 放入vendor\mediatek\proprietary\binary\3rd-party\free\Test下面
3 在vendor\mediatek\proprietary\binary\3rd-party\free\Test 下面创建文件 Android.mk,文件内容如下

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)

2 打开文件device\mediatek\common\device.mk
将 Test 添加到 PRODUCT_PACKAGES 里面。
PRODUCT_PACKAGES += Test
3 然后重新build整个工程


若需要apk作为32bit的apk运行,则需要在Android.mk中定义
LOCAL_MULTILIB :=32

From:http://www.android100.org/html/201506/17/154721.html
分享到:
评论

相关推荐

    1024_v5.0.apk

    1024_v5.0.apk

    Android 5.0 odex合并apk

    "Android 5.0 odex合并apk"这个过程主要是为了对系统进行修改或定制时,将Odex文件与Apk应用进行整合。这个操作通常由开发者或者 ROM 制作者进行,目的是为了让修改后的系统或应用更加精简,减少不必要的文件,便于...

    Android 5.0 源码下载

    Android 5.0 源码

    Android5.0可用tcpdump

    这个tcpdump版本是可以在Android 5.0设备上使用的。

    深入解析Android 5.0系统.pdf(刘超著)

    深入解析Android 5.0系统 带目录 扫描版本 超棒的资料

    深入解析Android5.0系统

    资源名称:深入解析Android 5.0系统内容简介:《深入解析Android 5.0系统》详细剖析了最新Android 5.0 系统主要框架的原理和具体实现。本书共24章,覆盖了Android 5.0 系统中、下层重要的模块,对于每个模块都详细...

    Android-21 Android SDK platforms 21(Android5.0)

    **Android-21 Android SDK Platforms 21 (Android 5.0) 知识点详解** Android 5.0(代号Lollipop)是Google在2014年推出的一个重大更新,它对Android系统进行了许多重要的改进和优化,不仅提升了用户体验,也增强了...

    Android 5.0jni调用

    9. **性能优化**:Android 5.0还对JNI调用的性能进行了优化,比如减少方法调用开销,提高了JNI与Java之间的数据交换速度。 总之,"Android 5.0 JNI调用"示例旨在帮助开发者理解并掌握在新版本Android中正确、高效地...

    android5.0.zip

    《Android 5.0 深入解析:框架代码与应用开发》 Android 5.0,代号“棒棒糖”(Lollipop),是谷歌发布的一个重要版本更新,为移动设备带来了诸多新特性和性能优化。这次更新不仅在用户界面(UI)上进行了大幅度...

    android5.0下拉刷新

    下面将详细介绍SwipeRefreshLayout的工作原理、使用方法以及与Android 5.0系统的集成。 ### SwipeRefreshLayout概述 SwipeRefreshLayout是一个容器布局,它允许其子视图支持下拉刷新。当用户在界面上方滑动时,...

    深入解析Android 5.0系统 ,刘超著 _高清.pdf

    根据提供的信息,我们可以推断这本书《深入解析Android 5.0系统》由刘超撰写,主要聚焦于Android 5.0系统的深入分析和技术探讨。由于给出的部分内容并未包含实际的技术细节,下面将围绕该书可能涉及的核心技术点进行...

    Android 5.0系统以上获取运行进程demo

    在早期的Android版本中,开发者可以通过`ActivityManager`的`getRunningAppProcesses()`方法获取当前系统中正在运行的应用进程信息。然而,从Android 5.0(API级别21)开始,谷歌为了提升系统的安全性和性能,对这一...

    android 5.0帮助文档

    根据提供的文件信息,我们可以深入探讨Android 5.0(代号Lollipop)的相关知识点,包括其主要特性、改进以及对开发者和用户的意义。 ### Android 5.0 Lollipop概述 Android 5.0 Lollipop是Google于2014年发布的...

    Android 5.0 samples

    在Android开发领域,Android 5.0(代号Lollipop)是一个重要的里程碑版本,它引入了许多新特性、改进和优化,极大地提升了用户体验和开发者的工作效率。这个名为"Android 5.0 samples"的压缩包提供了API Level 21的...

    Android 5.0 (API 21) SDK platforms

    **Android 5.0 (API 21) SDK Platforms 深度解析** Android 5.0,代号“Lollipop”,是Google于2014年推出的一个重大更新,带来了许多新特性和性能改进。这个SDK平台包是开发者进行Android应用开发的重要工具,它...

    Android 5.0 录屏和截屏

    Android 5.0 录屏和截屏Android 5.0 录屏和截屏Android 5.0 录屏和截屏Android 5.0 录屏和截屏Android 5.0 录屏和截屏Android 5.0 录屏和截屏

    182147174068072【知行】潮玩宇宙5.0-5.0.apk

    182147174068072【知行】潮玩宇宙5.0-5.0.apk

    Android5.0帮助文档Part5(共5个压缩包259M)

    从谷歌官网下载的的帮助文档,现在国内不容易访问谷歌, 所以共享出来,利人利己....最好是用火狐浏览器,然后在浏览器设置脱机工作,...Android5.0帮助文档Part5(共5个压缩包259M) docs.zip (35.7M)(第5个,通过这个文件解压)

    Android5.0帮助文档Part1(共5个压缩包259M)

    从谷歌官网下载的的帮助文档,现在国内不容易访问谷歌, 所以共享出来,利人利己....最好是用火狐浏览器,然后在浏览器设置脱机工作,...Android5.0帮助文档Part5(共5个压缩包259M) docs.zip (35.7M)(第5个,通过这个文件解压)

Global site tag (gtag.js) - Google Analytics