用Android studio搭建沃商店SDK任意支付的配置
第一次接SDK踩了不少坑,分享出來,如有錯誤或者不足之處,希望大家理解和指出!
一.????配置android studio相關環境
出現問題可自行百度。如果以前配置過eclipce的環境要小心,android studio的環境最好用自帶的相關SDK和NDK配置android studio環境。安卓環境的成功就是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文件來,替換成相應的即可。如果遇到首行的package等出錯可以先把package,versionCode,versionName注釋掉,這里涉及到命名相關會在build.gradle里面做處理的,如果不注釋掉,點擊該頁的下方Merged Manifest里面可以查看錯誤,然后看看怎么處理吧!
?
三.? 配置build.gradle
工程中有2個build.gradle,一個在app內部,一個在外部。
1.????app外部的build.gradle文件。如果提示Could not find method android() for arguments xxxxx等等一堆,就把全部注釋掉,因為會在app的內部build.gradle文件里面配置它。
2.????注意紅色箭頭的這個
版本如果陳舊了可能會提示一大堆AGPBI: {"kind":"errror","text":"warning:xxxx等等信息,這個是在打包到手機的時候會出現,如果能打包可以不管,影響了打包就要升級了。
3.????app內部的build.gradle文件。上半部分大概這樣子
從上往下依次是,你的密匙文件,這個不明白的可以百度。然后是sdk版本,最好是多安裝幾個,畢竟測試手機系統都不會太新,
順著黑色的箭頭,點擊下載按鈕
大概這樣子,勾選你要下載的版本然后下載。如果已經下載的版本點擊藍色的勾勾,好像會刪除你安裝的版本。compileSdkVersion是設置編譯時用的安卓版本,buildToolsVersion是設置編譯時的使用的構建工具版本。然后再看黑色箭頭部分,這個是默認配置,其實可以不用寫uniplay的名字,后面會提到。uniplay就是我命名的沃商店的名字。然后看白色箭頭在abiFilters中導入.so文件。黃色箭頭也是AGPBI: {"kind":"errror","text":"warning:xxxx等等信息,導致打包的時候出現問題加上的。中間部分
寫上uniplay的配置,dirs對應的libs就是存放庫的地方(只是存放并沒有導入)。
最后的就是導庫了。由于jar包都是放在libs里面的,如果遇到同名的jar包直接改名字,然后在導入的地方改成同名就行了。build的后面部分
如果是通用的就直接compile files(“xxxx.jar”),是某一個SDK用的庫就得在compile前面加上包的名字了。
如果是為了以后升級SDK方便不出問題,那么就得在當前的沃文件下面新建libs來裝庫了,那樣改加載路徑就行了,達到各自管理各自庫目的,互不干擾!
然后如果是多渠道的調試,怎么也得來個啟動項吧!看這兒
點開后會看到
再次點開
選擇debug,如果沒錯就可以調試輸出了!
當然如果遇到這種情況
檢查你的這個,把版本升高或者clear build大法,刪除 .gradle 重啟什么的!最好的方式是,查看SKD的demo是好多,照寫試試!
然后可能新坑來了,對于是android7.0的系統。點擊游戲最后發現可能出現一下錯誤
你的.so文件動態加載出錯了,在你的繼承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文件拷貝到當前sdk文件目錄下的assets文件目錄下,這樣差不多就能運行起來了。?之后又后發現導航欄遮擋游戲邊緣了,好吧7.0的系統對導航欄改動有點大。
改動了下設置方式,可以全屏了!但是游戲畫布被縮小了,之后經過多次實驗發現,進入游戲之前把導航欄手動關閉,游戲就是滿蕩蕩的全屏,目前就只有這樣了!希望有老鐵去研究下。
正常進入游戲后,點擊主頁按鈕,然后返回游戲,發現游戲黑屏了!或者是去充值跳轉回來也黑屏了!。經過各種折磨后發現,點擊回到游戲后并沒有調用cocos2dxActivity的onResume()函數,.........!然后我就想了個不是辦法的辦法,在調用onPause()函數的里面加個函數判斷
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,就不執行 mGLSurfaceView.onPause(); 函數了,當然你要處理音效的暫停之類的。此方法對于格斗游戲之類的即時性強的游戲就不適合了,切換回來可能都被打死了!
然后大致瀏覽下文件目錄吧
SDK目錄如下
黑色箭頭是存放資源的,把gameSimple的資源放入到assets里面,而藍色箭頭是存放圖標的,紅色箭頭指向就是java代碼了。至于怎么寫就按照demo來吧!不過公司的是有前輩封裝了一個簡單的框架,所以具體就不展示了
完整目錄結構
總結
以上是生活随笔為你收集整理的用Android studio搭建沃商店SDK任意支付的配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三星+android+7.0+自动纠正单
- 下一篇: android sina oauth2.