Android -- 源码平台下JAR包的引入与编译
https://blog.csdn.net/csdn_of_coder/article/details/64538227

BUILD_JAVA_LIBRARY 与 BUILD_STATIC_JAVA_LIBRARY

在Android.mk中可通过调用include $(BUILD_JAVA_LIBRARY)和include $(BUILD_STATIC_JAVA_LIBRARY)来分别生成目标设备上的共享JAVA库与静态JAVA库。

二者的区别在于静态JAVA库是由.class文件打包而成JAR包,它在任何一个JAVA虚拟机上都可以运行;而共享JAVA库则是在静态库的基础上进一步打包成的.dex文件,众所周知,dex是在android系统上所使用的文件格式。

由以上结论可做出进一步的推论:即Android.mk中变量LOCAL_JAVA_LIBRARIES所指定的为android系统使用的dex类库;而LOCAL_STATIC_JAVA_LIBRARIES变量所指定的则是.class文件打包而成的JAR文件:即静态JAVA库。

BUILD_STATIC_JAVA_LIBRARY会生成out/target/common/obj/JAVA_LIBRARIES/appsaut_intermediates目录及其下的JAR文件;而BUILD_JAVA_LIBRARY生成此目录的同时会将其中的JAR包复制到out/target/product/<product-name>/system/framework/中;除此之外,还存在BUILD_HOST_JAVA_LIBRARY命令则是在out/host/linux-x86/framework目录下生成相应的JAR包。分别使用此三条命令执行的结果如下所示:注意其中带有红色下划线的LOG信息。


Basic usage:

include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := app_sdk_data.jar \
bsh-core-2.0b4.jar \
jackson-annotations-2.0.2.jar \
jackson-core-2.0.2.jar \
jackson-databind-2.0.2.jar \
kksdk1.3_full_pro.jar

include $(BUILD_MULTI_PREBUILT)

////////////////////////////////////////////////////////////////////////////
LOCAL_STATIC_JAVA_LIBRARIES := appsaut
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := appsaut:libs/appsaut.jar

include $(BUILD_MULTI_PREBUILT)


android 源码中mmm依赖第三方jar包的项目

https://my.oschina.net/blackylin/blog/109527

在项目根目录下的Android.mk中:

1.

LOCAL_STATIC_JAVA_LIBRARIES := libGoogleAnalytics libGoogleAdMobAdsSdk libmobclix

2.

##################################################
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libGoogleAnalytics:libs/libGoogleAnalytics.jar
include $(BUILD_MULTI_PREBUILT) include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libGoogleAdMobAdsSdk:libs/GoogleAdMobAdsSdk-4.1..jar
include $(BUILD_MULTI_PREBUILT) include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libmobclix:libs/mobclix.jar
include $(BUILD_MULTI_PREBUILT)

把依赖的jar包放到libs目录下,先预编译到out/target/product/generic/obj/JAVA_LIBRARIES下,然后本项目就会找到依赖的者jar包了。下面完整Andraoid.mk如下:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional # Only compile source java files in this apk.
LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_PACKAGE_NAME := DependJarTest
LOCAL_CERTIFICATE := platform LOCAL_STATIC_JAVA_LIBRARIES := libGoogleAnalytics libGoogleAdMobAdsSdk libmobclix include $(BUILD_PACKAGE) ##################################################
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libGoogleAnalytics:libs/libGoogleAnalytics.jar
include $(BUILD_MULTI_PREBUILT) include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libGoogleAdMobAdsSdk:libs/GoogleAdMobAdsSdk-4.1..jar
include $(BUILD_MULTI_PREBUILT) include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libmobclix:libs/mobclix.jar
include $(BUILD_MULTI_PREBUILT) # Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))

Android FrameWork集成第三方SDK的jar包和so库

https://blog.csdn.net/szqsdq/article/details/53035460

首先在framework/opt/建立XXSDK的文件夹讲jar包和so库拷贝进去

1:framework/opt/xxsdk/

然后直接看Android.mk就行

# Copyright (C)  The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License. LOCAL_PATH := $(my-dir) include $(CLEAR_VARS) LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := app_sdk_data.jar \
bsh-core-.0b4.jar \
jackson-annotations-2.0..jar \
jackson-core-2.0..jar \
jackson-databind-2.0.
.jar \
kksdk1.3_full_pro.jar
include $(BUILD_MULTI_PREBUILT) ##################################################
include $(CLEAR_VARS)
LOCAL_MODULE := libcode
LOCAL_SRC_FILES := libs/libcode.so
LOCAL_MODULE_SUFFIX :=
.so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES include $(BUILD_PREBUILT) include $(call all-makefiles-under,$(LOCAL_PATH)) ##################################################
include $(CLEAR_VARS)
LOCAL_MODULE := libluajava
LOCAL_SRC_FILES := libs/libluajava.so
LOCAL_MODULE_SUFFIX :=
.so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES include $(BUILD_PREBUILT) include $(call all-makefiles-under,$(LOCAL_PATH)) ##################################################
include $(CLEAR_VARS)
LOCAL_MODULE := libtruss
LOCAL_SRC_FILES := libs/libtruss.so
LOCAL_MODULE_SUFFIX :=
.so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES include $(BUILD_PREBUILT) include $(call all-makefiles-under,$(LOCAL_PATH))

