教会你彻底解决android studio c/c++ jni代码无法跳转
时不时总会遇到原来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代码无法跳转的更多相关文章
- 解决 Android Studio 乱码问题
http://www.eoeandroid.com/thread-275485-1-1.html 很多同学都安装了Android Studio,但是发现中文是乱码,其实这个很好解决的.在IDE里点击F ...
- 解决Android Studio Gradle Build特别慢的问题
解决Android Studio Gradle Build 特别慢的问题 C:\Users\你的用户名\.gradle目录下新建一个文件名为gradle.properties的文件.内容为:org.g ...
- 解决Android Studio 3.0导入module依赖后unable to merge index
解决Android Studio 3.0导入module依赖后unable to merge index 项目需要使用im, 在项目里导入了腾讯im的几个module依赖, 项目无法编译, 报错una ...
- 解决Android Studio Conflict with dependency 'com.android.support:support-annotations'报错
解决Android Studio Conflict with dependency 'com.android.support:support-annotations'报错 在Android Studi ...
- 解决android studio引用远程仓库下载慢(转)
解决android studio引用远程仓库下载慢(JCenter下载慢) 第一种方法 使用开源中国的maven库 阿里云的(速度飞快):http://maven.aliyun.com/nexus/c ...
- 解决Android Studio运行时报Error:java.lang.NullPointerException (no error message)错误
原文:解决Android Studio运行时报Error:java.lang.NullPointerException (no error message)错误 ...
- 使用Android Studio向GitHub提交代码
使用Android Studio向GitHub提交代码 在GitHub上创建一个仓库 填写仓库名称.描述.类型(公有.私有)等信息,点击创建 到此,成功创建了我们的仓库,并且初始化创建了README. ...
- 关于Android Studio中使用jni进行opencv配置开发环境的要素秘诀
使用jni进行opencv开发可以快速地将PC端的opencv代码移植到手机上,但是如何在android studio下进行配置,网上几乎找不到教程,大多都是eclipse下使用mk文件的方法,找不到 ...
- 解决Android studio导入项目卡死
在使用Android studio的时候常常遇到这样的问题,从github或是其他地方导入项目,Android studio呈现卡死的现象!当遇到这种情况时,可以看看是下面那种情况,在按照方法来解决! ...
随机推荐
- 你真的知道Spring注解驱动的前世今生吗?这篇文章让你豁然开朗!
本篇文章,从Spring1.x到Spring 5.x的迭代中,站在现在的角度去思考Spring注解驱动的发展过程,这将有助于我们更好的理解Spring中的注解设计. Spring Framework ...
- Promise(resolve,reject)的基本使用
什么是Promise? Promise是一个构造函数,其原型上有 then.catch方法,还有reslove,reject等静态方法.通过创建Promise实例,可以调用Promise.protot ...
- js 鼠标放到图片上放大某一部分效果
动图效果: 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
- 洛谷 P3714 - [BJOI2017]树的难题(点分治)
洛谷题面传送门 咦?鸽子 tzc 竟然来补题解了?incredible( 首先看到这样类似于路径统计的问题我们可以非常自然地想到点分治.每次我们找出每个连通块的重心 \(x\) 然后以 \(x\) 为 ...
- oracle中char],varchar,varchar2
VARCHAR.VARCHAR2.CHAR的区别 1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串"abc",对于CHAR (20),表示你存储 ...
- php代码审计入门前必看
首先先介绍什么是代码审计? 代码审计:是指针对源代码进行检查,寻找代码中的bug,这是一项需要多方面技能的技术 包括:对编程的掌握,漏洞形成原理的理解,系统和中间件等的熟悉 2.为什么要进行代码审计, ...
- Flume消费内外网分流配置的Kafka时遇到的坑
网上有铺天盖地的文章,介绍如何将Kafka同时配置成公网地址.内网地址,以实现内外网分流,看着都很成功. 但我们通过Flume消费一个配置了内外网分流的Kafka(版本0.10.1)集群时遇到了坑,却 ...
- 『学了就忘』Linux文件系统管理 — 64、磁盘配额的配置步骤
目录 1.手工建立一个5GB的分区 2.建立需要做限制的三个用户 3.在分区上开启磁盘配额功能 4.建立磁盘配额的配置文件 5.开始设置用户和组的配额限制 6.启动和关闭配额 7.磁盘配额的查询 8. ...
- 疯了吧!这帮人居然用 Go 写“前端”?(二)
作者 | 郑嘉涛(羣青) 来源|尔达 Erda 公众号 前言 上篇我们讲了故事发生的背景,也简单阐述了组件及协议的设想: 一.丰富的通用组件库. 二.组件渲染能力,将业务组件渲染成通用组件 ...
- A Child's History of England.24
Besides all these troubles, William the Conqueror was troubled by quarrels among his sons. He had th ...