Android App应用之发布各广告… 分类: Android开发 2014-05-30 10:54 101人阅读 评论(0) 收藏

2014/01/18 by: shao

来源:http://www.cnblogs.com/qianxudetianxia/archive/2012/12/25/2830343.html

Android的广告平台是很多的,各市场对各平台的接受程度是不一样的,Android的开发者如果想集成广告基本要考虑下面两个问题: 
(1)集成什么广告,会赚钱? 
(2)集成什么广告,不会被市场拒绝? 
最终的结果往往是折中的。 
第一个问题是广告平台的判断问题,我没有发言权去评论,本文主要是针对第二个问题展开。 
解决方案就是打包应用的不同广告平台版本,本文接下来逐一展开相关话题。

1. 基础 
本文其实是针对《Android学习系列(6)–App模块化及工程扩展》和《Android学习系列(31)–App自动化之使用Ant编译项目多渠道打包》的一个扩展和应用场景。 
所以当然也需要这两篇文章的基础: 
(1). Android类库的应用 
(2). 因为要结合自动编译各市场版本,所以要更新编译打包的脚本,当然这一步是可选的,如果你愿意手动的话。

2. 广告平台的选择 
我以三个平台为例子吧:万普,有米,桔子。 
这里我强调的是,我不做广告,我不是要推荐这三个平台,只是以三个平台为例子。同时,我还要骂这些广告平台,拖款,扣量等等。 
为什么选择这三个平台? 
(1). 万普是单价比较高,应用比较多,收入比较好,很多开发者选择这个平台,但是因为之前推送的用户体验和积分墙问题,被很多市场封杀,很典型。 
(2). 有米,宣传做的好,但是普遍反映收入低,banner广告和积分墙是分开的,所以banner部分可以单独拿出来,发布到一些要求严格的市场。 
(3). 桔子,暂时也不大了解,有积分墙,貌似打款还算比较积极,很多新平台开始都很积极(随便挑了个新平台陪衬陪衬吧) 
有人说,使用聚合呀,能够使用不同的广告平台,我觉得这和本文讨论是完全不同的两个问题,此处省略五千字。

3. 集成架构 
在讨论集成架构之前,我们必须讨论一下应用和广告的关联方式: 
(1). 多对多的关系,一个广告平台肯定会被嵌入到很多应用中,一个应用往往也需要发布多个广告平台的版本。 
(2). 一对多的关系,这一条是和第一条矛盾的,但是,广告平台的sdk本身就是解决了嵌入到各个应用的问题,而且真要考虑多对多的方案,会很麻烦而且无太大价值,所以我们的重点是,一个应用发布多个广告平台的版本。 
(3). 先广告,后应用,再后广告平台。意思是,一开始就考虑广告的集成,但是仅仅是空白占位,什么地方显示banner,要不要在哪里显示个应用推荐,留个空方法会接口;然后开

发应用;应用完成之后,在考虑如何集成不同的广告平台,根据不同的平台重写不同的广告占位,或者是以不同的广告形式展示广告。 
在这几个考虑的前提下,我画出如下的集成架构图:

Android App应用之发布各广告平台版本

这个架构图是系列应用的一个例子,不仅每个应用能发布多个广告版本,而且一个基库能封装定制出多个应用,这应该是一个比较典型的例子。

4. 举例


我已经把这个思路应用在world项目中了,参考地址:https://github.com/openproject/world2 
而且经过验证,效果还不错。 
当然,具体的广告占位和覆写,我就在此略去,你也可以参考上面地址的代码。

5. 编译的问题 
针对不同的广告平台,我们需要对自动编译打包脚本做一些修改。 
(1). 三层工程使用ANT编译的问题:R.java文件的生成和资源打包的问题。 
强调这个问题,主要是提醒注意一下别搞错了。 
R.java的生成,三层工程则要生成3次(build.xml):


        generating R.java for project to dir gen (using aapt) ... 
        
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        

        generating R.java for wap library project to dir gen (using aapt) ... 
        
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        

        generating R.java for library to dir gen (using aapt) ... 
        
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        

资源打包也是如此,要特别注意资源文件夹的顺序:


        packaging resource (include res, assets, AndroidManifest.xml, etc.) to res.zip ... 
        
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        

(2). 多渠道打包编译脚本(build.sh)


#!/bin/bash

# get the file parent dir
basedir=$(cd "$(dirname "$0")";pwd)

# get project name by dir name
project=$(echo $basedir | awk -F "/" '{print $NF}')
project=${project/\.*/}

# enter the right parent dir
cd $basedir

#markets="waps google official appchina gfan qq nduo feiliu 3g 360 zhuamob baidu sohu 163 samsung coolmart meizu moto liantong iandroid imobile xiaomi nearme dev"
markets="mumayi eo dev"
for market in $markets
do
    echo packaging $project.v2.1_$market.apk ...
    sed -i "s/\(android:value=\)\"\(.*\)\"\( android:name=\"UMENG_CHANNEL\"\)/\1\"$market\"\3/g" AndroidManifest.xml
    sed -i "s/\(android:value=\)\"\(.*\)\"\( android:name=\"YOUMI_CHANNEL\"\)/\1\"$market\"\3/g" AndroidManifest.xml
    sed -i "s/\(android:value=\)\"\(.*\)\"\( android:name=\"WAPS_PID\"\)/\1\"$market\"\3/g" AndroidManifest.xml
    ant -Dapk-name=$project -Dapk-version=v2.1 -Dapk-market=$market
done

这两个脚本是放在app.waps下执行,为了通用方便,可以放在某个地方,然后使用ln命令建立一个软链接也可以。

6. 小结

本文可以说是炒剩饭,新瓶装旧酒,所以,很多地方都是一言带过,如果觉得思维有些跳跃的话,呵呵,请阅读前面相关的文章。

本文就是用之前的知识解决把应用打包多个广告平台版本的问题,分享了一些注意的地方,希望有所帮助。

版权声明:本文为博主原创文章,未经博主允许不得转载。

posted @ 2014-05-30 10:54  leansmall  阅读(146)  评论(0编辑  收藏  举报