[关闭]
@wangwangheng 2015-09-08T14:57:25.000000Z 字数 2706 阅读 2091

批量打包 - 使用gradle

公司文档


使用gradle批量打包

1.signingConfigs(签名配置)

build.gradle文件的andorid块中添加signingConfigs

例子:

  1. signingConfigs {
  2. debugConfigs{
  3. storeFile file('/Users/laowang/keystore/debug/debug.keystore')
  4. keyAlias 'androiddebugkey'
  5. keyPassword 'android'
  6. storePassword 'android'
  7. }
  8. releaseConfigs {
  9. keyAlias 'laowang'
  10. keyPassword 'laowang'
  11. storeFile file('/Users/laowang/keystore/release/release.keystore')
  12. storePassword 'laowang'
  13. }
  14. }
  1. File -> Project Structure -> 选择具体的Moudle -> 选择signing选项卡 -> 底部可以选择添加或者删除配置,右侧可以配置具体的配置内容

2、buildTypes(构建类型配置)

build.gradle文件的andorid块中添加buildTypes

  1. buildTypes {
  2. release {
  3. minifyEnabled false
  4. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  5. }
  6. qihu360{
  7. signingConfig signingConfigs.releaseConfigs
  8. minifyEnabled true
  9. zipAlignEnabled true
  10. }
  11. bd{
  12. signingConfig signingConfigs.releaseConfigs
  13. minifyEnabled true
  14. zipAlignEnabled true
  15. }
  16. anzhi{
  17. signingConfig signingConfigs.releaseConfigs
  18. minifyEnabled true
  19. zipAlignEnabled true
  20. }
  21. wandoujia{
  22. signingConfig signingConfigs.releaseConfigs
  23. minifyEnabled true
  24. zipAlignEnabled true
  25. }
  26. }
  1. File -> Project Structure -> 选择具体的Moudle -> 选择Build Type选项卡 -> 底部可以选择添加或者删除配置,右侧可以配置具体的配置内容

3、在项目根文件夹下生成保存要替换文件的目录

在项目根文件夹下生成保存要替换文件的目录,并添加具体的渠道子文件夹,把Manifest.xml文件拷贝到各个目录下,并修改相应的渠道号(注意某些版本需要对meta-data添加tools:replace="android:value")

例子:

  1. /
  2. .../app/
  3. ....../channels/
  4. ........./bd/
  5. ........./qihu360/
  6. ........./anzhi/
  7. ........./wandoujia/

Manifest.xml

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. package="com.xinye.test">
  4. <application android:allowBackup="true" android:label="@string/app_name"
  5. android:icon="@mipmap/ic_launcher" android:theme="@style/AppTheme">
  6. <!-- 在各个不同的文件夹下,value替换成相应的渠道号 -->
  7. <meta-data android:name="CHANNEL" android:value="anzhi"
  8. tools:replace="android:value"/>
  9. <activity android:name=".TestActivity"
  10. android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
  11. android:screenOrientation="portrait">
  12. <intent-filter>
  13. <action android:name="android.intent.action.MAIN"/>
  14. <category android:name="android.intent.category.LAUNCHER"/>
  15. </intent-filter>
  16. </activity>
  17. </application>
  18. </manifest>

4、sourceSets(设置替换文件夹)

build.gradle文件的andorid块中添加sourceSet

  1. sourceSets{
  2. bd.setRoot('channels/bd')
  3. qihu360.setRoot('channels/qh360')
  4. anzhi.setRoot('channels/anzhi')
  5. wandoujia.setRoot('channels/wandoujia')
  6. }

5、构建

点击grale -> 具体的moudle -> Task -> build -> build进行构建

可以在/具体的模块/build/outputs/apk文件夹下看到生成的apk文件

6、附加内容

读取Manifest文件中的渠道号的代码

  1. public static String getApplicationMetadata(Context context,String metaDataKey) {
  2. ApplicationInfo info = null;
  3. try {
  4. PackageManager pm = context.getPackageManager();
  5. info = pm.getApplicationInfo(context.getPackageName(),
  6. PackageManager.GET_META_DATA);
  7. return String.valueOf(info.metaData.get(metaDataKey));
  8. } catch (Exception e) {
  9. e.printStackTrace();
  10. }
  11. return null;
  12. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注