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

第一情况、如何将带源码的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

时间: 2024-12-29 02:09:16

android 5.0预制APK方法,android5.0预制apk的相关文章

android.support.design.widget.AppBarLayout 在android5.0+底部显示空白条问题

在最外层使用 RelativeLayout作为根节点,同时设置 android:fitsSystemWindows="true"问题解决. <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://

AOSP Android5.0 lollipop 源码同步更新方法

repo init -u https://android.googlesource.com/platform/manifest -b android-5.0.0_r2 repo sync -j16 或者 repo init -u https://android.googlesource.com/platform/manifest -b lollipop-release repo sync -j16

Android5.0 新特性学习总结

参考文章: 极客学院 –Material Design 中文版图文教程 几行代码,让你的 APP 变得花俏-Android Design Support Library 代码实验 material design 的android开源代码整理 低版本android上实现Material design应用 Android5.0版本,推出了Material Design的概念,这是在设计上Android的又一大突破.对应的程序实现上就有如 Theme.Material.Light. Theme.Mat

Android5.0 v7扩展包之RecyclerView

Android5.0 v7扩展包之RecyclerView Android开发文章 androidRecyclerView 近日Google发布了Android5.0 SDK,随之android L的部分预览功能也发布了正式版本.本文将介绍RecyclerView. RecylerView简介 The RecyclerView widget is a more advanced and flexible version of ListView. This widget is aContainer

(3) 下载 Android-5.0 源码

下载 Android 源码,使用 repo 工具.其实源码分布在多个 Git 仓库中的,repo 就是用来操作多个 Git 仓库的. 这里需要下载的是 Android-5.0的源码,结合一款具体设备,分析起来更有针对性,就选 Nexus5 了.由于是用于学习的,所以不需要把其它分支也下载过来,提交记录也不用,我们需要下载分支是: android-5.0.1_r1 并且和 Nexus5 无关的代码都可以不下载.实际上下载了一晚上就完成了,记得以前下载所有仓库可是用了好几天…… 设置代理 这个自己搞

android5.0视频教程下载

国内首部android 5.0视频教程 网盘下载地址: http://pan.baidu.com/s/1dDcoUUP 密码: zw67 要是网盘失效了,请加我QQ: 3113533060 课程内容 本套视频特点: 1.本套视频知识点覆盖率是市面上最广的.最有深度的,从入门到中级.到完成一个项目的全面应用讲解. 2.本套视频层次性很强.不像别的机构只是断章取义的推出视频,吊足学习者的胃口. 3.本套视频重点介绍了 1).Android概述: 2).Android集成开发环境搭建: 3).常用UI

Android -- Camera2(Android5.0)

Camera2 Camera2是Android5.0中的其中一个新的特性,新的API.与原来的camera API相比,不同之处在于: 原生支持RAW照片输出 突发拍摄模式 制约拍照速度的不再是软件而是硬件.以Nexus 5为例,分辨率全开下Andorid L的连拍速度可达到30fps. 全手动控制 快门.感光度.对焦.测光.硬件视频防抖等多种参数都被整合到了新的API内.新的API中添加的手动控制功能列表: 感光度 手动对焦/AF开关 AE/AF/AWB模式 AE/AWB锁 硬件视频防抖 连续

Nexus 5更新 Android5.0 失败解决方法

Android 5.0最终推出了正式版,今天也及时刷到了Android5.0 (LRX21O),官方链接:https://developers.google.com/android/nexus/images 镜像下载地址:https://dl.google.com/dl/android/aosp/hammerhead-lrx21o-factory-01315e08.tgz.MD5:761667f1ddaf4e38d4792136df4ab927.SHA-1:01315e08c7f282452b5

Android自定义组件系列【14】——Android5.0按钮波纹效果实现

今天任老师发表了一篇关于Android5.0中按钮按下的波纹效果实现<Android L中水波纹点击效果的实现>,出于好奇我下载了源代码看了一下效果,正好手边有一个Nexus手机,我结合实际效果看了一下,发现有一些地方和实际效果稍有不同,参考任老师的博文实现简单实现了一个重写View组件的代码,将全部代码贴出,如果有什么问题或者更好的方式请指出,在此再次感谢任老师的这篇博文. 转载请说明出处:http://blog.csdn.net/dawanganban 顺便在这里拉一下票,如果你觉得这篇文

android 中遇到 imageView getWidth 始终为0 时 ,设置 setImageBitmap 的方法

先说说我的遇到的问题: 1. 我在activity里写一个 fragment 2.这个fragment里有个 imageView ,用于显示图片. 我使用 asyncTask获得图片,并准备在这个imageView 中显示该图片的缩略图,我准备使用  ThumbnailUtils.extractThumbnail 方法生成缩略图. 我们先看看ThumbnailUtils.extractThumbnail(source, width, height);  这个方法的参数   source 源文件(