Android OS 源码 引入和编译 jar / so库的更多相关文章

  1. Android之源码之模块编译和调试

    Android之源码之模块编译调试 (一) 进行源码模块修改进行编译的调试 1.首先是从git或者svn上拉一套完整的工程下来,然后全编一下,一般这个时间比较长,大概会得2,3个小时左右, 2,编译成 ...

  2. android内核源码下载和编译

    1.下载编译 新建kernel目录 ~/srcAndroid/src4.4.4_r1/kernel目录下,输入命令: seven@ThinkPad:~/srcAndroid/src4.4.4_r1/k ...

  3. 将android Settings 源码 导入到 eclipse工程

    1.  新建 android 项目 拷贝源码/packages/apps/Settings到你的其它目录. 在eclipse中,新建项目,但是要从exitting source选择: 2. 导入相关的 ...

  4. 在Ubuntu上下载、编译和安装Android最新源码

    看完了前面说的几本书之后,对Linux Kernel和Android有一定的认识了,是不是心里蠢蠢欲动,想小试牛刀自己编译一把Android源码了呢?一直习惯使用Windows系统,而Android源 ...

  5. 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)

    作者 : 韩曙亮  博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...

  6. Android源码、内核编译

    Android源码和内核的编译就是一场马拉松,每一个节点都耗时漫长,下载源码.编译源码.下载内核.编译内核,下载中途会断掉,编译中间会失败,求解再重来,又是一轮马拉松,于是每一步都要做好备份和记录,可 ...

  7. 【转】编译Android系统源码和内核源码

    原文网址:http://blog.csdn.net/jiangwei0910410003/article/details/37988637 好长时间没有写blog了,之所以没有写,主要还是工作上的事, ...

  8. 【转】Android 4.4源码下载与编译

    原文网址:http://www.cnblogs.com/zhx831/p/3550830.html 这篇文章记录了我下载源码和编译的全过程, 全过程参考Android官方文档 1. 下载Android ...

  9. FW 编译Android系统源码和内核源码

    编译Android系统源码和内核源码 分类: Android2014-07-21 20:58 7287人阅读 评论(28) 收藏 举报 好长时间没有写blog了,之所以没有写,主要还是工作上的事,发现 ...

随机推荐

  1. 小计:Shopee批量删除修复~附脚本

    需求 昨天浪的时候,无意之间看到文职人员在一个个删除违禁商品,大概23个店铺,每个店铺500多个商品,页面是用Ajax异步加载的,每删一个就需要等几秒,粗略估计一下用时:9h左右 然后了解了下是什么情 ...

  2. css进度条

    1.环形进度条 源码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...

  3. linux网络性能测试工具ipref安装与使用

    一.iperf工具安装 源码包下载地址:https://iperf.fr/iperf-download.php#archlinux 选择对应系统的版本就是解压安装了 完成 测试发现有问题 问题原因:L ...

  4. 常用API接口签名验证参考

    项目中常用的API接口签名验证方法: 1. 给app分配对应的key.secret2. Sign签名,调用API 时需要对请求参数进行签名验证,签名方式如下: a. 按照请求参数名称将所有请求参数按照 ...

  5. hdu 4542 "小明系列故事——未知剩余系" (反素数+DFS剪枝)

    传送门 参考资料: [1]:https://blog.csdn.net/acdreamers/article/details/25049767 题意: 输入两个数 type , k: ①type = ...

  6. CMake快速入门

    参考: https://www.hahack.com/codes/cmake/ 1. 单目标文件 main.c #include <stdio.h> #include <stdlib ...

  7. XGBboost 特征评分的计算原理

    xgboost是基于GBDT原理进行改进的算法,效率高,并且可以进行并行化运算,而且可以在训练的过程中给出各个特征的评分,从而表明每个特征对模型训练的重要性, 调用的源码就不准备详述,本文主要侧重的是 ...

  8. ThinkPHP—URL的访问以及各种方法的操作

    1.URL访问 ThinkPHP采用单一入口模式访问应用,对应用的所有请求都定向到应用的入口文件,系统会从URL参数中解析当前请求的模块.控制器和操作,下面是一个标准的URL访问格式: 第一种访问方式 ...

  9. Python django解决跨域请求的问题

    解决方案 1.安装django-cors-headers pip3 install django-cors-headers 2.配置settings.py文件 INSTALLED_APPS = [ . ...

  10. win10只有edge浏览器能上网的解决方法

    问题描述:电脑就只有edge浏览器和自带的邮件可以上网,但是QQ Chrome,360浏览器都无法上网: 解决方法:打开命令提示符(管理员),执行netsh winsock reset,重启系统就好了 ...