android源码预置apk(rk3288 ) 记录

1、源码编译已经通过

2、已签名的apk(关于使用源码系统签名可查看https://blog.csdn.net/qq_29389373/article/details/87168615

具体操作

1、找到源码目录在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以预制一个名为Test的APK为例
2、将 Test.apk 放到 packages/apps/Test 下面
3、在  packages/apps/Test 下面创建文件 Android.mk,内容如下:

#每个Android.mk文件必须以定义LOCAL_PATH为开始。它用于在开发tree中查找源文件。

#宏my-dir 则由Build System提供。返回包含Android.mk的目录路径。

LOCAL_PATH := $(call my-dir)   

#CLEAR_VARS 变量由Build System提供。并指向一个指定的GNU Makefile,由它负责清理很多LOCAL_xxx.

#例如:LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES等等。但不清理LOCAL_PATH.

#这个清理动作是必须的,因为所有的编译控制文件由同一个GNU Make解析和执行,其变量是全局的。所以清理后才能避免相

#互影响。

include $(CLEAR_VARS)
# LOCAL_MODULE模块必须定义,以表示Android.mk中的每一个模块。名字必须唯一且不包含空格。
LOCAL_MODULE := Test
LOCAL_MODULE_TAGS := optional

#输入文件,这里是Test.apk对应。可以发现源码中其他app是java src  LOCAL_SRC_FILES := \ $(call all-java-files-under, src) \
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)


 
4、打开文件 build/target/product/${Project}.mk 
    将 Test 添加到 PRODUCT_PACKAGES 里面。(RK3288这里可以看到一个generic.mk又引入generic_no_telephony.mk,我们可以将Test加入到generic_no_telephony.mk的PRODUCT_PACKAGES里面)
5、如果有so库,解压apk获得so库,放入文件夹并将so库配置好

LOCAL_PREBUILT_JNI_LIBS := \
   @lib/armeabi/libtest.so \
   @lib/armeabi/libtest2.s  

6、重新make

7、更改其他(如build.prop),使用make snod,重新生成system.img

8、运行./mkimage.sh,自动编译复制生成多个img,生成目录为reckev

9、下载官方androidtool刷入生成的固件system.img

 

附:

自己的launcher替换系统launcher

更换Launcher3

在/packages/apps/目录下新建Mylauncher文件夹,并在该文件夹下新建一个Android.mk文件。其内容如下

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE := Mylauncher

LOCAL_SRC_FILES := $(LOCAL_MODULE).apk

LOCAL_PRIVILEGED_MODULE := true

LOCAL_MODULE_CLASS := APPS

LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

LOCAL_CERTIFICATE := platform

include $(BUILD_PREBUILT)

其中这一句LOCAL_PRIVILEGED_MODULE := true的意思是该app是系统app,不可删除,会被自动拷贝到\out\target\product\almond\system\priv-app目录下。

2 找到源码对应的make文件。打开device/xx/almond/device.mk,把PRODUCT_PACKAGES +=后面的找到Launcher3,并替换为MyLauncher

3将系统原生的apklauncher属性删除掉。打开packages\apps\Launcher3\AndroidManifest.xml 和\development\samples\Home\AndroidManifest.xml注释掉(或者删除)里面的以下这两句话。

<category android:name="android.intent.category.HOME" />

<category android:name="android.intent.category.DEFAULT" />

 

 

附:该部分为转载   原文链接:https://blog.csdn.net/u010672559/article/details/79957265

个人建议自己客制化的文件最好独立出来一个文件夹管理,不要和mtk或者rk的混在一起了,我个人是这样处理的

vendor\custom\app\XXX 下面放apk文件(或者源码)和Android.mk文件

vendor\custom\lib\XXX 下面放预置所需的so文件

vendor\custom\custom.mk

PRODUCT_PACKAGES += XXX

PRODUCT_COPY_FILES += vendor/custom/lib/XXX.so:system/lib/XXX.so 将so文件copy到system/lib下面,注意文件路径要对应上,apk调用so文件的优先级是先是自己apk的内部lib路径,然后是vender下的lib,然后是system下面的lib,apk如果 因为so文件找不到的话,可以看到提示

device\rockchip\rkXXX\device.mk或者device\mediatek\mtXXX\device.mk中最底部添加语句

$(call inherit-product-if-exists, vendor/custom/custom.mk)

大概流程是make的时候会去include所有的mk文件,包括device.mk,而device.mk中又关联添加了custom.mk,custom.mk中又添加了PRODUCT_PACKAGES += XXX,然后XXX和vendor\custom\app\XXX下面的Android.mk中XXX一致,之后就编译到了XXX,其中custom为自己定义的文件名,其实可以为其他任何文件名,包括custom.mk,但是后缀要是.mk即可,且

$(call inherit-product-if-exists中的文件路径要实际对应
 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值