android.mk是在啥情况下生成的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android.mk是在啥情况下生成的相关的知识,希望对你有一定的参考价值。
当你需要使用JNI的时候,你需要创建一个native工程。android.mk就是一个makefile配置文件,帮你把C/C++的代码编译成动态库so的。
创建的方式有两种:
在工程根目录里手动创建一个目录叫jni,在里面新建一个Android.mk,然后创建c,cpp文件,把他们配置到Android.mk里。
右键工程,选择Android Tools->Add Native Support自动生成。
扩展资料:
创建Android库
Android 库在结构上与 Android 应用模块相同。可以提供构建应用所需的一切内容,包括源代码、资源文件和 Android 清单。
不过,Android 库将编译到可以用作 Android 应用模块依赖项的 Android 归档 (AAR:Android Archive Resource) 文件,而不是在设备上运行的 APK。
与 JAR 文件不同,AAR 文件可以包含 Android 资源和一个清单文件,这样,除了 Java 类与方法外,还可以捆绑布局和可绘制对象等共享资源。
库模块在以下情况下非常有用:
构建使用某些相同组件(例如 Activity、服务或 UI 布局)的多个应用。
构建存在多个 APK 变体(例如免费版本和付费版本)的应用并且需要在两种版本中使用相同的核心组件。
参考资料来源:百度百科-Android
当你需要使用JNI的时候,你需要创建一个native工程。Android.mk就是一个makefile配置文件,帮你把C/C++的代码编译成动态库so的。创建的方式有两种:
在工程根目录里手动创建一个目录叫jni,在里面新建一个Android.mk,然后创建c,cpp文件,把他们配置到Android.mk里
右键工程,选择Android Tools->Add Native Support自动生成:
Android.mk转Android.bp
参考技术A 背景:不少APP在P上是Android.mk,在10上变成Android.bp,我们在MK的时候需要对其进行转换。
转换方法:
利用Android自带的工具进行转换
使用自带工具前提:
1.Source full build 过(最好)
2.在out/soong/host/linux-x86/bin/目录下存在androidmk文件。
如果不存在androidmk文件,使用m -j blueprint_tools命令生成
具体转换方法:
1.cd out/soong/host/linux-x86/bin/
2.执行命令:androidmk <android.mk文件> > <android.bp文件>
例子:
1.cd out/soong/host/linux-x86/bin/
2.androidmk ./mk2bp/Android.mk > ./mk2bp/Android.bp
例子中step2说明:
由于out/soong/host/linux-x86/bin/路径下文件太多,不好识别转换后的文件,所以自己建了个mk2bp文件夹,放要转换的Android.mk。方便查看而已
至于放Android.mk放哪,随便。
如果遇到内容复杂一点的Android.mk,可能工具转换会出错。待进一步研究。
以上是关于android.mk是在啥情况下生成的的主要内容,如果未能解决你的问题,请参考以下文章