时不时总会遇到原来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. [nowcoder5669A]Ancient Distance

    对于一个$k$,可以二分枚举答案并判断,判断过程可以贪心找最深的点(线段树区间max)+倍增+线段树区间覆盖(清0)来实现,时间复杂度$o(klog_{2}n)$ 考虑反过来,暴力枚举答案$x$并求出 ...

  2. [bzoj1691]挑剔的美食家

    考虑将奶牛和牧草放在一起,根据鲜嫩程度排序,那么显然就可以发现一个贪心策略:每一头奶牛一定选择当前剩余的最便宜且符合条件的牧草,然后用一个set维护价格即可 1 #include<bits/st ...

  3. Java-ASM框架学习-java概念转字节码概念

    前言 当我们操作字节码的时候,都是和字节码的概念打交道,这让我们很困扰,asm也想到了这点,为了方便,它提供了一个可以把java概念转化为字节码概念的类 import org.objectweb.as ...

  4. springboot访问静态资源404

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...

  5. idea给类增加注释

    File-->Settings-->Editor-->File and Code Templates 找到class #if (${PACKAGE_NAME} && ...

  6. 浅谈java中的四个核心概念--思途青岛

    Java已经成为一个庞大而复杂的技术平台,对于开发人员而言,要想更好的掌握Java技术,深入理解底层的技术处理细节必不可少. 现在介绍下java的四个核心概念: 1.Java虚拟机 Java虚拟机的主 ...

  7. [APIO2020]有趣的旅途

    注意到第一个点是可以钦定的. 那么我们考虑在重心的子树里反复横跳. 每次选择不同子树里的深度最大的点. 在同一颗子树里可能会在lca处出现问题. 那么我们选择重心,要考虑到会不会出现一颗子树不够选的操 ...

  8. CF1540B Tree Array

    先写一下自己想到的部分: 考虑枚举一个根. 计算一个点对出现的概率. 对于我这种期望概率基本不会的人,差点就把这题切了. 自己想到的部分都没有假. 问题在于: 如何计算一个点对出现的概率. 考虑和这两 ...

  9. spring-boot spring-MVC自动配置

    Spring MVC auto-configuration Spring Boot 自动配置好了SpringMVC 以下是SpringBoot对SpringMVC的默认配置:==(WebMvcAuto ...

  10. Assertion failure in -[UISectionRowData refreshWithSection:tableView:tableViewRowData:], /Source

    1. *** Assertion failure in -[UISectionRowData refreshWithSection:tableView:tableViewRowData:], /Sou ...