用Android studio搭建沃商店SDK任意支付的配置
第一次接SDK踩了不少坑,分享出來,如有錯(cuò)誤或者不足之處,希望大家理解和指出!
一.????配置android studio相關(guān)環(huán)境
出現(xiàn)問題可自行百度。如果以前配置過eclipce的環(huán)境要小心,android studio的環(huán)境最好用自帶的相關(guān)SDK和NDK配置android studio環(huán)境。安卓環(huán)境的成功就是SDK成功的一半啊!
?
二.?? 配置沃SDK的androidManifest.xml文件
注意:沃的SDK最好要下載新的,不然會支付不成功,或者其他找不到類什么的問題,接的沃SDK版本是unipaysdk_4.1.3的任意支付,此版本的SDK缺少
<activity android:name="com.unicom.wostore.unipay.paysecurity.PayActivity" android:launchMode="standard" android:exported="true" android:configChanges="screenSize|orientation"> </activity> 這些配置,會支付失敗,加上即可!跟著沃SDK自帶的gameSimple的manifest.xml文件來,替換成相應(yīng)的即可。如果遇到首行的package等出錯(cuò)可以先把package,versionCode,versionName注釋掉,這里涉及到命名相關(guān)會在build.gradle里面做處理的,如果不注釋掉,點(diǎn)擊該頁的下方Merged Manifest里面可以查看錯(cuò)誤,然后看看怎么處理吧!
?
三.? 配置build.gradle
工程中有2個(gè)build.gradle,一個(gè)在app內(nèi)部,一個(gè)在外部。
1.????app外部的build.gradle文件。如果提示Could not find method android() for arguments xxxxx等等一堆,就把全部注釋掉,因?yàn)闀赼pp的內(nèi)部build.gradle文件里面配置它。
2.????注意紅色箭頭的這個(gè)
版本如果陳舊了可能會提示一大堆AGPBI: {"kind":"errror","text":"warning:xxxx等等信息,這個(gè)是在打包到手機(jī)的時(shí)候會出現(xiàn),如果能打包可以不管,影響了打包就要升級了。
3.????app內(nèi)部的build.gradle文件。上半部分大概這樣子
從上往下依次是,你的密匙文件,這個(gè)不明白的可以百度。然后是sdk版本,最好是多安裝幾個(gè),畢竟測試手機(jī)系統(tǒng)都不會太新,
順著黑色的箭頭,點(diǎn)擊下載按鈕
大概這樣子,勾選你要下載的版本然后下載。如果已經(jīng)下載的版本點(diǎn)擊藍(lán)色的勾勾,好像會刪除你安裝的版本。compileSdkVersion是設(shè)置編譯時(shí)用的安卓版本,buildToolsVersion是設(shè)置編譯時(shí)的使用的構(gòu)建工具版本。然后再看黑色箭頭部分,這個(gè)是默認(rèn)配置,其實(shí)可以不用寫uniplay的名字,后面會提到。uniplay就是我命名的沃商店的名字。然后看白色箭頭在abiFilters中導(dǎo)入.so文件。黃色箭頭也是AGPBI: {"kind":"errror","text":"warning:xxxx等等信息,導(dǎo)致打包的時(shí)候出現(xiàn)問題加上的。中間部分
寫上uniplay的配置,dirs對應(yīng)的libs就是存放庫的地方(只是存放并沒有導(dǎo)入)。
最后的就是導(dǎo)庫了。由于jar包都是放在libs里面的,如果遇到同名的jar包直接改名字,然后在導(dǎo)入的地方改成同名就行了。build的后面部分
如果是通用的就直接compile files(“xxxx.jar”),是某一個(gè)SDK用的庫就得在compile前面加上包的名字了。
如果是為了以后升級SDK方便不出問題,那么就得在當(dāng)前的沃文件下面新建libs來裝庫了,那樣改加載路徑就行了,達(dá)到各自管理各自庫目的,互不干擾!
然后如果是多渠道的調(diào)試,怎么也得來個(gè)啟動項(xiàng)吧!看這兒
點(diǎn)開后會看到
再次點(diǎn)開
選擇debug,如果沒錯(cuò)就可以調(diào)試輸出了!
當(dāng)然如果遇到這種情況
檢查你的這個(gè),把版本升高或者clear build大法,刪除 .gradle 重啟什么的!最好的方式是,查看SKD的demo是好多,照寫試試!
然后可能新坑來了,對于是android7.0的系統(tǒng)。點(diǎn)擊游戲最后發(fā)現(xiàn)可能出現(xiàn)一下錯(cuò)誤
你的.so文件動態(tài)加載出錯(cuò)了,在你的繼承unicomapplicationwrapper中新增.so的加載方式
@Overridepublic void onCreate() {super.onCreate();}@Overrideprotected void attachBaseContext(Context context) {if (mApplication == null) {File cache = null;File wechart_cache =null;File qq_cache=null;try {InputStream is = context.getAssets().open("libme_unipay.so");cache = new File(context.getFilesDir(),"libme_unipay.so");InputStream wechart_is = context.getAssets().open("libonlywechat_plugin.so");wechart_cache = new File(context.getFilesDir(),"libonlywechat_plugin.so");//InputStream qq_is = context.getAssets().open("libonlyqq_plugin.so");qq_cache = new File(context.getFilesDir(),"libonlyqq_plugin.so");//if (!cache.exists()) {cache.createNewFile();}if (!wechart_cache.exists()) {wechart_cache.createNewFile();}if (!qq_cache.exists()) {qq_cache.createNewFile();}FileOutputStream fos = new FileOutputStream(cache);int length = 0;byte[] buffer = new byte[8192];while ((length = is.read(buffer)) > 0) {fos.write(buffer, 0, length);}fos.flush();fos.close();is.close();fos = new FileOutputStream(wechart_cache);length = 0;buffer = new byte[8192];while ((length = wechart_is.read(buffer)) > 0) {fos.write(buffer, 0, length);}fos.flush();fos.close();wechart_is.close();fos = new FileOutputStream(qq_cache);length = 0;buffer = new byte[8192];while ((length = qq_is.read(buffer)) > 0) {fos.write(buffer, 0, length);}fos.flush();fos.close();qq_is.close();} catch (IOException e) {e.printStackTrace();}if (cache != null) {System.load(cache.getAbsolutePath());unipay.install_native(this, context, context.getPackageName(), context.getApplicationInfo().sourceDir, "unipay", "unicom_classez.jar");}if(wechart_cache!=null){System.load(wechart_cache.getAbsolutePath());}if(qq_cache!=null){System.load(qq_cache.getAbsolutePath());}this.loadApplication(context);}super.attachBaseContext(context);} 然后把.so文件從armeabi文件拷貝到當(dāng)前sdk文件目錄下的assets文件目錄下,這樣差不多就能運(yùn)行起來了。?之后又后發(fā)現(xiàn)導(dǎo)航欄遮擋游戲邊緣了,好吧7.0的系統(tǒng)對導(dǎo)航欄改動有點(diǎn)大。
改動了下設(shè)置方式,可以全屏了!但是游戲畫布被縮小了,之后經(jīng)過多次實(shí)驗(yàn)發(fā)現(xiàn),進(jìn)入游戲之前把導(dǎo)航欄手動關(guān)閉,游戲就是滿蕩蕩的全屏,目前就只有這樣了!希望有老鐵去研究下。
正常進(jìn)入游戲后,點(diǎn)擊主頁按鈕,然后返回游戲,發(fā)現(xiàn)游戲黑屏了!或者是去充值跳轉(zhuǎn)回來也黑屏了!。經(jīng)過各種折磨后發(fā)現(xiàn),點(diǎn)擊回到游戲后并沒有調(diào)用cocos2dxActivity的onResume()函數(shù),.........!然后我就想了個(gè)不是辦法的辦法,在調(diào)用onPause()函數(shù)的里面加個(gè)函數(shù)判斷
String version=android.os.Build.VERSION.RELEASE; if(instance.getChanelId().equals("103")&&Integer.parseInt(version.substring(0,1))>6) { Cocos2dxHelper.pauseBackgroundMusic(); Cocos2dxHelper.pauseAllEffects();? Log.e("third","目前沃商店的處理,不暫停游戲"); return false;
}
return true;
如果是沃渠道103且版本大于6,就不執(zhí)行 mGLSurfaceView.onPause(); 函數(shù)了,當(dāng)然你要處理音效的暫停之類的。此方法對于格斗游戲之類的即時(shí)性強(qiáng)的游戲就不適合了,切換回來可能都被打死了!
然后大致瀏覽下文件目錄吧
SDK目錄如下
黑色箭頭是存放資源的,把gameSimple的資源放入到assets里面,而藍(lán)色箭頭是存放圖標(biāo)的,紅色箭頭指向就是java代碼了。至于怎么寫就按照demo來吧!不過公司的是有前輩封裝了一個(gè)簡單的框架,所以具體就不展示了
完整目錄結(jié)構(gòu)
總結(jié)
以上是生活随笔為你收集整理的用Android studio搭建沃商店SDK任意支付的配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三星+android+7.0+自动纠正单
- 下一篇: Android查看真机布局,androi