Android筆記之:App應(yīng)用之發(fā)布各廣告平臺(tái)版本的詳解
Android的廣告平臺(tái)是很多的,各市場(chǎng)對(duì)各平臺(tái)的接受程度是不一樣的,Android的開(kāi)發(fā)者如果想集成廣告基本要考慮下面兩個(gè)問(wèn)題:
(1)集成什么廣告,會(huì)賺錢?
(2)集成什么廣告,不會(huì)被市場(chǎng)拒絕?
最終的結(jié)果往往是折中的。
第一個(gè)問(wèn)題是廣告平臺(tái)的判斷問(wèn)題,我沒(méi)有發(fā)言權(quán)去評(píng)論,本文主要是針對(duì)第二個(gè)問(wèn)題展開(kāi)。
解決方案就是打包應(yīng)用的不同廣告平臺(tái)版本,本文接下來(lái)逐一展開(kāi)相關(guān)話題。
1. 基礎(chǔ)
本文其實(shí)是針對(duì)《Android筆記之:App模塊化及工程擴(kuò)展的應(yīng)用》和《Android筆記之:App自動(dòng)化之使用Ant編譯項(xiàng)目多渠道打包的使用詳解》的一個(gè)擴(kuò)展和應(yīng)用場(chǎng)景。
所以當(dāng)然也需要這兩篇文章的基礎(chǔ):
(1). Android類庫(kù)的應(yīng)用
(2). 因?yàn)橐Y(jié)合自動(dòng)編譯各市場(chǎng)版本,所以要更新編譯打包的腳本,當(dāng)然這一步是可選的,如果你愿意手動(dòng)的話。
2. 廣告平臺(tái)的選擇
我以三個(gè)平臺(tái)為例子吧:萬(wàn)普,有米,桔子。
這里我強(qiáng)調(diào)的是,我不做廣告,我不是要推薦這三個(gè)平臺(tái),只是以三個(gè)平臺(tái)為例子。同時(shí),我還要罵這些廣告平臺(tái),拖款,扣量等等。
為什么選擇這三個(gè)平臺(tái)?
(1). 萬(wàn)普是單價(jià)比較高,應(yīng)用比較多,收入比較好,很多開(kāi)發(fā)者選擇這個(gè)平臺(tái),但是因?yàn)橹巴扑偷挠脩趔w驗(yàn)和積分墻問(wèn)題,被很多市場(chǎng)封殺,很典型。
(2). 有米,宣傳做的好,但是普遍反映收入低,banner廣告和積分墻是分開(kāi)的,所以banner部分可以單獨(dú)拿出來(lái),發(fā)布到一些要求嚴(yán)格的市場(chǎng)。
(3). 桔子,暫時(shí)也不大了解,有積分墻,貌似打款還算比較積極,很多新平臺(tái)開(kāi)始都很積極(隨便挑了個(gè)新平臺(tái)陪襯陪襯吧)
有人說(shuō),使用聚合呀,能夠使用不同的廣告平臺(tái),我覺(jué)得這和本文討論是完全不同的兩個(gè)問(wèn)題,此處省略五千字。
3. 集成架構(gòu)
在討論集成架構(gòu)之前,我們必須討論一下應(yīng)用和廣告的關(guān)聯(lián)方式:
(1). 多對(duì)多的關(guān)系,一個(gè)廣告平臺(tái)肯定會(huì)被嵌入到很多應(yīng)用中,一個(gè)應(yīng)用往往也需要發(fā)布多個(gè)廣告平臺(tái)的版本。
(2). 一對(duì)多的關(guān)系,這一條是和第一條矛盾的,但是,廣告平臺(tái)的sdk本身就是解決了嵌入到各個(gè)應(yīng)用的問(wèn)題,而且真要考慮多對(duì)多的方案,會(huì)很麻煩而且無(wú)太大價(jià)值,所以我們的重點(diǎn)是,一個(gè)應(yīng)用發(fā)布多個(gè)廣告平臺(tái)的版本。
(3). 先廣告,后應(yīng)用,再后廣告平臺(tái)。意思是,一開(kāi)始就考慮廣告的集成,但是僅僅是空白占位,什么地方顯示banner,要不要在哪里顯示個(gè)應(yīng)用推薦,留個(gè)空方法會(huì)接口;然后開(kāi)發(fā)應(yīng)用;應(yīng)用完成之后,在考慮如何集成不同的廣告平臺(tái),根據(jù)不同的平臺(tái)重寫不同的廣告占位,或者是以不同的廣告形式展示廣告。
在這幾個(gè)考慮的前提下,我畫出如下的集成架構(gòu)圖:
這個(gè)架構(gòu)圖是系列應(yīng)用的一個(gè)例子,不僅每個(gè)應(yīng)用能發(fā)布多個(gè)廣告版本,而且一個(gè)基庫(kù)能封裝定制出多個(gè)應(yīng)用,這應(yīng)該是一個(gè)比較典型的例子。
4. 舉例
我已經(jīng)把這個(gè)思路應(yīng)用在world項(xiàng)目中了,參考地址:https://github.com/openproject/world2
而且經(jīng)過(guò)驗(yàn)證,效果還不錯(cuò)。
當(dāng)然,具體的廣告占位和覆寫,我就在此略去,你也可以參考上面地址的代碼。
5. 編譯的問(wèn)題
針對(duì)不同的廣告平臺(tái),我們需要對(duì)自動(dòng)編譯打包腳本做一些修改。
(1). 三層工程使用ANT編譯的問(wèn)題:R.java文件的生成和資源打包的問(wèn)題。
強(qiáng)調(diào)這個(gè)問(wèn)題,主要是提醒注意一下別搞錯(cuò)了。
R.java的生成,三層工程則要生成3次(build.xml):
<echo>generating R.java for project to dir gen (using aapt) ... </echo>
<exec executable="aapt">
<arg value="package" />
<arg value="-m" />
<arg value="-J" />
<arg value="gen" />
<arg value="-M" />
<arg value="AndroidManifest.xml" />
<arg value="-S" />
<arg value="res" />
<arg value="-S" />
<arg value="../baseworld2.waps/res" />
<arg value="-S" />
<arg value="../baseworld2/res" />
<arg value="-I" />
<arg value="${android-jar}" />
<arg value="--auto-add-overlay" />
</exec>
<echo>generating R.java for wap library project to dir gen (using aapt) ... </echo>
<exec executable="aapt">
<arg value="package" />
<arg value="-m" />
<arg value="--non-constant-id" />
<arg value="--auto-add-overlay" />
<arg value="-J" />
<arg value="gen" />
<arg value="-M" />
<arg value="../baseworld2.waps/AndroidManifest.xml" />
<arg value="-S" />
<arg value="res" />
<arg value="-S" />
<arg value="../baseworld2.waps/res" />
<arg value="-S" />
<arg value="../baseworld2/res" />
<arg value="-I" />
<arg value="${android-jar}" />
</exec>
<echo>generating R.java for library to dir gen (using aapt) ... </echo>
<exec executable="aapt">
<arg value="package" />
<arg value="-m" />
<arg value="--non-constant-id" />
<arg value="--auto-add-overlay" />
<arg value="-J" />
<arg value="gen" />
<arg value="-M" />
<arg value="../baseworld2/AndroidManifest.xml" />
<arg value="-S" />
<arg value="res" />
<arg value="-S" />
<arg value="../baseworld2.waps/res" />
<arg value="-S" />
<arg value="../baseworld2/res" />
<arg value="-I" />
<arg value="${android-jar}" />
</exec>
資源打包也是如此,要特別注意資源文件夾的順序:
<echo>packaging resource (include res, assets, AndroidManifest.xml, etc.) to res.zip ... </echo>
<exec executable="aapt">
<arg value="package" />
<arg value="-f" />
<arg value="-M" />
<arg value="AndroidManifest.xml" />
<arg value="-S" />
<arg value="res" />
<arg value="-S" />
<arg value="../baseworld2.waps/res" />
<arg value="-S" />
<arg value="../baseworld2/res" />
<arg value="-A" />
<arg value="assets" />
<arg value="-I" />
<arg value="${android-jar}" />
<arg value="-F" />
<arg value="bin/res.zip" />
<arg value="--auto-add-overlay" />
</exec>
(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
這兩個(gè)腳本是放在app.waps下執(zhí)行,為了通用方便,可以放在某個(gè)地方,然后使用ln命令建立一個(gè)軟鏈接也可以。
6. 小結(jié)
本文可以說(shuō)是炒剩飯,新瓶裝舊酒,所以,很多地方都是一言帶過(guò),如果覺(jué)得思維有些跳躍的話,呵呵,請(qǐng)閱讀前面相關(guān)的文章。
本文就是用之前的知識(shí)解決把應(yīng)用打包多個(gè)廣告平臺(tái)版本的問(wèn)題,分享了一些注意的地方,希望有所幫助。
- Android實(shí)現(xiàn)加載廣告圖片和倒計(jì)時(shí)的開(kāi)屏布局
- Android利用ViewPager實(shí)現(xiàn)滑動(dòng)廣告板實(shí)例源碼
- Android實(shí)現(xiàn)Banner界面廣告圖片循環(huán)輪播(包括實(shí)現(xiàn)手動(dòng)滑動(dòng)循環(huán))
- Android自定義View實(shí)現(xiàn)廣告信息上下滾動(dòng)效果
- Android實(shí)現(xiàn)廣告圖片輪播效果
- Android編程實(shí)現(xiàn)ListView頭部ViewPager廣告輪詢圖效果
- Android 破解視頻App去除廣告功能詳解及解決辦法總結(jié)
- Android新聞廣告條滾動(dòng)效果
- Android 應(yīng)用啟動(dòng)歡迎界面廣告的實(shí)現(xiàn)實(shí)例
- Android開(kāi)啟新線程實(shí)現(xiàn)電子廣告牌項(xiàng)目
相關(guān)文章
android自動(dòng)工具類TextUtils使用詳解
這篇文章主要介紹了android自動(dòng)工具類TextUtils的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10在Android app中實(shí)現(xiàn)九(n)宮格圖片連續(xù)滑動(dòng)效果
這篇文章主要介紹了在Android app中實(shí)現(xiàn)九(n)宮格圖片連續(xù)滑動(dòng)效果的方法,作者舉了鳳凰新聞應(yīng)用的例子,同理功能圖標(biāo)也可以利用這樣的滑動(dòng)效果,需要的朋友可以參考下2016-02-02Android基于OkHttpUtils網(wǎng)絡(luò)請(qǐng)求的二次封裝
這篇文章主要介紹了Android基于OkHttpUtils網(wǎng)絡(luò)請(qǐng)求的二次封裝,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03