android mk学习-添加lib包
16lz
2021-01-25
做系统开发,某些系统应用会引用第三方 jar 包,本文演示如何在 makefile 中导入第三方 jar 包。
原应用的 mk 如下
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)# 应用名称LOCAL_PACKAGE_NAME := TestAppLOCAL_MODULE_TAGS := optional# 打系统签名LOCAL_CERTIFICATE := platform# 指定混淆文件LOCAL_PROGUARD_FLAG_FILES := proguard.cfg# 指定 src 目录LOCAL_SRC_FILES := \ $(call all-java-files-under, src)# rom 厂商的包,与本例关联不大LOCAL_JAVA_LIBRARIES := \ com.xxx.androidLOCAL_PROPRIETARY_MODULE := trueinclude $(BUILD_PACKAGE)
jar 包放到 libs/ 目录下,修改如下
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_PACKAGE_NAME := TestAppLOCAL_MODULE_TAGS := optionalLOCAL_CERTIFICATE := platformLOCAL_PROGUARD_FLAG_FILES := proguard.cfgLOCAL_SRC_FILES := \ $(call all-java-files-under, src)# 指定每个 jar 包对应的名称,可以和 jar 包实际名称不同LOCAL_STATIC_JAVA_LIBRARIES := \mysdk \glide_3.7.0 \LOCAL_JAVA_LIBRARIES := \ com.mstar.androidLOCAL_PROPRIETARY_MODULE := trueinclude $(BUILD_PACKAGE)include $(CLEAR_VARS)#指定 jar 包路径LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += \mysdk:libs/opensdk.jar \glide_3.7.0:libs/glide-3.7.0.jar \# 编译多个 jarinclude $(BUILD_MULTI_PREBUILT)include $(call all-makefiles-under,$(LOCAL_PATH))
如果要引用系统源码的包,可参考如下添加:
LOCAL_STATIC_JAVA_LIBRARIES := \ android-support-v7-appcompat \ android-support-design \ android-support-v13 \ android-support-v4 \ android-support-v7-recyclerview \android-support-v7-recyclerview-res \
编译烧录,测试OK。如果碰到 crash ,可能是混淆导致的,可参照 jar 包提供商添加对应的混淆规则,修改指定的混淆文件 LOCAL_PROGUARD_FLAG_FILES := proguard.cfg
-keep public class * extends android.app.Activity-keep public class * extends android.app.Application-keep public class * extends android.app.Service-keep public class * extends android.content.BroadcastReceiver-keep public class * extends android.content.ContentProvider-keep public class * extends android.app.backup.BackupAgentHelper-keep public class * extends android.preference.Preference-keep public class * extends android.os.Binder# 不混淆 aidl 相关类-keep class * implements android.os.IInterface-keep class * implements android.os.Parcelable {public static final android.os.Parcelable$Creator *;}# 不混淆 SDK 相关类-keep class com.xxxxxx.yyyy.open.** { *;}-keep public class * extends android.app.Service
更多相关文章
- 一款常用的 Squid 日志分析工具
- GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
- RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
- Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
- Android更新出这个错,解决
- android 如何使用jar替换java代码编译
- Android下AlarmManager完整调用流程
- Android中不用Service跨Avtivity仍然可以播放音乐的一个简单方法