天问

  • Blog
  • 热修复与动态加载
  • python爬虫
  • 专栏
    • 热修复与动态加载
    • NDK开发
    • 设计模式与架构
    • React Native
  • 好文转载
    • 计算机技术
    • 投资理财
    • 摄影与拍照技巧
  • 投稿
  • 关于本站及隐私政策
  • Github
ndk
NDK

【NDK开发之】使用cmake编译管理cpp文件

在安卓NDK开发之java JNI技术中已经提到过对于安卓的NDK开发而言,本质上是2大知识体系组成,一部分是java的JNI技术。另一部分就是对c/c++源文件的编译和管理。比如使用ndk-build模式对mk文件进行编译或cmake模式对CMakeList文件进行编译。新版本的Android Studio默认使用cmake对JNI代码进行管理和编译。而不在推荐使用Android.mk和Application.mk进行编译选项配置。 先来看下AS向导创建一个NDK工程之后为我们自动生成的CMakeList文件的内…

2018年10月28日 0条评论 2494点热度 5人点赞 天问 阅读全文
安卓开发

【NDK开发之】SDK体积优化最佳实践

先交代下背景,我们的SDK是一个包含so的aar,主要包括java代码以及so 2大部分,基本不含资源文件。为了安全我们将SDK的核心逻辑放到so中用c/c++代码实现。但是由于我们是SDK,在给我们客户接入的过程中发现某些客户会非常在意体积。尽管实际上我们的体积相对竞品而言已经小了约1M了,但是某些客户仍然要求(期望但不强制)接入我们的SDK后体积增加不能超过500kb同时包含5种主流abi。所以为了给客户更好的用户体验,需要考虑优化SDK的体积,经过一番调研和实践之后减小的体积还是比较客观的。 首先需要明确的是…

2018年9月15日 0条评论 1079点热度 1人点赞 天问 阅读全文
安卓开发

安卓ndk开发使用so注意事项集锦

今天在使用so库的时候出现了一个如下错误,简单记录下。 错误详情如图,出现java.lang.UnsatisfiedLinkError错误,这个错误一般是调用本地接口时会出现,在loadLibary时找不到so库而导致findLibrary returned null。这个原因就是so库未被打包到apk中,出现这个错误可以用压缩软件打开apk看下lib目录下是否存在要load的so文件。 出错场景: 自己的项目工程的目录结构如图: 其中的jni目录存放的是C++代码和android.mk/application.m…

2017年8月25日 0条评论 787点热度 3人点赞 天问 阅读全文
NDK

JNI开发注意事项集锦

这个是JNI开发必须得注意的,因为JNI开发不像java开发,在java中我们基本上不用去考虑内存释放的问题,因为java的垃圾回收机制会处理这类问题,虽然说JNI层的Local Reference的生命周期持续到一个Native Method的结束,当Native Method返回时Java Heap中的对象不再被持有,也将会被GC回收,但是在JNI中如果我们使用了过多的局部引用,但是未及时释放这些内存,可能会导致出现局部引用表溢出的错误local reference table overflow (max=51…

2017年8月5日 0条评论 1410点热度 6人点赞 天问 阅读全文
NDK

安卓NDK开发之JNI函数动态注册

在安卓NDK开发之Hello JNI 中相信大家已经注意到,AS向导为我们自动生成的NDK工程的JNI函数中,和其对应的java层函数相比,除了参数会自动增加JNIEnv *和 jobject这2个类型的参数以外,函数的名称也发生了变化,如下所示: //java层代码 public native String getString(); //C/C++层代码 jstring JNICALL Java_com_htq_baidu_ndk_NDKTest_getString (JNIEnv * env, jobject …

2017年6月15日 0条评论 359点热度 4人点赞 天问 阅读全文
NDK

安卓ndk开发之java JNI技术

在前面安卓NDK开发之Hello JNI中,我们讲解了安卓上的ndk开发的一般流程,初步了解了jni技术。那么ndk和jni到底是什么关系呢?事实上jni和ndk没什么关系,但ndk和jni有关系,准确的说是ndk开发需要用到jni技术。就像水和鱼没关系,但是鱼和水有关系,鱼需要在水中生存。 JNI(Java Native Interface)技术是java本身提供的技术,是用来在java层和c/c++层进行通信的接口,和安卓没啥关系。 NDK(Native Development Kit)是谷歌为了更好的支持安卓…

2017年6月14日 0条评论 935点热度 4人点赞 天问 阅读全文

天问

追梦追自由,穷则独善其身,达则兼济天下

最新 热点 随机
最新 热点 随机
【插件化】从插件化看Activity的启动流程 你真的会用View的post方法吗 【设计模式之】适配器模式 【设计模式之】代理模式与动态代理技术(JDK自带与CGLIB)
【设计模式之】OOP六大基本原则与单例模式 【设计模式之】策略模式 安卓ndk开发使用so注意事项集锦 超级易懂爬虫系列之爬虫框架scrapy
小伙伴们(排名不分先后)

尼古拉斯赵四

布兰柯基

 

COPYRIGHT © 2022 天问 ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang