Android开发主流工具已变成AndroidStudio,新版AS已经支持CMake编译工具,可以用于编译C/C++文件,增强了Android调用jni代码的便捷性。相比于之前繁杂的ndk配置方式,cmake较为简单方便。
##1、添加CMake支持
首先使用的AndroidStudio必须是2.2以上版本,在settings–Appearance&Behavior–System Settings–AndroidSDK中,确保下载安装了CMake、LLDB、NDK等必要组件。
使用CMake编译C/C++文件,有两种添加模式:
- 新建项目,在创建项目名称,配置包名时,勾选包含C/C++代码,如图.
- 在已有的项目中添加C/C++代码文件,只需要在app.gradle文件中配置如下代码1234567891011121314defaultConfig{//配置Cmake运行参数,在defaultconfig节点下配置externalNativeBuild {cmake {cppFlags "-frtti -fexceptions"}}}//关联CMake的程序清单文件,path 指向cmake文件路径,此处为项目工程根目录下。externalNativeBuild {cmake {path "CMakeLists.txt"}}
CMakeLists.txt文件如下
如上文件中,主要注意add_library中配置你要生成so文件的名称,以及C/C++文件的路径;而target_link_libraries中指定依赖库的文件名。
如此clean project 然后make,就可以生成so文件,被Android上层java调用。类似如下:
##2、最近项目一点零碎知识点
多屏幕适配效果优化
1234567//在AndroidManifest.xml的application节点下,配置<supports-screensandroid:anyDensity="true"android:largeScreens="true"android:normalScreens="true"android:smallScreens="true"android:xlargeScreens="true" />Activity快速导航返回到主Activity
使用android:parentActivityName
属性123//在activity节点下,配置属性<activity android:parentActivityName=".activity.WelcomeActivity".../>
然后该配置属性的Activity,就可以在back按钮或者其他按钮事件处理中:
EditText不自动获取屏幕焦点
12//在需要屏蔽焦点自动获取的EditText的上一级布局文件中,配置属性android:focusableInTouchMode="true"progress name
属性,在AndroidManifest.xml 中Activitiy或者service的节点属性配置progress name,如果不一致,可能会引起签名打包失败,无法安装apk。
本人技术小白,笔记仅供个人学习记录之中,若能有益于各位网友,也算荣幸。若有问题,肯请指出,莫要责怪。