使用BUCK 编译Android应用
来源:互联网 发布:奔腾楚天激光机编程 编辑:程序博客网 时间:2024/05/16 17:48
当项目依赖的库很多时,本地开发编译速度会越来越慢,有时只是改动几行却要花上几分钟编译,非常影响开发速度。
这里简单的介绍下使用BUCK加速编译。
- 安装编译
https://buckbuild.com/setup/install.html 看文档,非常简单
Mac OSX可以直接通过homebrew安装,可以用手动下载源码编译。 使用
根据https://buckbuild.com/setup/quick_start.html 的介绍,mkdir my-projectcd my-projecttouch .buckconfigbuck quickstart --type android --dest-dir .//根据提示输入android sdk路径buck build app
然后在 my-project/buck-out/gen/apps/myapp 下面生成app.apk文件,这样一个简单的通过buck编译程序就完成了。
- 迁移
但是这样的目录结构通常和我们项目结构不同,怎么办?难道把现在项目结构也改成这样吗?成本会不会太大了!
其实和gradle一样,只需要设置相关的代码目录就可以了,下面就简单的介绍下如何使用buck编译现有项目。
第一种情况是现在项目结构还是eclipse那种的:
myapp/
– src/
– res/
– libs/
– assets/
– AndroidManifest.xml
– local.properties
– app.keystore
在myapp/ 目录新建一个BUCK文件,复制以下内容并修改包名后保存到BUCK文件中。
import re# 所有jar包jar_deps = []for jarfile in glob(['libs/*.jar']): name = 'jars_' + re.sub(r'^.*/([^/]+)\.jar$', r'\1', jarfile) jar_deps.append(':' + name) prebuilt_jar( name = name, binary_jar = jarfile, )android_library( name = 'all-jars', exported_deps = jar_deps,)# 所有so库文件prebuilt_native_library( name = 'native_libs', native_libs = 'libs',)# res、assets文件android_resource( name = 'app-res', res = 'res', assets = 'assets', package = 'com.app.packagename',)# 项目代码android_library( name = 'app-src', srcs = glob(['src/**/*.java']), deps = [ ':all-jars', ':native_libs', ':build-config', ':app-res', ],)# 可选,BuildConfig.java 中的相关属性android_build_config( name = 'build-config', package = 'com.app.packagename', values = [ 'String APP_CONFIG = "DEBUG"', ],)# 签名,根据https://buckbuild.com/rule/keystore.html # 在local.properties中配置密钥参数keystore( name = 'app-keystore', store = 'app.keystore', properties = 'local.properties',)# 构建规则,注意name,没有proguard的可以删除# 需要proguard优化时要改package_type='release'android_binary( name = 'myapp', package_type = 'debug', manifest = 'AndroidManifest.xml', keystore = ':app-keystore', proguard_config='proguard-project.txt', deps = [ ':app-src', ':app-res', ],)# 手动生成apk并优化apk_genrule( name = 'appapk', apk = ':myapp', bash = '$ANDROID_SDK_HOME/build-tools/23.0.2/zipalign -f 4 $APK $OUT', out = 'app_sign.apk',)
再新建一个.buckconfig的文件,复制以下内容到.buckconfig文件中
[alias] app = //:myapp[java] # 代码目录 src_roots = //src/[project] # 默认AndroidManifest.xml文件位置 default_android_manifest = //app/AndroidManifest.xml ignore = .git, **/.svn,[android] build_tools_version = 23.0.2 target = android-23
那么现在项目中的文件结构如下:
myapp/
– src/
– res/
– libs/
– assets/
– AndroidManifest.xml
– local.properties
– app.keystore
– BUCK
– .buckconfig
并且local.properties 有如下:
# app.keystore 签名密码,自行修改
key.alias=my_alias
key.store.password=store_password
key.alias.password=alias_password
好了,只需要添加2个文件并略微修改一下就可以使用buck超快的编译速度了!
cd myapp#编译buck build app#生成apk,用于buck build //:appapk#安装budk build app
这样就完成了基于buck编译的改造,多看文档 https://buckbuild.com/
规则写起来就比较简单了。
现在没有提到编译AIDL文件,因为buck目前有bug没法编译parcelable类型的aidl文件,https://github.com/facebook/buck/issues/271 其实配置和上面的。
还有需要注意的是 不能用switch(id){ case R.id.button: }这样使用R中的属性,
参考Demo: https://buckbuild.com/article/exopackage.html
后面将会介绍用buck编译 android studio 项目的规则。
- 使用BUCK 编译Android应用
- (4.6.11.7)使用BUCK 编译Android应用
- 使用 buck 打包 Android( 使用OkBuck给Android Studio+gradle生成 buck 脚本)
- 使用 buck 打包 Android( 使用OkBuck给Android Studio+gradle生成 buck 脚本)
- 使用 buck 打包 Android( 使用OkBuck给Android Studio+gradle生成 buck 脚本)
- BUCK 使用体验
- 使用ant编译android应用
- 使用DX 编译 Android应用
- (4.6.11.1)加快Android编译速度:Buck,LayoutCast,JRebel,Jimulabs,Instant Run
- Buck: An Android build tool
- 开源Android构建工具Buck
- android切换buck构建项目
- 使用ant来管理编译Android应用
- 终端下使用gradle编译android应用
- 使用 gradle 编译多版本 android 应用
- 使用 gradle 编译多版本 android 应用
- window下使用ant编译android应用
- 使用Android NDK编译OpenCV应用r人脸检测
- 腾讯产品总监:我工作十年,内心仍无比恐慌
- BestCoder Round #76
- 2016.03.19(别闹 腰不好)
- 12.学生管理系统
- 欢迎使用CSDN-markdown编辑器
- 使用BUCK 编译Android应用
- windows下安装lxml
- 1-UFT的安装和延期
- Python OS 文件操作模块常用函数
- CodeForces 487A(水题)
- jQuery插件开发
- android-1(android环境的搭建)
- JDK源码阅读——Collection
- 玩转快速排序