背景

为了保证App上线前测试环境正式环境切换不需要改变代码,提高效率,使用Gradle脚本配置正式包和测试包。

Gradle配置与打包 build.gradle 文件的配置

buildTypes {             /** 正式环境*/            release {                    /** 定义开关*/                    buildConfigField("boolean", "IsDebug", "false")                    /** 定义正式环境  腾讯云bucket*/                    buildConfigField("String", "TENCENT_UPLOAD_BUCKET", "\"topworld\"")                    /** 定义正式环境 HOST*/                     buildConfigField("String", "HOST", "\"www.lovbook.net\"")                    /** 打开 代码混淆*/                    minifyEnabled true                    /** 打开 应用程序进行优化*/                    zipAlignEnabled true                    /** 打开 移除无用资源*/                    shrinkResources true                    /** 加载 签名文件*/                    signingConfig signingConfigs.release                    /** 加载 混淆文件*/                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'                    /** 输出 混淆apk release_vxx_codexx_yyyyMMddHH.apk*/            }            /** 测试环境*/             debug {                     /** 定义开关*/                     buildConfigField("boolean", "IsDebug", "true")                     /** 定义测试环境 腾讯云bucket*/                    buildConfigField("String", "TENCENT_UPLOAD_BUCKET", "\"lovebook\"")                    /** 定义测试环境 HOST*/                    buildConfigField("String", "HOST", "\"api.lovbook.net\"")                    /** 关闭 代码混淆*/                    minifyEnabled false                    /** 关闭 优化*/                    zipAlignEnabled false                    /** 关闭 移除无用资源*/                    shrinkResources false                    /** 加载 签名文件*/                         signingConfig signingConfigs.debug                    /** 输出 apk debug_vxx_codexx_yyyyMMddHH.apk*/

其中release版本的log默认关闭,如果需要在该环境下看log,修改lovebook module的gradle配置文件。将IsDebug变量修改为true。

    release {                /** 定义开关*/                buildConfigField("boolean", "IsDebug", "true")            }     

在release版本中开启“shrinkResources true”,移除无用资源,会导致某些书籍的详情页面图片显示为黑框。是因为移除了不应该被移除的资源导致。所以release版本中该开关暂时关闭设置为false。后期继续优化这个问题。

代码中的配置:

在BuildConfig类中会生成如下代码:

gradle签名文件的获取

    signingConfigs {             release {                    try {                        storeFile file(RELEASE_STOREFILE)                        keyAlias RELEASE_KEY_ALIAS                        keyPassword RELEASE_KEY_PASSWORD                        storePassword RELEASE_STOREPASSWORD                    } catch (ex) {                 throw new InvalidUserDataException("You should define KEYSTORE_PASSWORD and KEY_PASSWORD in gradle.properties.");                    }            }                debug {             }    }

keystore签名文件的保存

签名文件keystore密码的常量配置在gradle.properties文件中(原则上这个文件不上传SVN):其中RELEASE_STOREFILE 对应你自己签名文件的路径。

编译app

生成apk配置完毕之后,重新编译之后,这时候AndroidStudio工具栏的左下方的Build Variants窗口里面的lovebook Module可以选择编译方式:release 和debug
(打包之前clean一下项目)

选择完毕,连接手机,运行编译器。会安装对应的relase或者debug包。同时在你的项目目录D:\as_pj\androidProject\lovebook\build\outputs\apk 也会生成对应的apk文件。

使用命令行打包

可以使用androidstudio工具下的 命令行使用gradlew命令进行打包,然后根据需要执行(1)/(2) /(3),生成的文件在 app–>build–>outputs–>apk下
(如果配置了gradle的环境变量 也可以使用gradle命令进行操作)。

(1). gradlew build <注:这个是打所有的包>

(2). gradlew assembleDebug <注:这个是打Debug包>

(3). gradlew assembleRelease <注:这个是打Release包>

总结

后期会根据情况添加多渠道打包.

更多相关文章

  1. 三种方式实现自定义圆形页面加载中效果的进度条
  2. Android Studio导入.so库文件方法
  3. 下载和安装Android Studio搭建Android集成开发环境
  4. android xmlns res-auto 自定义 attr
  5. Android显示PDF文件之iText
  6. Android Binder机制----实现自定义的系统服务
  7. Android中解析doc、docx、xls、xlsx格式文件
  8. Android中除了利用VideoView、Mediaplayer播放视频文件外,还可以
  9. Android 布局文件属性讲解

随机推荐

  1. Android(安卓)获得可用摄像头id
  2. Android的报错信息at com.android.ddmlib
  3. 2011.10.10(2)——— android Clipping关于
  4. Android调用Webview中的js方法
  5. Android(安卓)360度摇杆
  6. android adb adbd analyse
  7. Android(安卓)封装http请求的工具类
  8. android 加法程序
  9. Android自动化测试
  10. Android(安卓)简单的从本机获取相机功能