Android之APP模块编译
一,如何把app编进系统
a.源码编译,在packages/apps目录下有安卓原生的app,以Bluetooth为例,源码根目录下有Android.mk文件:
packages\apps\Bluetooth
- LOCAL_PATH:= $(call my-dir)
- include $(CLEAR_VARS)
- #负责清理除LOCAL_PATH外的其他LOCAL_XXX,这个清理动作是必须的,因为所有的编译控制文件由同一个GNU Make解析和执行,
- #其变量是全局的。所以清理后才能避免相互影响。
- LOCAL_MODULE_TAGS := optional
- LOCAL_SRC_FILES := \
- $(call all-java-files-under, src)
- LOCAL_PACKAGE_NAME := Bluetooth
- LOCAL_CERTIFICATE := platform
- #使用系统签名
- LOCAL_JNI_SHARED_LIBRARIES := libbluetooth_jni
- LOCAL_JAVA_LIBRARIES := javax.obex telephony-common mms-common
- LOCAL_STATIC_JAVA_LIBRARIES := com.android.vcard
- LOCAL_JAVA_LIBRARIES += com.broadcom.bt
- LOCAL_REQUIRED_MODULES := libbluetooth_jni bluetooth.default
- LOCAL_PROGUARD_ENABLED := disabled
- #不使用代码混淆的工具进行代码混淆,不设置则默认值为full,即将该工程代码全部混淆
- include $(BUILD_PACKAGE)
- include $(call all-makefiles-under,$(LOCAL_PATH))
在packages\apps\Bluetooth下mm,可单独编译,在\out\target\product\xxx\system\app下会生成Bluetooth.apk。
然后修改build下的mk文件,增加蓝牙模块,这样在源码根目录下执行make就会编译到Bluetooth模块
\build\target\product\generic_no_telephony.mk
- PRODUCT_PACKAGES := \
- DeskClock \
- Bluetooth \ #增加蓝牙模块
- Calculator \
b.apk编译,针对没有源码的第三方apk,修改Android.mk:
- LOCAL_PATH := $(call my-dir)
- include $(CLEAR_VARS)
- # Module name should match apk name to be installed
- LOCAL_MODULE := Animation
- LOCAL_MODULE_TAGS := optional
- LOCAL_SRC_FILES := Animation.apk
- LOCAL_MODULE_CLASS := APPS
- LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
- LOCAL_CERTIFICATE := PRESIGNED
- include $(BUILD_PREBUILT)
还需要修改device.mk:
- PRODUCT_PACKAGES +=\
- PackageInstallerRenew\
- Video\
- TlrService\
- Animation\ #添加Animation模块
二,如何删除app,使当前app不会编进系统
在packages/apps目录下有安卓原生的app,有一些app是不需要的。
LOCAL_PACKAGE_NAME packages\apps\Bluetooth\Android.mk
- LOCAL_SRC_FILES := \
- $(call all-java-files-under, src)
- LOCAL_PACKAGE_NAME := Bluetooth5 #将Bluetooth重命名为Bluetooth5。也可更改generic_no_telephony.mk
- #保证和generic_no_telephony.mk增加的模块名字不一致即可
- LOCAL_CERTIFICATE := platform
特别注意,有的模块不一定在generic_no_telephony.mk中增加,可通过find . -name "*.mk" | xargs grep "Bluetooth"来查看在哪个mk里面声明了。由于大部分企业都没有统一的管理规范,一个模块有时候会在多个mk中增加,所以最快的方式就是更改packages\apps\Bluetooth\Android.mk的LOCAL_PACKAGE_NAME ,或者置空。
Android之APP模块编译的更多相关文章
- Android 引入外部模块编译选择
/********************************************************************************* * Android 引入外部模块编 ...
- Android之源码之模块编译和调试
Android之源码之模块编译调试 (一) 进行源码模块修改进行编译的调试 1.首先是从git或者svn上拉一套完整的工程下来,然后全编一下,一般这个时间比较长,大概会得2,3个小时左右, 2,编译成 ...
- 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...
- [Android Pro] 自己动手编译Android源码(超详细)
cp from : https://www.jianshu.com/p/367f0886e62b 在Android Studio代码调试一文中,简单的介绍了代码调试的一些技巧.现在我们来谈谈andro ...
- 【Android】1.0 第1章 C#之Android手机App开发
分类:C#.Android.VS2015:创建日期:2016-01-20 目前Android在全世界市场上大约有75%的占有率,国人Android手机的持有比例更甚,甚至达到90%以上.因此搞计算机的 ...
- 爱了,字节跳动大神最佳整理:582页Android NDK七大模块学习宝典,理论与实践
前言 时至今日,短视频App可谓是如日中天,一片兴兴向荣.随着短视频的兴起,音视频开发也越来越受到重视,而且薪资水涨船高,以一线城市为例,音视频工程开发的薪资比Android应用层开发高出40%. 但 ...
- android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测
目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. (原创:转载声明出处:http://www.cnblogs.com/lin ...
- android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!
目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. ------------------------------------- ...
- Android移动APP开发笔记——最新版Cordova 5.3.1(PhoneGap)搭建开发环境
引言 简单介绍一下Cordova的来历,Cordova的前身叫PhoneGap,自被Adobe收购后交由Apache管理,并将其核心功能开源改名为Cordova.它能让你使用HTML5轻松调用本地AP ...
随机推荐
- Codeforces Gym 100286J Javanese Cryptoanalysis 傻逼暴力
原题地址:http://codeforces.com/gym/100286/attachments/download/2013/20082009-acmicpc-northeastern-europe ...
- 计算机视觉人脸相关开源项目总结:face_recognition
计算机视觉人脸相关开源项目总结 https://github.com/ageitgey/face_recognition 深度学习人脸关键点检测方法----综述
- NGUI UIScrollView - 大量item子项的性能优化
一.当UIScrollView的以下的包括的子项太多(二三十个之上)时.它的滚动就会变的有些卡不流畅,尤其是在手机上. 对些网上也有非常多的优化它的相关,以下是我的一个优化: 1.将在超出裁剪框的一个 ...
- HDU 2825 Wireless Password (AC自己主动机,DP)
pid=2825">http://acm.hdu.edu.cn/showproblem.php? pid=2825 Wireless Password Time Limit: 2000 ...
- hdu 1710 Binary Tree Traversals 前序遍历和中序推后序
题链;http://acm.hdu.edu.cn/showproblem.php?pid=1710 Binary Tree Traversals Time Limit: 1000/1000 MS (J ...
- 简洁的ios小界面
下午写写了个小东西小界面 有须要的能够直接拿过来用 ,简洁,挺好看,自我感觉: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDEyMzIwOA= ...
- 使用JXL对EXCLE的导入导出
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Da ...
- 下载Google官方/CM Android源码自己主动又一次開始的Shell脚本
国内因为某种原因,下载CM或Google官方的Android源码总easy中断.总看着机器.一中断就又一次运行repo sync还太麻烦,所以我特意编写了一段shell脚本(download.sh). ...
- top load average
负载均值 等待运行的进程数
- Java对对象的引用 不是 引用调用 而是按值引用 Java不存在引用调用
call by reference Java call by value