
android
文章平均质量分 58
oncealong
这个作者很懒,什么都没留下…
展开
-
Android Native 开发之 NewString 与 NewStringUtf 解析
转自:https://blog.youkuaiyun.com/self_study/article/details/78886686本文将从一个 Native Crash 分析入手,带大家了解一下我们平时开发中常用容易忽略但是又很值得学习底层源码知识。一、问题起因最近在项目中遇到一个 native crash,引起 crash 的代码如下所示:jstring stringTojstring(JNIEnv* env, string str) { int len = str.length(); wc转载 2021-01-13 21:01:04 · 2380 阅读 · 0 评论 -
Android CPU, Compilers, D8 & R8
译文转自:https://juejin.im/post/5d70fb2ce51d4557ca7fddaa很好的一篇文章,强烈推荐看下Android CPU, Compilers, D8 & R8此为译文,原文:Android CPU, Compilers, D8 & R8 – ProAndroidDev设想你被分配了一项重要的太空探索任务。你需要建造一艘非常可靠的飞...翻译 2020-04-02 13:26:39 · 892 阅读 · 0 评论 -
Run ARM apps on the Android Emulator
以前debug Android程序都是用实体机debug,没有用虚拟机的原因是手机App里带有第三方so,这些so还只有armeabi架构,直接运行在虚拟机里会直接crash。找过一些x86模拟arm的插件,但是效率堪忧,慢的折腾人。最新AS官方退出了Android 11的模拟器,可以直接利用x86的cpu的能力,只中转需要的代码,大家可以试下。我已经在MAC上试过了,启动过程中crash...翻译 2020-04-01 16:55:26 · 717 阅读 · 0 评论 -
应用与系统稳定性第三篇---FD泄露问题漫谈
cat /proc/pid/limits 查看最大打开文件Max open filescat /proc/pid/fd 查看打开文件cat /proc/sys/kernel/threads-max 查看线程最大创建数目转自:https://www.jianshu.com/p/1f9cff12b84f备份防丢。在正式解释什么是fd泄露的时候,先看看三份log,是否有眼熟而不知所措...转载 2020-01-15 10:08:38 · 3547 阅读 · 0 评论 -
Android so 加载原理分析
1.loadLibrary动态库加载过程分析http://gityuan.com/2017/03/26/load_library/2.深入理解 System.loadLibraryhttps://pqpo.me/2017/05/31/system-loadlibrary/查看Android源码:https://cs.android.com/防止原文丢失,备份,推荐...转载 2019-12-30 13:31:42 · 1476 阅读 · 0 评论 -
Android 热修复方案Tinker 系列文章
最近在看flutter热更新,需要看下so的热更新,找到了下面的系列文章,写的很不错。Android 热修复方案Tinker(一) Application改造Android 热修复方案Tinker(二) 补丁加载流程Android 热修复方案Tinker(三) Dex补丁加载Android 热修复方案Tinker(四) 资源补丁加载Android 热修复方案Tinker(五) SO补丁...原创 2019-12-13 18:03:43 · 280 阅读 · 0 评论 -
Build System Maintainers Guide
Build System Maintainers GuideThe latest version of this document is available at https://android.googlesource.com/platform/ndk/+/master/docs/BuildSystemMaintainers.md. Ensure that you are using the v...转载 2019-03-26 21:29:28 · 690 阅读 · 0 评论 -
基于命名空间的动态链接—— 隔离 Android 中应用程序和系统的本地库
转载自:https://jackwish.net/namespace-based-dynamic-linking-chn.html补充谷歌官网文档:https://source.android.com/devices/architecture/vndk/linker-namespace本文是Namespace based Dynamic Linking - Isolating ...转载 2019-04-03 15:31:33 · 2996 阅读 · 0 评论 -
local reference table overflow
JNI ERROR (app bug): local reference table overflow (max=512)为了查找jni里的local reference, 可以使用如下代码打印 reference table.static void printDumpReferenceTables(JNIEnv *env) { jclass vm_class = (*env)....原创 2019-02-14 17:09:55 · 984 阅读 · 0 评论 -
使用Docker编译Android系统源码
[转自:https://blog.youkuaiyun.com/godiors_163/article/details/59069108]文章不错, 包含了docker的常用方法, 建立android源码编译环境, 和在docker中编译android源码.以后准备在docker里建立android/chorme编译环境, 这样不管是在mac下还是在windows下, 都很方便.1.安装Docke...转载 2019-01-10 21:40:39 · 3417 阅读 · 0 评论 -
调试 Android ndk代码
调试 Android 平台原生代码https://source.android.google.cn/devices/tech/debugAndroid下使用AddressSanitizer检测内存错误https://source.android.com/devices/tech/debug/asan原创 2018-12-11 21:53:39 · 265 阅读 · 0 评论 -
ndkCompile ndk-build CMakeList 区别.
一直很好奇`android.useDeprecatedNdk = true`到底是使用的什么废弃ndk, 但是找资料一直没有找到相关的. 最近看谷歌官网资料, 有些理解. 写在这里权当抛砖引玉, 不保证正确, 有更了解的麻烦指出错误.现在常用的ndk编译主要用两种, 一种是ndk-build+Android.mk, 另一个种是CMakelist. 这两种属于比较现代的ndk开发方式了....原创 2018-12-11 21:51:15 · 1144 阅读 · 0 评论 -
Android NDK编程: JNI技巧
前言: 这篇文章是android官方文档(https://developer.android.com/training/articles/perf-jni), 讲的非常赞. 有很多最佳实践, 比如储存classid/methodid, 管理线程, cpp和java线程交互, 异常UTF编码, 最后还有几个常见问题(UnsatisfiedLinkError错误, java和native分享数据)....翻译 2018-12-11 21:37:52 · 1773 阅读 · 0 评论 -
TextureView onSurfaceTextureAvailable回调不执行
TextureView必须工作在硬件加速条件, 否则什么都不执行.因为需要 android:hardwareAccelerated=”true”或者 Window w = activity.getWindow(); w.setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);如果是在Service里面,直接在Andr...原创 2018-12-22 17:05:46 · 16007 阅读 · 1 评论 -
"No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel-linux-android" 解决办法
最近Android Studio升级了, 顺便也升级了sdk版本, 但是升级过后编译项目提示"No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel-linux-android". 刚开始很懵, 上网找了下原因, 觉得说的都不是特别清晰, 翻了下谷歌官网(一定要英文版, 中文版更新太慢), 弄清楚了...原创 2018-11-30 22:23:26 · 2916 阅读 · 1 评论 -
java 9的jhat和visualVM去哪了?
看Android移动性能实战一书, 其介绍用jhat分析Hprof文件, 用everything搜索jhat, 懵然发现jdk 9竟然没有这个命令. 于是查阅下资料, 整理如下: jhat是一个实验性的, 老旧的工具, 不再被支持. 虽然JEP没有指明替代工具, InfoQ 推荐大家使用VisualVM来完成堆内存的创建,分析和可视化任务.然后又搜索jvisualvm, 又懵然发现原创 2018-01-30 12:57:43 · 6327 阅读 · 1 评论 -
关于 AndroidJavaCompile.setDependencyCacheDir 的解决办法
svn新建了release分支, 报错如下: Error:Cause: com.android.build.gradle.tasks.factory.AndroidJavaCompile.setDependencyCacheDir(Ljava/io/File;)V Consult IDE log for more details (Help | Show Log) stack了好久, 觉原创 2018-01-30 15:04:57 · 7462 阅读 · 4 评论 -
Android中的BinderProxy.finalize()或PlainSocketImpl.finalize()导致的TimeoutExceptions
Android中的BinderProxy.finalize()或PlainSocketImpl.finalize()导致的TimeoutExceptions翻译: http://stackoverflow.com/questions/24021609/how-to-handle-java-util-concurrent-timeoutexception-android-os-binderpr...转载 2018-03-15 10:43:16 · 2570 阅读 · 0 评论 -
自定义View时不同构造函数的解释, 言简意赅版
自定义一个View,必须派生实现基类View的三个构造函数 //Simple constructor to use when creating a view from code View(Context context) //Constructor that is called when inflating a view from XML View...原创 2018-03-06 10:51:44 · 513 阅读 · 0 评论 -
Android逆向分析概述
学习逆向的初衷是想系统学习Android下的hook技术和工具, 想系统学习Android的hook技术和工具是因为Android移动性能实战这本书. 这本书里用hook技术hook一些关键函数来计算关键函数的调用参数和调用时长, 从而确定性能问题发生的位置和原因. 但目前没有比较系统的讲解hook的书籍, 所以就系统的了解下逆向分析.在读了姜维的Android应用安全防护和逆向分析和丰生强的...原创 2018-06-04 20:35:19 · 4494 阅读 · 1 评论 -
升级Android Studio 导致的 `Error:Failed to notify project evaluation listener.`解决办法
最近升级Android Studio和sdk后, gradle同步项目时忽然报错, Error:Failed to notify project evaluation listener.截图如下, 更详细的错误见最后. 使用gradlew build --debug看了下输出的信息, 没有找到有用的.ctrl + shift + alt + s查看下项目配置, 发现项目提示ndk d...原创 2018-08-13 20:18:43 · 65226 阅读 · 8 评论 -
Mac os 下打开java内存分析工具 mat
下载MAT后, 解压得到mat.app, 但是直接点击打开出错, 显示错误信息在文件/Users/along/.eclipse/762171948_macosx_cocoa_x86_64/configuration/1539580415773.log中.1. 打开错误信息cat /Users/along/.eclipse/762171948_macosx_cocoa_x86_64/confi...原创 2018-10-15 13:25:25 · 11480 阅读 · 1 评论 -
Android ndk编译FFMPEG/IJKPlayer报错 `ndk missing -D__STDC_CONSTANT_MACROS` 解决办法
本地编译ijkplayer, 需要调试ndk, 按照`0003-armv7a-enable-debugging-with-LLDB.patch`所说进行修改. 但是运行时提示:ndk missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS查找了一番, 没有找到直接的答案. 通过提示知道需要给cpp增加一个标识,...原创 2018-11-21 20:13:12 · 460 阅读 · 0 评论 -
Genymotion-ARM-Translation.zip各安卓版本合集
转自:https://blog.youkuaiyun.com/GHY2016/article/details/83422620安卓版本 代号 Genymotion-ARM-Translation GApps 8.0 – 8.1 Oreo奥利奥 ARM_Translation_Oreo.zip 7.0 – 7.1.2 Nougat牛轧糖 ...转载 2019-05-07 11:40:20 · 7406 阅读 · 3 评论 -
使用 Java Native Interface 的最佳实践
转自:https://www.ibm.com/developerworks/cn/java/j-jni/使用 Java Native Interface 的最佳实践避免最常见的 10 大 JNI 编程错误的技巧和工具Michael Dawson, Graeme Johnson, 和 Andrew LowJNI 的发展JNI 自从 JDK 1.1 发行版以来一直是 Java 平台...转载 2019-05-09 20:16:00 · 527 阅读 · 0 评论 -
JNI|在子线程中获得JNIEnv|AttachCurrentThread
转自:https://blog.youkuaiyun.com/stefzeus/article/details/6792518A JNI interface pointer (JNIEnv*) is passed as an argument for each native function mapped to a Java method, allowing for interaction with...原创 2019-05-15 19:20:09 · 1708 阅读 · 0 评论 -
录音与播放示例, 以Android AAudio为例
最近看了谷歌的codelabs介绍AAudio的示例, 写的还不错, 把主要问题介绍清楚了, 对音频这块感兴趣的可以看下. 当然实战还是推荐Oboe库.1. 示例1, 主要讲了怎么创建一个声音合成器, 生成不同频率的正弦波.https://codelabs.developers.google.com/codelabs/making-waves-1-synth/#0这个程序可提升的...原创 2019-09-10 21:44:06 · 2550 阅读 · 0 评论 -
ndk C++ 编译器的函数名修饰规则
前言:最近ndk debug好痛苦,堆栈里都是C++修饰过的名字,每次转化成实际的类和方法都要脑子里转一下,虽说c++filt可以转换,但是转换后可能更蒙蔽。。。这里贴出两篇文章供参考。c++filt -n _ZNSt6__ndk113__tree_removeIPNS_16__tree_node_baseIPvEEEEvT_S5_void std::__ndk1::__tree_re...原创 2019-08-15 20:50:29 · 1753 阅读 · 0 评论 -
macos git: 'credential-wincred' is not a git command. See 'git --help'
解决办法:git config --unset-all credential.helpergit config --global credential.helper osxkeychain原因:The problem is that you're trying to use thewincredcredential helper, which is only availa...原创 2019-08-14 16:29:46 · 6087 阅读 · 1 评论 -
Android Studio 最新debug工具及与老版本工具对应关系
Android Device Monitor component What you should use Dalvik Debug Monitor Server (DDMS) This tool is deprecated. Instead, useAndroid Profilerin Android Studio 3.0 and h...翻译 2019-08-01 13:32:18 · 388 阅读 · 0 评论 -
NDK开发之 Undefined Reference to Typeinfo
最近给现在代码增加个功能,可以使用代理走向内网指定服务器,但是功能增加后一直编译不过,报错:"Undefined Reference to Typeinfo HttpClient", 很奇怪,代码看着没什么问题,就是编译不过。CPP最烦的就是不说人话。。。要让你去猜查了网上的资料, 发生这种情况一般是 :虚函数未实现产生”undefined reference to `typei...原创 2019-07-23 13:27:46 · 662 阅读 · 0 评论 -
Android下使用objdump查看导出的函数表
Android下为了查看so的导出函数,有两种方法。nm -D ffmpeg.soobjdump -tT ffmpeg.so这里推荐第二种方法, 因为遇到问题相对好查,nm在google里稍难匹配到你要的意思。下面试使用objdump后, 每一行和每一列的数据的意义:ibcrypto.so: file format elf32-littlearmSYMBOL TABLE...原创 2019-07-20 18:53:51 · 2428 阅读 · 0 评论 -
gradle proxy配置
#http proxy setupsystemProp.http.proxyHost=a.b.comsystemProp.http.proxyPort=8080#systemProp.http.proxyUser=userid#systemProp.http.proxyPassword=passwordsystemProp.http.nonProxyHosts=*.oa.com|loc...原创 2019-07-18 20:38:44 · 1662 阅读 · 0 评论 -
全局gitignore导致的文件被忽略~“The following paths are ignored by one of your .gitignore files.”
要把android库代码持续集成,需要放到docker里编译, 但是‘gradlew’默认没有被添加。 手动添加时, 提示“The following paths are ignored by one of your .gitignore files.”但是项目目录下明明没有对应规则。这时使用命令“git check-ignore -v gradlew”测试是哪个gitignor...原创 2019-07-18 19:23:40 · 8989 阅读 · 0 评论 -
IOS和android都使用的网络编程头文件
//#define Android1#include <pthread.h> //提供多线程操作的函数#include <time.h>//提供有关时间的函数#include <stdio.h>#include <stdlib.h>#include <assert.h>#...转载 2019-07-10 10:29:10 · 418 阅读 · 0 评论 -
Android Studio CMake 报错 "CMake Error: CMake was unable to find a build program corresponding Ninja"
前两天, 没修改什么, 打开Android Studio编so, 忽然就不成功了.报错信息如下:Support for CMake 3.7 and higher is a preview feature. To report a bug, see https://developer.android.com/studio/report-bugs.htmlSupport for CMa...原创 2019-06-27 11:22:00 · 8477 阅读 · 0 评论 -
Android Jni开发
相关代码可以直接在这个网站搜, 很不错的讲义.http://statweb.stanford.edu/~naras/java/course/lec5/lec5.html转载 2019-05-30 13:44:56 · 142 阅读 · 0 评论 -
Android Studio 使用本地gradle及代理配置
mac os x下Android Studio3.0 配置本地 Gradle转自:https://www.cnblogs.com/xyptechnology/p/7879495.html新建Android studio的项目,打开项目的gradle.wrapper包里面的gradle-wrapper.properties文件,会看到如下内容distributionBase=GRADL...转载 2019-05-12 14:25:25 · 4447 阅读 · 1 评论 -
Android 性能优化系列 - 01 手把手教你使用 systrace
转自:https://www.jianshu.com/p/19b3245207e8?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io一. 概述性能优化是 Android 中的一个重要知识,也是衡量一个 Android 工程师水平的重要依据,简单的性能优化,可能很多人都会。比如以下几个优化 UI 渲染...转载 2019-05-24 21:21:24 · 4377 阅读 · 0 评论 -
由一个stack OOM引发的血案
转自:https://blog.youkuaiyun.com/oscaryue/article/details/72967448近期在App监测平台上发现如下错误信息:java.lang.OutOfMemoryError: pthread_create (stack size 16384 bytes) failed: Try again at java.lang.VMThread.creat...转载 2019-05-15 19:28:24 · 645 阅读 · 0 评论