cocos2dx開發的在android平臺下運行的程序,是以一個.so用戶庫文件提供給JAVA層調用。因此咱們在JAVA層實現檢查更新,下載最新庫文件,並跳過加載原來庫文件,加載新庫文件便可。java
1. 首先,在AndroidManifest.xml裏新增一個activity,以供執行更新。android
<!-- 插入一個執行下載更新的activity --> <activity android:name="com.guo.UpdateActivity" android:label="@string/app_name" android:screenOrientation="landscape" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:configChanges="orientation"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
2. 更新的流程主要是:版本檢查-->下載更新->加載新.so文件。服務器
a. 版本檢查:在版本放出去的時候本地加入一個更新配置文件。如:架構
<?xml version="1.0" encoding="utf-8"?> <update> <!--是否開放此功能,1:是,其餘:否--> <enable>1</enable> <!--當前版本--> <version>1.0.0.1</version> <!--版本檢查URL--> <versionCheckUrl>http://xxxxxx/update.plist</versionCheckUrl> </update>
經過配置的檢查地址 http://xxxxxx/update.plist,去獲取服務器最新的版本號 。 update.plist以下:
app
<?xml version="1.0" encoding="utf-8"?> <update> <!--是否開放此功能,1:是,其餘:否--> <enable>1</enable> <!--服務器最新版本--> <version>1.0.0.2</version> <!--文件下載地址: URL + 版本號 + "/" + CPU_ABI + "/" + XXX.so , 這裏只配置前面部分--> <downloadUrl>http://192.168.30.124/test/</downloadUrl> <!--文件MD5值,爲下載校驗用--> <md5>000000000000000000000</md5> </update>
b.下載更新: 若是有更新根據規則,選擇適合本身CPU架構的庫文件下載。下載完成以後進行完整性校驗。ide
3. 加載.so文件this
修改原來的Cocos2dxActivity.java文件,加入跳過加載原來庫文件邏輯。spa
public final static String FLAG_SKIP_LOAD_LIB = "key-isSkipLoadLib";
protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); Boolean isSkipLoadLib = false; if(savedInstanceState != null) isSkipLoadLib = savedInstanceState.getBoolean(FLAG_SKIP_LOAD_LIB); if(!isSkipLoadLib) onLoadNativeLibraries(); sContext = this; this.mHandler = new Cocos2dxHandler(this); Cocos2dxHelper.init(this); this.init(); if (mVideoHelper == null) { mVideoHelper = new Cocos2dxVideoHelper(this, mFrameLayout); } }
4. 代碼太多,直接上連接:源碼code
5. 還差ZIP壓縮下載和MD5校驗。xml