android相关概念
一、android mk工程:
当你需要使用JNI的时候,你需要创建一个native工程。Android.mk就是一个makefile配置文件,帮你把C/C++的代码编译成动态库so的。创建的方式有两种:
1.在工程根目录里手动创建一个目录叫jni,在里面新建一个Android.mk,然后创建c,cpp文件,把他们配置到Android.mk里
2.右键工程,选择Android Tools->Add Native Support自动生成:
二、Android的.so文件
https://www.jianshu.com/p/b8d25a2d9671
so文件是unix(一个系统的名字)的动态连接库,是二进制文件,作用相当于windows下的.dll文件。
补充:
在Android中调用动态库文件(*.so)都是通过jni的方式。
Android中加载so文件的提供的API:
void System.load(String pathName);
说明:pathName:文件名+文件路径;
也就是说Java层的代码太容易被逆向或者破解了,由于一些底层的算法,
比如说账号登陆的算法,不想被外界看到就需要这种底层的SO文件,在SO层内部对密码进行加密,
然后对内外都留有接口,方便SO层跟Java层之间互相通信,或者是互相调用。
关于.so文件你需要知道的
https://www.jianshu.com/p/cb05698a1968
三、JNI
JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植。 [1] 从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他编程语言,只要调用约定受支持就可以了。使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的。例如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。JNI标准至少要保证本地代码能工作在任何Java 虚拟机环境。
四、Makefile
https://blog.csdn.net/weixin_38391755/article/details/80380786makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
五、Gradle
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。
面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言。
六、Manifest
AndroidManifest官方解释是应用清单(manifest意思是货单),每个应用的根目录中都必须包含一个,并且文件名必须一模一样。这个文件中包含了APP的配置信息,系统需要根据里面的内容运行APP的代码,显示界面。
manifest是整个项目的配置文件,也可以用来设置权限。
本文地址:https://blog.csdn.net/fuckingone/article/details/107376038