时不时总会遇到原来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. GoF23种(部分)软件设计模式【核心理解】

    设计模式复习 1. 面向对象设计原则 1.1 可维护性较低的软件设计 过于僵硬 过于脆弱 复用率低 黏度过高 1.2 一个好的系统设计 可扩展性 灵活性 可插入性 复用:一个软件的组成部分可以在同一个 ...

  2. 在Winform框架的多文档界面中实现双击子窗口单独弹出或拖出及拽回的处理

    在基于DevExpress的多文档窗口界面中,我们一般使用XtraTabbedMdiManager来管理多文档窗口的一些特性,如顶部菜单,页面的关闭按钮处理,以及一些特殊的设置,本篇随笔介绍这些特点, ...

  3. 【POJ1845】Sumdiv【算数基本定理 + 逆元】

    描述 Consider two natural numbers A and B. Let S be the sum of all natural divisors of A^B. Determine ...

  4. 洛谷 P7451 - [THUSCH2017] 杜老师(线性基+根分+结论题)

    题面传送门 看到乘积为平方数我们可以很自然地想到这道题,具体来说,我们对 \(1\sim 10^7\) 中所有质因子标号 \(1,2,\cdots,\pi(10^7)\),对于 \(x\in[l,r] ...

  5. mingling

    mysql> USE mon Reading table information for completion of table and column names You can turn of ...

  6. 【3】蛋白鉴定软件之Mascot

    目录 1.简介 2.配置 2.1在线版本 2.2 服务器版本 3.运行 3.1 在线版本 3.2 服务器版本 4.结果 1.简介 Mascot是非常经典的蛋白鉴定软件,被Frost & Sul ...

  7. 深入理解动态规划DP

    通过最近对于一些算法题的思考,越来越发现动态规划方法的在时间上高效性,往往该问题可以轻松的找到暴力破解的方法,其时间复杂度却不尽人意.下面来看看几个常见的动态规划思路的经典问题 例一.有一段楼梯有10 ...

  8. 字符串String的trim()方法

    用来删除字符串两端的空白字符并返回,trim方法并不影响原来的字符串本身,它返回的是一个新的字符串 String a = "  Hello World  "; String b = ...

  9. 同一局域网,远程连接别人的Mysql数据库

    数据库:MySQL 工具: Navicat, 电脑A连接电脑B的数据库, 确保两部电脑都是在同一个局域网,都是连着同一个路由器,或者连接同一个WiFi, 如果不确定是否为同一个局域网,可以打开cmd, ...

  10. 移动开发之h5学习大纲

    移动开发学习形式:授课.自学 1.html5 css3 htm5shiv.js response.js 2.流式布局 自适应布局 盒模型 弹性盒模型 响应式布局3.iscroll swiper boo ...