亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

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

2020-04-11 12:26:49
字體:
來源:轉載
供稿:網友

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩在线视频一区二区| 伊人一区二区三区久久精品| 欧美在线影院在线视频| 性色av一区二区三区| 91人人爽人人爽人人精88v| 久久久久久成人精品| 成人午夜激情免费视频| 夜夜躁日日躁狠狠久久88av| 日韩精品极品在线观看播放免费视频| 欧美视频在线观看 亚洲欧| 91在线观看欧美日韩| 成人精品在线视频| 日韩中文字幕国产精品| 国产精品极品在线| 欧美性xxxxx极品娇小| 中文字幕亚洲欧美在线| 日韩综合中文字幕| 秋霞成人午夜鲁丝一区二区三区| 91性高湖久久久久久久久_久久99| 日韩在线观看免费全集电视剧网站| 国产精品扒开腿爽爽爽视频| 久久久久久久久中文字幕| 国产精品美女主播在线观看纯欲| 国产欧美日韩最新| 日韩av在线一区二区| 亚洲色图五月天| 亚洲最大的成人网| 亚洲人成欧美中文字幕| 欧美激情国内偷拍| 亚洲天堂精品在线| 日韩电影免费在线观看| 日韩成人av在线播放| 亚洲欧美色图片| 5278欧美一区二区三区| 亚洲欧洲在线视频| 国产第一区电影| 亚洲精品小视频在线观看| 国产成人精品久久| 欧美大尺度激情区在线播放| 亚洲欧美综合区自拍另类| 欧美一区二区色| 91亚洲精品一区二区| 国产精品视频白浆免费视频| 大胆欧美人体视频| 欧美丝袜一区二区三区| 国产精品福利片| 91深夜福利视频| 日韩中文字幕在线观看| 国产精品人成电影| 亚洲第一精品久久忘忧草社区| 国产精品白嫩美女在线观看| 亚洲aa中文字幕| 欧美特黄级在线| 国产日韩欧美视频| 97成人在线视频| 国产亚洲成精品久久| 亚洲最大成人在线| 久久精品视频网站| 91精品国产免费久久久久久| 久久综合伊人77777蜜臀| 亚洲国产精品va| 91色p视频在线| 精品网站999www| 精品久久久免费| 国产精品香蕉在线观看| 日本韩国欧美精品大片卡二| 热99在线视频| 亚洲嫩模很污视频| 欧美国产日韩一区二区在线观看| 中文字幕在线观看日韩| 日韩视频一区在线| 国产精品中文字幕久久久| 久久精品国产综合| 欧美日韩成人免费| 5252色成人免费视频| 伊人久久男人天堂| 久久精品男人天堂| 国产精品igao视频| 欧美成人午夜激情视频| 日韩精品视频中文在线观看| 视频在线观看一区二区| 亚洲精品美女在线观看播放| 日韩中文字幕免费视频| 欧美精品aaa| 国产成人97精品免费看片| 亚洲精品中文字幕有码专区| 一区二区福利视频| 午夜免费在线观看精品视频| 久久韩国免费视频| 久久久久久网址| 国产精品美女呻吟| 国产色综合天天综合网| 欧美国产日韩一区二区在线观看| 欧美精品国产精品日韩精品| 这里只有精品在线观看| 在线观看精品国产视频| 午夜精品一区二区三区在线播放| 欧美亚洲视频在线看网址| 久久久久中文字幕2018| 久久精品国产成人| 日韩精品www| 国产999精品视频| 亚洲欧美国产精品久久久久久久| 欧美香蕉大胸在线视频观看| 日韩视频永久免费观看| 国产福利精品av综合导导航| 国产成人拍精品视频午夜网站| 亚洲日本欧美中文幕| 主播福利视频一区| 日韩欧美国产激情| 海角国产乱辈乱精品视频| 高跟丝袜一区二区三区| 中文字幕亚洲自拍| 欧美激情一区二区三级高清视频| 欧美在线影院在线视频| 日韩精品极品视频免费观看| 亚洲xxxx妇黄裸体| 大量国产精品视频| 久久久亚洲天堂| 国产精品香蕉av| 91九色蝌蚪国产| 91精品国产91久久久久久最新| 91最新在线免费观看| 97视频在线观看成人| 国产精品第1页| 中文国产成人精品久久一| 懂色aⅴ精品一区二区三区蜜月| 国产精品黄页免费高清在线观看| 亚洲欧美中文日韩在线v日本| 日韩免费在线观看视频| 日韩视频精品在线| 北条麻妃在线一区二区| 亚洲国产日韩欧美在线动漫| 九九久久综合网站| 国产99久久久欧美黑人| 亚洲香蕉伊综合在人在线视看| 国产精品男人爽免费视频1| 国产精品成人免费电影| 日韩精品中文字幕久久臀| 久久久久国产精品www| 91精品久久久久久| 欧美日韩第一视频| 日韩av中文字幕在线免费观看| 欧美诱惑福利视频| 欧美国产日韩一区| 欧美另类极品videosbest最新版本| 亚洲精美色品网站| 国产日韩欧美在线观看| 2021久久精品国产99国产精品| 国产成人亚洲综合91精品| 欧美黑人巨大xxx极品| 亚洲精品456在线播放狼人| 91精品视频在线播放| 精品久久久久久久久久久久久久| 91久久久久久国产精品| 亚洲免费av片| 日韩电影免费在线观看中文字幕| 欧美尤物巨大精品爽| 精品国产一区二区三区久久狼黑人| 国产日韩精品电影| 26uuu亚洲国产精品| 亚洲欧美国产视频| 69久久夜色精品国产7777| 日韩精品中文字幕在线播放|