Android接入百度自動更新SDK
一:前言
公司的app,上傳到百度應用市場,然後說必須要接入百度的自動更新sdk才能上架,於是從百度官網上去下載jar包,下載的時候必須要帶上資料統計,如果使用自動的jar包,還需要帶上廣告聯盟,坑爹啊,有木有。我下載下來把其他無關的jar包根so檔案刪掉了.把百度的demo也進行精簡了一下.只留下了自動更新必須要用到的.
二:效果圖如下
三:程式碼如下
AutoUpdateActivity.java 程式碼刪的就剩下整個Activity了,其實呼叫百度sdk還挺簡單的,一句話就能搞定,然後再監聽回撥函式.
/** * 百度自動更新 * @author ansen * @create time 2015-11-07 */ public class AutoUpdateActivity extends Activity implements View.OnClickListener { private TextView txt_log; private ProgressDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.autoupdate_main); findViewById(R.id.btn_ui).setOnClickListener(this); findViewById(R.id.btn_silence).setOnClickListener(this); findViewById(R.id.btn_as).setOnClickListener(this); findViewById(R.id.btn_noui).setOnClickListener(this); txt_log = (TextView) findViewById(R.id.txt_log); dialog = new ProgressDialog(this); dialog.setIndeterminate(true); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_ui://UI更新 txt_log.setText(""); dialog.show(); BDAutoUpdateSDK.uiUpdateAction(this, new MyUICheckUpdateCallback()); break; case R.id.btn_silence: txt_log.setText(""); BDAutoUpdateSDK.silenceUpdateAction(this); break; case R.id.btn_as: txt_log.setText(""); dialog.show(); BDAutoUpdateSDK.asUpdateAction(this, new MyUICheckUpdateCallback()); break; case R.id.btn_noui: txt_log.setText(""); dialog.show(); BDAutoUpdateSDK.cpUpdateCheck(this, new MyCPCheckUpdateCallback()); break; } } @Override protected void onDestroy() { dialog.dismiss(); super.onDestroy(); } private class MyUICheckUpdateCallback implements UICheckUpdateCallback { @Override public void onCheckComplete() { dialog.dismiss(); } } private class MyCPCheckUpdateCallback implements CPCheckUpdateCallback { @Override public void onCheckUpdateCallback(AppUpdateInfo info, AppUpdateInfoForInstall infoForInstall) { if(infoForInstall != null && !TextUtils.isEmpty(infoForInstall.getInstallPath())) { txt_log.setText(txt_log.getText() + "\n install info: " + infoForInstall.getAppSName() + ", \nverion=" + infoForInstall.getAppVersionName() + ", \nchange log=" + infoForInstall.getAppChangeLog()); txt_log.setText(txt_log.getText() + "\n we can install the apk file in: " + infoForInstall.getInstallPath()); BDAutoUpdateSDK.cpUpdateInstall(getApplicationContext(), infoForInstall.getInstallPath()); }else if(info != null) { BDAutoUpdateSDK.cpUpdateDownload(AutoUpdateActivity.this, info, new UpdateDownloadCallback()); }else { txt_log.setText(txt_log.getText() + "\n no update."); } dialog.dismiss(); } } private class UpdateDownloadCallback implements CPUpdateDownloadCallback { @Override public void onDownloadComplete(String apkPath) { txt_log.setText(txt_log.getText() + "\n onDownloadComplete: " + apkPath); BDAutoUpdateSDK.cpUpdateInstall(getApplicationContext(), apkPath); } @Override public void onStart() { txt_log.setText(txt_log.getText() + "\n Download onStart"); } @Override public void onPercent(int percent, long rcvLen, long fileSize) { txt_log.setText(txt_log.getText() + "\n Download onPercent: " + percent + "%"); } @Override public void onFail(Throwable error, String content) { txt_log.setText(txt_log.getText() + "\n Download onFail: " + content); } @Override public void onStop() { txt_log.setText(txt_log.getText() + "\n Download onStop"); } } }
autoupdate_main.xml AutoUpdateActivity載入的佈局檔案. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dip" android:orientation="vertical" android:gravity="center" tools:context="${packageName}.${activityClass}" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <Button android:id="@+id/btn_ui" android:layout_width="match_parent" android:layout_height="40dip" android:text="UI更新"/> <Button android:id="@+id/btn_silence" android:layout_width="match_parent" android:layout_height="40dip" android:text="靜默更新" /> <Button android:id="@+id/btn_as" android:layout_width="match_parent" android:layout_height="40dip" android:text="百度助手更新" /> <Button android:id="@+id/btn_noui" android:layout_width="match_parent" android:layout_height="40dip" android:text="無UI更新" /> </LinearLayout> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/txt_log" android:layout_width="match_parent" android:layout_height="wrap_content" /> </ScrollView> </LinearLayout> 四.注意事項
1.需要引用另外一個專案,另外一個專案裡面必須有兩個百度的jar包.BDAutoUpdate_APPX_SDK_20150826.jar跟need_lib.jar
2.需要在AndroidManifest.xml中配置appid,appkey,還有彈窗顯示的Activity.
<!-- 百度自動更新SDK Appid配置,AppKey配置--> <meta-data android:name="BDAPPID" android:value="3067515"/> <meta-data android:name="BDAPPKEY" android:value="f3Os4GAOqxgm79GqbnkT9L8T"/> <!-- 百度自動更新SDK --> <activity android:name="com.baidu.autoupdatesdk.ConfirmDialoigActivity" android:exported="false" android:screenOrientation="sensor" android:theme="@style/bdp_update_dialog_style_fullscreen"/> 3.appid跟appkey是官網申請的 http://app.baidu.com/value/sdkservice?f=9
4.如果你打包的專案對程式碼有混淆,記得忽略百度的jar包混淆.