时不时总会遇到原来c c++ jni代码跳转很欢乐,突然也不知道咋滴了build也能build成功,运行也能正常运行,就是代码不能跳转了,首先来科普下一些背景知识。

如果让代码跳转起来,大概需要做哪些操作呢?

1、编译器的前段让代码生成tag,通过tag它就建立了一一对应或者多多对应的关系。

2、ui工具对这些tag也做了标记,从而让你点击能跳转

这里边大致涉及到了四个模块

1) gralde

gradle是既能干ant用来打包项目的活儿,又能干maven引入第三方库的活儿,用能用groovy写脚本来定制化自己的操作。

在android studio里边用gradle是这样自己的,你只需要在gradle/wrapper/gradle-wrapper.properties里边修改这一行即可。

distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip

2) android studio gradle plugin

google官方基于gradle进行了一些开发,做出了个gradle plugin这个玩意,这个玩意是专用与android studio的,对android工程进行了专门的定制。在as工程的根目录下的build.gradle就能找到它,长这样:

buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:7.0.3" // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

  

3) cmake

cmake就是一编译的脚本语言,相当于ant的xml文件,告诉你怎么把工程的文件link起来,做出个什么东西。

4) ndk(gcc/clang)

ndk包含了gcc或者clang这样的编译器,编译器来生产出源文件的各种符号tag。

了解了生产要素,我们就可以分析问题是啥了。无非三种:

1. cmake和ndk的版本间发生了奇怪的化学反应,导致编译器生不成正常的ctag,后续无法解析。

解决方案:换换两者的版本组合试试,最好都更新到最新的稳定版本。

2. gradle和gradle plugin的版本间或者与android studio本身的版本发生了奇怪的化学反应,cmake和ndk虽然已经把tag对应好了,但后续处理除了问题,导致ui无法跳转

解决方案:对应gradle和gradle plugin 和android studio的版本。可以参考google官方对应关系:https://developer.android.google.cn/studio/releases/gradle-plugin

如果你的as还有buildtoolversion这种字段,说明你的as版本和gradle plugin的版本低得令人发指,速速升级!

3. build系统紊乱

也有可能是你版本改来改去的过程中,build出的中间文件本身错乱了,所以切换版本之后最好点击file->invalide caches/restart 重启as哦

教会你彻底解决android studio c/c++ jni代码无法跳转的更多相关文章

  1. 解决 Android Studio 乱码问题

    http://www.eoeandroid.com/thread-275485-1-1.html 很多同学都安装了Android Studio,但是发现中文是乱码,其实这个很好解决的.在IDE里点击F ...

  2. 解决Android Studio Gradle Build特别慢的问题

    解决Android Studio Gradle Build 特别慢的问题 C:\Users\你的用户名\.gradle目录下新建一个文件名为gradle.properties的文件.内容为:org.g ...

  3. 解决Android Studio 3.0导入module依赖后unable to merge index

    解决Android Studio 3.0导入module依赖后unable to merge index 项目需要使用im, 在项目里导入了腾讯im的几个module依赖, 项目无法编译, 报错una ...

  4. 解决Android Studio Conflict with dependency 'com.android.support:support-annotations'报错

    解决Android Studio Conflict with dependency 'com.android.support:support-annotations'报错 在Android Studi ...

  5. 解决android studio引用远程仓库下载慢(转)

    解决android studio引用远程仓库下载慢(JCenter下载慢) 第一种方法 使用开源中国的maven库 阿里云的(速度飞快):http://maven.aliyun.com/nexus/c ...

  6. 解决Android Studio运行时报Error:java.lang.NullPointerException (no error message)错误

    原文:解决Android Studio运行时报Error:java.lang.NullPointerException (no error message)错误                    ...

  7. 使用Android Studio向GitHub提交代码

    使用Android Studio向GitHub提交代码 在GitHub上创建一个仓库 填写仓库名称.描述.类型(公有.私有)等信息,点击创建 到此,成功创建了我们的仓库,并且初始化创建了README. ...

  8. 关于Android Studio中使用jni进行opencv配置开发环境的要素秘诀

    使用jni进行opencv开发可以快速地将PC端的opencv代码移植到手机上,但是如何在android studio下进行配置,网上几乎找不到教程,大多都是eclipse下使用mk文件的方法,找不到 ...

  9. 解决Android studio导入项目卡死

    在使用Android studio的时候常常遇到这样的问题,从github或是其他地方导入项目,Android studio呈现卡死的现象!当遇到这种情况时,可以看看是下面那种情况,在按照方法来解决! ...

随机推荐

  1. java实现自动化发布平台核心代码

    1.搭建jenkins环境 (1)jenkins官网下载jenkins.war包 (2)将该war包放入到tomcat的webapp的目录下(前提条件需要配置tomcat的环境,详情请自行百度) (3 ...

  2. idea文件多行显示

    将红色部分取消勾选

  3. 基于nexus私服配置项目pom.xml和maven settings.xml文件

    备注:搭建nexus私服请参考上一篇文章基于Docker搭建Maven私服Nexus,Nexus详解 一:将jar发送到nexus私服务器 1.pom.xml文件添加配置 pom.xml文件中的这个版 ...

  4. Mac Maven 安装及配置

    一.下载 打开 Maven 官方下载页面:https://maven.apache.org/download.cgi#,点击下载链接即可开始下载:     以 Maven 3.8.4 为例,解压后可以 ...

  5. 如何理解Casbin的权限控制

    概念: Casbin是什么? Casbin是一个访问控制框架,可以支持多种访问控制模型(如ACL.RBAC.ABAC等) 目的: 我们最终想要实现的效果: 可以控制某一个人/角色(sub)能否对某个资 ...

  6. 学会这几步,简单集成视频编辑原子能力SDK

    华为视频编辑服务6.2.0版本上线后,我们为大家带来了两大变化:分别是丰富多样的AI能力和灵活选择的集成方式.为让开发者更快上手使用,今天小编带来了视频编辑原子能力SDK的具体集成方法.快来试试吧! ...

  7. Vue相关,vue父子组件生命周期执行顺序。

    一.实例代码 父组件: <template> <div id="parent"> <child></child> </div& ...

  8. 调试器gdb

    1.启动和退出gdb gdb调试的对象是可执行文件,而不是程序源代码.如果要使一个可执行文件可以被gdb调试,那么在使用编译器gcc编译程序时加入-g选项.-g选项告诉gcc在编译程序时加入调试信息, ...

  9. 100个Shell脚本——【脚本9】统计ip

    [脚本9]统计ip 有一个日志文件,日志片段:如下: 112.111.12.248 – [25/Sep/2013:16:08:31 +0800]formula-x.haotui.com "/ ...

  10. c学习 - 第五章:选择结构程序设计

    5.2 关系运算符与逻辑运算符 !(非) ^ 高 算术运算符 | 关系运算符 | &&和 || | 赋值运算符 | 低