Android筆記之:App應用之釋出各廣告平臺版本的詳解

Android筆記之:App應用之釋出各廣告平臺版本的詳解
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

Android的廣告平臺是很多的,各市場對各平臺的接受程度是不一樣的,Android的開發者如果想整合廣告基本要考慮下面兩個問題:
(1)整合什麼廣告,會賺錢?
(2)整合什麼廣告,不會被市場拒絕?
最終的結果往往是折中的。
第一個問題是廣告平臺的判斷問題,我沒有發言權去評論,本文主要是針對第二個問題展開。
解決方案就是打包應用的不同廣告平臺版本,本文接下來逐一展開相關話題。

1. 基礎
本文其實是針對《Android筆記之:App模組化及工程擴充套件的應用》和《Android筆記之:App自動化之使用Ant編譯專案多渠道打包的使用詳解》的一個擴充套件和應用場景。
所以當然也需要這兩篇文章的基礎:
(1). Android類庫的應用
(2). 因為要結合自動編譯各市場版本,所以要更新編譯打包的指令碼,當然這一步是可選的,如果你願意手動的話。

2. 廣告平臺的選擇
我以三個平臺為例子吧:萬普,有米,桔子。
這裡我強調的是,我不做廣告,我不是要推薦這三個平臺,只是以三個平臺為例子。同時,我還要罵這些廣告平臺,拖款,扣量等等。
為什麼選擇這三個平臺?
(1). 萬普是單價比較高,應用比較多,收入比較好,很多開發者選擇這個平臺,但是因為之前推送的使用者體驗和積分牆問題,被很多市場封殺,很典型。
(2). 有米,宣傳做的好,但是普遍反映收入低,banner廣告和積分牆是分開的,所以banner部分可以單獨拿出來,釋出到一些要求嚴格的市場。
(3). 桔子,暫時也不大瞭解,有積分牆,貌似打款還算比較積極,很多新平臺開始都很積極(隨便挑了個新平臺陪襯陪襯吧)
有人說,使用聚合呀,能夠使用不同的廣告平臺,我覺得這和本文討論是完全不同的兩個問題,此處省略五千字。

3. 整合架構
在討論整合架構之前,我們必須討論一下應用和廣告的關聯方式:
(1). 多對多的關係,一個廣告平臺肯定會被嵌入到很多應用中,一個應用往往也需要釋出多個廣告平臺的版本。
(2). 一對多的關係,這一條是和第一條矛盾的,但是,廣告平臺的sdk本身就是解決了嵌入到各個應用的問題,而且真要考慮多對多的方案,會很麻煩而且無太大價值,所以我們的重點是,一個應用釋出多個廣告平臺的版本。
(3). 先廣告,後應用,再後廣告平臺。意思是,一開始就考慮廣告的整合,但是僅僅是空白佔位,什麼地方顯示banner,要不要在哪裡顯示個應用推薦,留個空方法會介面;然後開發應用;應用完成之後,在考慮如何整合不同的廣告平臺,根據不同的平臺重寫不同的廣告佔位,或者是以不同的廣告形式展示廣告。
在這幾個考慮的前提下,我畫出如下的整合架構圖:

這個架構圖是系列應用的一個例子,不僅每個應用能釋出多個廣告版本,而且一個基庫能封裝定製出多個應用,這應該是一個比較典型的例子。

4. 舉例
我已經把這個思路應用在world專案中了,參考地址:https://github.com/openproject/world2
而且經過驗證,效果還不錯。
當然,具體的廣告佔位和覆寫,我就在此略去,你也可以參考上面地址的程式碼。

5. 編譯的問題
針對不同的廣告平臺,我們需要對自動編譯打包指令碼做一些修改。
(1). 三層工程使用ANT編譯的問題:R.java檔案的生成和資源打包的問題。
強調這個問題,主要是提醒注意一下別搞錯了。
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

這兩個指令碼是放在app.waps下執行,為了通用方便,可以放在某個地方,然後使用ln命令建立一個軟連結也可以。

6. 小結
本文可以說是炒剩飯,新瓶裝舊酒,所以,很多地方都是一言帶過,如果覺得思維有些跳躍的話,呵呵,請閱讀前面相關的文章。
本文就是用之前的知識解決把應用打包多個廣告平臺版本的問題,分享了一些注意的地方,希望有所幫助。

您可能感興趣的文章:

Android實現載入廣告圖片和倒計時的開屏佈局Android利用ViewPager實現滑動廣告板例項原始碼Android實現Banner介面廣告圖片迴圈輪播(包括實現手動滑動迴圈)Android自定義View實現廣告資訊上下滾動效果Android實現廣告圖片輪播效果Android程式設計實現ListView頭部ViewPager廣告輪詢圖效果Android 破解視訊App去除廣告功能詳解及解決辦法總結Android新聞廣告條滾動效果Android 應用啟動歡迎介面廣告的實現例項Android開啟新執行緒實現電子廣告牌專案

相關文章

Android 開發 最新文章