Wire-Android编译记录

Date:  2017/5/28   Sort:  Linux&开源 118 Views / 0 Comments 
    Wire是一款小众的聊天软件,虽然该项目2014年就启动,但这几年在国内的知名度一直没有明显提升。究其原因,可能在于Wire的客户端一直使用源代码发布模式,无法直接从PC浏览器上下载手机应用,这在一定程度上阻碍了大众的入门(华为应用市场上亦没有相应的APK可供下载)。本着学习和助人为乐的精神,现将Android版Wire客户端的编译经过记录与此,希望能帮助到需要的各位。


1、下载Android SDK

    建议国内用户从东大的开源镜像站(http://mirrors.neusoft.edu.cn/android/repository/)下载。构建所需的build-tools的版本为23.0.3。

2、下载Wire-Android源代码

    地址:https://github.com/wireapp/wire-android/archive/2.18.288.tar.gz

3、修改部分源代码

    该版本发布时,部分文件的版权声明没有完全更改,而自动化构建脚本对其进行的修改又会导致编译错误,这就需要我们对其手动修改。涉及到的具体文件为:
    /app/src/main/res/layout/cursor_images_layout.xml
    /app/src/main/res/layout/emoji_keyboard_layout.xml
    app/src/main/res/layout/fragment_cursor_images_preview.xml
    /wire-ui/src/main/res/drawable/selector__icon_button__background__red.xml
将“<?xml version”前的所有文字删去,然后将注释中的“Copyright (C) 2016 Wire Swiss GmbH”替换成“Copyright (C) 2017 Wire Swiss GmbH”即可。
    
4、编译

    切换到源代码目录下,运行
    export ANDROID_HOME=[Android SDK 目录]
    ./grandlew assembleProdRelease
     编译后在app/build/outputs/apk文件夹下得到未签名的APK安装包。
    
5、签名
    keytool -genkey -v alias [密钥名称] -keyalg RSA -keysize 2048 -validity 10000 -keystore [密钥文件名]
    然后输入密钥的保护密码,以及操作者的一些基本信息(可留空)。   
    然后用生成的密钥(keystore格式)对APK签名:
    jarsigner -verbose -keystore [密钥文件名] [未签名的APK文件] [密钥名称]
    注意该命令会直接改写APK文件。   
    至此,APK文件可以直接被安装到Android 4.4以上的设备中。


一些注意事项:

1、此版本(2.18.288)编译后的APK在Android 4.4.2系统上运行存在无法接收图片和视频的问题,官方编译的最新版(2.33.335)也存在此问题。可能是官方使用的测试平台的版本为5.0以上,未能充分考虑对低版本API的兼容;
2、使用grandles进行自动化构建时,需要从dl.bintray.com上下载大量的依赖,故需要确保网络畅通;
3、编译结束后,grandlew会自动进行多次代码优化。目前尚不清楚总共需要进行几次优化,但本人在编译时发现,随着优化次数的增加,内存占用率也增加,最终导致JVM报错(内存不足)。若此时再次执行“./grandlew assembleProdRelease”,grandlew会直接将编译好的代码打包成APK。目测是自动构建脚本的BUG。

转载本站文章请注明,转载自:WTZ的小博[ http://wiblog.net/]
知识共享许可协议 本作品采用知识共享署名 4.0 国际许可协议进行许可。

更多