兰贝壳儿-apk多渠道自动打包

来源:互联网 发布:c语言编程dll程序 编辑:程序博客网 时间:2024/04/28 08:42

文章转自:http://blog.csdn.net/voiceofnet/article/details/12836699

1. 下载兰贝壳儿Eclipse插件,下载后解压缩OrchidShell.rar


2. 安装兰贝壳儿插件,建立Android工程

安装Eclipse插件,将OrchidShell文件夹拷贝到Eclipse的dropins文件夹下后,启动(重启)Eclipse


在需要打包的Android工程上点击右键可看到菜单 “兰贝壳儿”,说明安装成功


3. 使用配置文件、默认配置文件

兰贝壳儿使用xml作为插件配置文件,当需要打包的工程根目录中不存在配置文件,插件会新建一个默认的配置文件,文件名为bom.xml。

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!-- 北京兰贝科技有限公司版权所有 -->  
  3. <project>  
  4.     <dependencies>  
  5.         <dependency>  
  6.             <groupId>com.marsor.android.common</groupId>  
  7.             <artifactId>MarsorUtils</artifactId>  
  8.             <version>1.0.0-SNAPSHOT</version>  
  9.         </dependency>  
  10.     </dependencies>  
  11.     <repositories>  
  12.         <repository>  
  13.             <id>MarsorRepository</id>  
  14.             <name>Marsor Maven Mirror</name>  
  15.             <url>http://maven.marsorstudio.cn:8088/</url>  
  16.         </repository>  
  17.     </repositories>  
  18.     <package>  
  19.         <channels keyname="channelId">  
  20.             <pre name="code" class="html" style="font-size:16px; text-align:justify"><span style="white-space:pre">         </span><channel value="baidu" />  
  21.             <channel value="wandoujia" />  
  22.             <channel value="91zhushou" />  
  23.             <channel value="googleplay" />  
  24.             <channel value="360zhushou" /></pre></channels><keystore path="E:\my\android.keystore" passwd="123456"><alias name="android.keystore" passwd="123456" /></keystore><outpath value="E:\Repos\output\" /></package></project>  

4. 使用”打包发布”功能

点击兰贝壳儿菜单中的“打包发布”菜单,可以对工程按渠道分别打包,打包的过程中可以对apk文件进行自动签名。

注意打包发布前,需要修改配置文件中对应的项目:

[html] view plaincopy
  1. <package>  
  2.         <channels keyname="channelId">  
  3.             <channel value="baidu" />  
  4.             <channel value="wandoujia" />  
  5.             <channel value="91zhushou" />  
  6.             <channel value="googleplay" />  
  7.             <channel value="360zhushou" />  
  8.         </channels>  
  9.         <keystore path="E:\my\android.keystore" passwd="123456">  
  10.             <alias name="android.keystore" passwd="123456" />  
  11.         </keystore>  
  12.         <outpath value="E:\Repos\output\" />  
  13.     </package>      

其中channels 的keyname=””是指在你的AndroidManifest.xml文件中配置的Application级的<Meta-data>的名称。例如:

[html] view plaincopy
  1. <application  
  2.         android:icon="@drawable/ic_launcher"  
  3.         android:label="@string/app_name"  
  4.         android:theme="@style/AppTheme" >  
  5.         <meta-data android:name="channelId" android:value="10000" />  

是对应于你要打包的每个渠道名称,也就是统计SDK中渠道的标识符。对于写在这里的每个渠道,插件会自动为其修改meta-data中的value值,并且打包为一个apk文件。然后为这个apk文件进行签名。

这里的keystore就是你对apk文件进行签名时使用的个人密钥。需要你将path修改为你的密钥库路径,passwd为密钥库的密码。

下面的alias是指每个密钥对应的别名,以及对应的密码。如果你有多个alias,可以在这里指定,插件会选取第一个可用的alias以及密码对应的密钥Key对你的apk文件进行签名。

<outpath value="F:\Repos\android\keystore\output\" />

这个路径就是你的apk文件自动打包生成出来以后的存放路径。注意插件会在这个路径下创建以你的工程名为名称的文件夹。


代码中获取AndroidManifest.xml中生成的channelId的值:

[java] view plaincopy
  1. ApplicationInfo appInfo = this.getPackageManager().getApplicationInfo(getPackageName(),  
  2.             PackageManager.GET_META_DATA);  
  3.             String channelId=appInfo.metaData.getInt("channelId");  
  4.             Log.e(TAG, " msg == " + channelId );  

大功告成,这就是神鸟凤凰,嘿嘿,还差个光圈



1 0