当前位置: 首页 > news >正文

android studio调试c/c++代码

android studio调试c/c++代码 - 简书 (jianshu.com)

一、Debug调试效果

DEBUG.png


二、配置JNI调试环境

2.1 配置build.gradle

build.png

只需配置android标签节点下的buildTypes
buildTypes{    
   debug{
        jniDebuggable true
        jniDebuggable = true
    }
}

2.2 配置AndroidManifest属性

android:debuggable="true"

<application android:label="@string/app_name"             
android:debuggable="true">
<activity android:name=".HelloJni"              
android:label="@string/app_name">
        
<intent-filter>
<action android:name="android.intent.action.MAIN" />            
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
    </activity>
</application>

2.3 配置Run/Debug configurations

config.png

  • 选择run下拉item,选Edit Configurations,弹出配置窗体
  • 点击➕新建 configuraionts,选android native条目
  • 配置下native执行的名称如:hellojniNative.
  • 选择真机或模拟器调试.

三、code

源码取的是ndk目录下hellojni demo,可以自行去获取

3.1 java code

public native String  stringFromJNI();
    /** Called when the activity is first created. */    
@Override
    public void onCreate(Bundle savedInstanceState)    {
        super.onCreate(savedInstanceState);        
        /* Create a TextView and set its content. 
        * the text is retrieved by calling a native
         * function. 
        */
        final TextView  tv = new TextView(this);
        tv.setText("点击调用方法");
        tv.setTextSize(100);
        tv.setClickable(true);
        tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//              start(tv);
                tv.setText(stringFromJNI());
            }
        }); 
       setContentView(tv);
    }

3.2 natvie code

jstringJava_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
                                                  jobject this )
{
#if defined(__arm__)
  #if defined(__ARM_ARCH_7A__)
    #if defined(__ARM_NEON__)
      #if defined(__ARM_PCS_VFP)
        #define ABI "armeabi-v7a/NEON (hard-float)" 
     #else
        #define ABI "armeabi-v7a/NEON"
      #endif
    #else
      #if defined(__ARM_PCS_VFP)
        #define ABI "armeabi-v7a (hard-float)"
      #else
        #define ABI "armeabi-v7a"
      #endif
    #endif 
 #else
   #define ABI "armeabi"
  #endif#elif defined(__i386__)
   #define ABI "x86"#elif defined(__x86_64__)
   #define ABI "x86_64"#elif defined(__mips64)
  /* mips64el-* toolchain defines __mips__ too */
   #define ABI "mips64"#elif defined(__mips__)
   #define ABI "mips"#elif defined(__aarch64__)
   #define ABI "arm64-v8a"#else
   #define ABI "unknown"#endif
    return (*env)->NewStringUTF(env, "Hello from JNI !  Compiled with ABI " ABI ".");
}

5人点赞

Android技能



作者:e0uoq
链接:https://www.jianshu.com/p/45d5ff676db8
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章:

  • 在开发过程中使用 git rebase 还是 git merge,优缺点分别是什么?
  • Visual Studio 2019 远程调试工具(Remote Debugger)使用方法
  • Windbg使用说明书
  • 使用Windbg查看CrashDump
  • 【无标题】windbg 分析dump文件
  • Dump文件有三种:完整内存转储,内核内存转储,小内存转储。System Properties中的高级选项中可以看到这些设置。
  • Analysing crash dump in windbg
  • 【无标题】使用VS调试DUMP文件
  • 使用VS调试Dump文件
  • 【无标题】dump解析入门-用VS解析dump文件进行排障
  • Crash Dump调试:Symbol Server/Source Server、PDB原理分析
  • [笔记]Ray Tracing with Cones
  • bundletool 工具使用
  • 123456789
  • Visual Studio调试器指南---自动启动调试器
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • JavaWeb(学习笔记二)
  • java多线程
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • node-glob通配符
  • PHP CLI应用的调试原理
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • Vue.js-Day01
  • 简单实现一个textarea自适应高度
  • 精彩代码 vue.js
  • 坑!为什么View.startAnimation不起作用?
  • 理清楚Vue的结构
  • 两列自适应布局方案整理
  • 配置 PM2 实现代码自动发布
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • Linux权限管理(week1_day5)--技术流ken
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ###C语言程序设计-----C语言学习(6)#
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #NOIP 2014#Day.2 T3 解方程
  • #Spring-boot高级
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $.ajax中的eval及dataType
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (52)只出现一次的数字III
  • (C#)获取字符编码的类
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .NET Project Open Day(2011.11.13)
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)