再谈 aapt2 资源分区

在buildTools 28.0.0以前,aapt2自带了资源分区,通过–package-id参数指定。但是该分区只支持>0x7f的PP段,而在Android 8.0之前,是不支持>0x7f的PP段资源的,运行时会抛异常。但是当指定了一个<0x7f的PP段资源后,编译资源时却会报错 error: invalid package ID 0x15. Must be in the ra

替换Android中VM 加载动态库方式

Android加载动态库的代码在 dalvik/vm/Native.c,加载的方式就是调用 libdl 中 dlopen, dlsym 这些函数 应该可以在这些函数中做些手脚,dlsym 替换为 my_dlsym 这样就可以调用自己的函数 下面举一个例子,通常 dlopen, dlsym 使用如下 #include <dlfcn.h> void* handle = dlopen(“./

Gradle 函数复用的一点实践

前段时间在搞组件化,其中遇到一个问题,各个模块中的gradle文件需要一些辅助函数,比如用于判断当前构建的任务是否在jenkins上构建,并且这些函数可能会被多次使用。最开始的时候只有一个gradle文件用到了,就直接在用到的gradle文件中编写对应的函数。后来发现,很多gradle文件都会用到,一开始并没有考虑太多,用到的时候就copy一下对应的函数,久而久之,发现很多文件中存在着相同的函数,

使用manifestPlaceholders替换变量

在项目中,我们有时会需要根据不同的项目环境,使用不同的项目变量,比如说,我在测试环境中需要我的app访问的服务器地址是测试服务器上,而正式发布下的app需要访问正式服务器。在这种情况下,我们可以将这个变量放在AndroidManifest文件中,根据不同的编译类型生成服务器指向不同的app。 实现 在之前版本的gradle中,大部分的思路都是在AndroidManifest中定义一个变量,然后在编

Android平台的崩溃捕获机制及实现

作者简介:贾志凯,Testin崩溃分析(http://apm.testin.cn/)项目研发工程师,负责客户端SDK相关技术研发工作。5年移动互联网开发经验,曾任职于中科院、Symantec、Opera,对移动App的测试、分析有较深入的研究。 Android系统碎片化造成应用程序崩溃严重,在模拟器上运行良好的程序安装到某款手机上说不定就会出现崩溃的现象。而且,往往都是程序发布之后在用户端出现了崩

Android 工程引用其他Library工程时的R.id问题

A为普通Android工程B为设置了is Library的工程,B中有使用R.id,当A工程引用了B工程时会在A工程的gen目录中生成B的R文件,里面也包含了A的R文件中的内容,但是当B的id定义在layout文件中时需要注意layout的名称,如果A下有个main.xml的layout,B下也有个main.xml的layout,那么A编译时就会将B的main.xml中的所有id忽略,导致混淆报错

2016移动开发技术巡礼(by移动开发前线)

目录 前言 平台篇 iOS平台 Android平台 iOS开发技术篇 Android开发技术篇 跨平台技术篇(React Native、Weex、微信小程序) 热门行业技术篇(直播、VR/AR) 前言 2017年就要来了,过去的一年里你是否疏于学习,欠下技术债呢?如果答案是肯定的,希望本文能让你在学习上少走一点弯路。 2016年对于移动开发领域来说是颇受冲击的一年,Native开发面临着React