博文

homebrew安装旧版本的formula

图片
第一步 https://github.com/Homebrew/homebrew-core/find/master查找formula名字,如swig 第二步 查看Formula/${formula名称}.rb (如Formula/swig.rb) 的提交记录。 找到对应版本的提交记录,如swig 4.0.2的提交记录。 第三步 查看.rb文件的内容,拷贝并保存成本地文件,如~/Desktop/swig.rb 第四步 在terminal中执行 HOMEBREW_NO_AUTO_UPDATE=1 brew install ~/Desktop/swig.rb

关于Google Play新打包格式aab(Android App Bundle)的调研简报

图片
关于Google Play新打包格式aab(Android App Bundle)的调研简报 1.背景 根据 Google Play 的政策,从 2019 年 8 月开始,所有在 Play 上架的新应用和已有应用的更新都必须包含原生 64 位版本(主要指应用内的.so文件),若Biugo提供了64位支持但继续使用老的Universal-Apk(包含应用所有资源,可安装在任意支持的设备上)的打包方式,包体直接增大20多MB(.so文件的大小)。 Google在文档中明确说明了安装包的大小会影响卸载率和留存 [1] 。 2.Android App Bundle打包格式 Google Play所支持的新的打包格式,文件后缀为.aab。如图一所示,aab包含基础模块(Base Module)和各个动态功能模块(Dynamic Feature Module),每个模块包含该模块所需 图一 的所有资源(dex、res、assets、lib),对于现阶段的Biugo来说,只会有一个Base Module。通过Google提供的bundletool [2] 工具,如图二所示,可以让每个模块生成一个Apk全集(Apks Set),Apk全集包含四个子集: Base or Dynamic Feature Apk(java代码) Density  Configuration Apks Set(根据不同屏幕尺寸、分辨率划分的图片等资源的子集) Language Configuration Apks Set (语言资源的子集) ABI Configuration Apks Set(根据cpu架构划分的native资源的子集,主要是so文件) 可以将Biugo的主模块拆分为图三所示的Apk全集。 图二 图三 3.构建Android App Bundle 3.1 Server-Side构建(Jenkins) 详见Google文档 [3] ,通过Google提供的bundletool [2] 工具生成.aab,使用jarsigner [4] 对.aab进行前面,jenkins部署还需注意aapt2版本问题,如图四所示。 图四 3.2 Andr

Android Studio中kapt调试annotation processor的一些注意事项

图片
首先按照以下三张图所示新建一个用来debug annotation processor的configuration 然后在terminal中输入命令  ./gradlew --no-daemon -Dkotlin.daemon.jvm.options="-Xdebug,-Xrunjdwp:transport=dt_socket\,address=5005\,server=y\,suspend=n" :clean assemble 开始编译 gradle任务执行到:app:kaptDebugKotlin的时候点击debug按钮,然后会提示kapt debug这个configuration 成功地connected to the target VM,  之后便能走到断点处。 格外值得注意的是,调试过程中发现annotation processor的process()方法会执行多次,并且每次调用roundEnvironment.getElementsAnnotatedWith(XXX)的结果都可能不同。由于process()方法中一般要写文件,可能造成写文件的时候抛出“Attempt to recreate a file for type com.XXX.XXX.XXX”的异常,因此写文件时要try catch住异常。捕获了异常不该用mMessager.printMessage(Diagnostic.Kind.ERROR, XXX),这会终止编译进程。

用Android Studio将项目上传到JCenter和Maven Central遇到的一些问题及解决办法

图片
大多数项目均可依照nuuneoi的教程 How to distribute your own Android library through jCenter and Maven Central from Android Studio  成功上传到JCenter和Maven Central。 但是,如果你的项目中有第三方依赖关系,如在build.gradle中有 compile 'com.android.support:appcompat-v7:23.1.1' 那么在terminal中执行命令 ./gradlew build 时,会有错误提示,提示找不到第三方依赖关系中的包的内容,无法生成javadoc。找到一篇分析的比较清楚的文章 Android 项目打包到JCenter的坑 ,其中说到了javadoc无法生成的原因就是存在第三方依赖关系,但是按文中给出的gradle脚本执行,依然会报错。 后来我稍微琢磨了一下nuuneoi教程中给出的gradle脚本。生成javadoc的语句是 task javadoc ( type : Javadoc ) { source = android . sourceSets . main . java . srcDirs classpath += project . files ( android . getBootClasspath (). join ( File . pathSeparator )) } task javadocJar ( type : Jar , dependsOn : javadoc ) { classifier = ' javadoc ' from javadoc . destinationDir } 本人对gradle也知之甚少,但是经过多次尝试,将上述语句中task javadoc的内容删掉即可成功生成javadoc.jar task javadoc ( type : Javadoc ) { } task javadocJar ( type : Jar , dependsOn : javadoc ) { classifier =