作者:燕歆波

导读:android如何检测应用本身被卸载了,统计卸载量!

1.首先检查自己的Android studio上有没有装ndk,右击项目根目录–>open module setting,查看Android NDK location,如果安装了,则会显示路径,没有安装就点击安装,安装后在local.properties文件中会出现ndk路径

2.新建一个类,编写本地提供的对外的native入口
···

public class LoadJni {

static {    System.loadLibrary("uninstall");}public static native String listenUnInstall();

}

···
3.在gradle.properties中配置可以使用ndk:

   android.useDeprecatedNdk=true

4.编译项目: Build–>Make Project 会在app->build–>classes->debug下面生成class文件

5.生成.h文件 打开Terminal窗口,在命令行中先进入到工程的 main 目录下 (cd app\src\main),默认在项目根目录下:
然后输入命令:javah -d jni -classpath 自己编译后的 class 文件的绝对路径例如:
“`
javah -d jni -classpath C:\fanhua-project-android\JniTest\app\build\intermediates\classes\debug com.baitu.jnitest.UnInstallListen

运行成功后,会在main目录下生成jni文件夹,jni文件夹下有我们生成的.h文件6.编写.c实现类,这个类就是我们真正实现功能的类,由c编写,请注意.c文件中的名称和你生成的.h的名称相同:![这里写图片描述](https://img-blog.csdn.net/20180914162836832?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbnhpYW9zYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)7.gradle中配置so库生成信息:在android-defaultConfigure下配置:     ndk{         moduleName "uninstall" //生成so的名称         abiFilters "arm64-v8a", "armeabi-v7a", "x86","x86_64"   //输出制定三种abi体系结构下的so库     }8.再次编译,如果提示Android.mk的问题,请在app-build-intermediates-ndk-debug找到Android.mk文件,并将文件复制到jni目录下,然后        在build.gradle的android节点下配置         externalNativeBuild{             ndkBuild{                path "src/main/jni/Android.mk"             }         }9.android.useDeprecatedNdk=true,如果提示错误请根据提示:android.deprecatedNdkCompileLease=1536904725842,后面的数字是时间10。重新编译,会在app-build-intermediates-ndkbuild目录下产出so文件,这样,我们就得到了.so文件,11.为了测试,我们新建一个项目,新建jniLibs文件夹,将so文件放到里面,然后参考第二步:将对外提供的native接口类也复制到新建的项目下,需要注意,native接口类所在的目录路径和当前路径要相同,然后我们直接在新建项目的MainActivity中调用:

((TextView) findViewById(R.id.tv_channel)).setText(LoadJni.listenUnInstall());//LoadJni就是对外提供接口的类

注:

使用时步骤:将so库复制到项目的jniLibs目录下,需要注意的是要将提供的native接口所在的类也要复制到相同的目录下(这里是fanhua.com.umengstastics.LoadJni),复制以后,LoadJni的路径要保持不变

最后总结流程:

1.编写native方法(java声明)
2.编译生成class文件
3.编译生成h文件
4.编写C文件
5.配置NDK
6.配置so库
7.在Activity调用
“`

参考文章:

  1. Android Studio NDK 开发与调试(生成 .so 文件)
  2. Android NDK开发(八)——应用监听自身卸载,弹出用户反馈调查
  3. 这里写链接内容
  4. Android studio简单使用JNI实例
  5. 在Android Studio中使用ndk-build
  6. Android源码分析实战之JNI so库加载System.loadLibrary流程分析

    感谢这些作者!虽然最终没有实现检测卸载,但是了解了不少东西!

更多相关文章

  1. Service与Android系统设计(2)
  2. ORB_SLAM2在android studio上用cmake编译
  3. ZXing android 源码简化
  4. 带你一步一步手动实现Android热更新
  5. Android(安卓)Studio的NDK的两种编译方式ndk-build和CMake
  6. Android(安卓)Studio环境变量的配置
  7. Android从0到完整项目(1)使用Android(安卓)studio 创建项目
  8. Eclipse下载Github用Android(安卓)Studio编辑的Android源码
  9. android创建sqlite数据库及在SD卡上创建数据库(二)

随机推荐

  1. Android中如何使用 address2line
  2. android 系统自带主题样式及自定义主题样
  3. Android对应版本号
  4. 权重
  5. 有关XML的点击状态背景图的设置
  6. android 的中文意思
  7. Android 仿QQ多级列表框实现
  8. 针对Android 平板的海豚浏览器正式版推出
  9. Android Wear Preview - 设计规范(Design
  10. android root后数据安全