導航:首頁 > 操作系統 > android升級代碼

android升級代碼

發布時間:2022-11-07 01:22:33

android應用舊版本自動更新代碼未實現,用戶使用的是老版本,怎樣讓用戶更新到新版本

那就沒辦法了,看你app里有沒有通知用戶消息的一些東西吧,如果有消息推送的話,可以給用戶推送新地址。

⑵ Android系統可以升級嗎怎麼升級

安卓系統可以升級,升級過程如下:

下面以升級Android2.3.4為例子,注意:Android2.3.4隻支持從Android2.3.3升級,如果系統是Android2.3.1的話,必須要先升級到Android2.3.3才可以再升級為2.3.4。

另外,這個升級是增量升級,並不會刪除原先系統中的數據,所以大家可以放心升級。

第一步:先要手機下載Android2.3.4的升級數據包,我用的電腦給你搜了一下。

甜點命名法開始於Android 1.5發布的時候。作為每個版本代表的甜點的尺寸越變越大,然後按照26個字母數序:紙杯蛋糕(Android 1.5),甜甜圈(Android 1.6),松餅(Android 2.0/2.1),凍酸奶(Android 2.2),姜餅(Android 2.3),蜂巢(Android 3.0)。

冰激凌三明治(Android 4.0),果凍豆(Jelly Bean,Android4.1和Android 4.2),奇巧(KitKat,Android 4.4),棒棒糖(Lollipop,Android 5.0),棉花糖(Marshmallow,Android 6.0),牛軋糖(Nougat,Android 7.0),奧利奧(Oreo,Android 8.0)。

⑶ android系統 如何要用差分做升級

1、首先是差分包patch的生成。在update.zip中的patch文件夾中有需要與系統文件同名但是以xxx.p 為後綴的文件,就是生成的差分patch文件。OTA系統差分包的製作,使用命令
./build/tools/releasetools/ota_from_target_files -n -i <舊包> <新包> <差分包名>
在查閱ota_from_target_files 的代碼可知,是在函數WriteIncrementalOTAPackage里生成差分包的,在這個函數里邊創建了common.Difference這個類,繼續跟進,在common.py中的類 class Difference(object):里可以看到:
diff_program = DIFF_PROGRAM_BY_EXT.get(ext, "bsdiff")
2、看到了android中提供用來製作差分增量升級包的工具,在android的代碼目錄下 \external\bsdiff bsdiff是二進制差分工具,其對應的bspatch是相應的補丁合成工具,需要注意的是增量升級的補丁包,是需要在伺服器端,即PC端完成:命令:bsdiff oldfile newfile patchfile。
3、bspatch的命令格式為:bspatch oldfile newfile patchfile。

⑷ android app 靜默升級需要包名嗎

實現靜默安裝必須要2個前提條件:1、必須有對機器的ROOT許可權 ; 2、必須有編譯源碼的環境

具備了以上2個條件就可以實現靜默安裝了。。

1、首先必須實現一個觀察者的類,來監聽apk安裝成功或者失敗,所以我們先寫一個類去繼承IPackageInstallObserver.Stub,

由於IPackageInstallObserver.Stub不是開放api,所以我們自己必須在改類前面加import android.content.pm.IPackageInstallObserver;

具體代碼如下:

[java] view plain

class PackageInstallObserver extends IPackageInstallObserver.Stub {

public void packageInstalled(String packageName, int returnCode) {

// 該方法裡面可以根據returnCode的值判斷apk安裝成功或者失敗

// 1表示成功 0表示失敗

if (returnCode == 1) {

Log.e(TAG, packageName + " install Success");

} else {

Log.e(TAG, packageName + "install fail ");

}

}

}

2、現在就來看看靜默安裝的方法了

其中方法中的參數packageName是你需要安裝的應用apk的包名 , path表示apk在本地所在的路徑

[java] view plain

public void SilentInstall(String packageName, String path) {

Uri uri = Uri.fromFile(new File(path));

int installFlags = 0;

PackageManager pm = getPackageManager();

try {

PackageInfo packageInfo = pm.getPackageInfo(packageName,

PackageManager.GET_UNINSTALLED_PACKAGES);

if (packageInfo != null) {

installFlags = PackageManager.INSTALL_REPLACE_EXISTING;

}

} catch (NameNotFoundException e) {

Log.e(TAG, "NameNotFoundException = " + e.getMessage());

}

PackageInstallObserver observer = new PackageInstallObserver(); // PackageInstallObserver

// 就是1中實現的觀察者類

pm.installPackage(uri, observer, installFlags, packageName);

}

好了,上面2個步驟做好了後在AndroidMainfest.xml加上安裝包的許可權

[java] view plain

加如許可權之後就可以編寫Android.mk文件了,這個Android.mk我是從 源碼package/APP/PackageInstaller中的Android.mk拷貝過來,然後將其中的

[java] view plain

LOCAL_PACKAGE_NAME := Test //其中Test是你項目的名稱

做完上述所有步驟之後,就可以將這個項目放在源碼環境下編譯了,編譯成成功後會在out\target\proct\leader75_6628_ics2\system\app生成改項目的apk

然後push到system/app或者編譯在升級包裡面就可以使用了。

注意:單獨編譯項目的時候,可以將一些沒用的文件夾刪除掉,比如gen bin等,下面圖片就是我編譯之前刪除後的目錄結構

⑸ android 怎麼實現應用內更新

android 實現應用內更新的方法為:
1、新建一個Android工程命名為:UpdateDemo。
2、新建一個UpdateManager.java類,負責軟體更新功能模塊,代碼如下:
package com.tutor.update;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.AlertDialog;
import android.app.Dialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.net.Uri;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ProgressBar;

public class UpdateManager {

private Context mContext;

//提示語
private String updateMsg = "有最新的軟體包哦,親快下載吧~";

//返回的安裝包url
private String apkUrl = "http://softfile.3g.qq.com:8080/msoft/179/24659/43549/qq_hd_mini_1.4.apk";

private Dialog noticeDialog;

private Dialog downloadDialog;
/* 下載包安裝路徑 */
private static final String savePath = "/sdcard/updatedemo/";

private static final String saveFileName = savePath + "UpdateDemoRelease.apk";

/* 進度條與通知ui刷新的handler和msg常量 */
private ProgressBar mProgress;

private static final int DOWN_UPDATE = 1;

private static final int DOWN_OVER = 2;

private int progress;

private Thread downLoadThread;

private boolean interceptFlag = false;

private Handler mHandler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case DOWN_UPDATE:
mProgress.setProgress(progress);
break;
case DOWN_OVER:

installApk();
break;
default:
break;
}
};
};

public UpdateManager(Context context) {
this.mContext = context;
}

//外部介面讓主Activity調用
public void checkUpdateInfo(){
showNoticeDialog();
}

private void showNoticeDialog(){
AlertDialog.Builder builder = new Builder(mContext);
builder.setTitle("軟體版本更新");
builder.setMessage(updateMsg);
builder.setPositiveButton("下載", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
showDownloadDialog();
}
});
builder.setNegativeButton("以後再說", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
noticeDialog = builder.create();
noticeDialog.show();
}

private void showDownloadDialog(){
AlertDialog.Builder builder = new Builder(mContext);
builder.setTitle("軟體版本更新");

final LayoutInflater inflater = LayoutInflater.from(mContext);
View v = inflater.inflate(R.layout.progress, null);
mProgress = (ProgressBar)v.findViewById(R.id.progress);

builder.setView(v);
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
interceptFlag = true;
}
});
downloadDialog = builder.create();
downloadDialog.show();

downloadApk();
}

private Runnable mdownApkRunnable = new Runnable() {
@Override
public void run() {
try {
URL url = new URL(apkUrl);

HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.connect();
int length = conn.getContentLength();
InputStream is = conn.getInputStream();

File file = new File(savePath);
if(!file.exists()){
file.mkdir();
}
String apkFile = saveFileName;
File ApkFile = new File(apkFile);
FileOutputStream fos = new FileOutputStream(ApkFile);

int count = 0;
byte buf[] = new byte[1024];

do{
int numread = is.read(buf);
count += numread;
progress =(int)(((float)count / length) * 100);
//更新進度
mHandler.sendEmptyMessage(DOWN_UPDATE);
if(numread <= 0){
//下載完成通知安裝
mHandler.sendEmptyMessage(DOWN_OVER);
break;
}
fos.write(buf,0,numread);
}while(!interceptFlag);//點擊取消就停止下載.

fos.close();
is.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch(IOException e){
e.printStackTrace();
}

}
};

/**
* 下載apk
* @param url
*/

private void downloadApk(){
downLoadThread = new Thread(mdownApkRunnable);
downLoadThread.start();
}
/**
* 安裝apk
* @param url
*/
private void installApk(){
File apkfile = new File(saveFileName);
if (!apkfile.exists()) {
return;
}
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse("file://" + apkfile.toString()), "application/vnd.android.package-archive");
mContext.startActivity(i);

}
}
第三步:在MainActivity.java也就是主Activity調用,代碼如下:
package com.tutor.update;

import android.app.Activity;
import android.os.Bundle;

public class MainAcitivity extends Activity {

private UpdateManager mUpdateManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//這里來檢測版本是否需要更新
mUpdateManager = new UpdateManager(this);
mUpdateManager.checkUpdateInfo();
}
}
3、添加程序所用的資源與許可權:
下載的時候用到了ProgressBar,所以事先寫了一個progress.xml布局文件,代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<ProgressBar
android:id="@+id/progress"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
/>
</LinearLayout>
4、運行查看。

⑹ android app更新代碼怎麼實現

<update>
<version>2</version>
<name>_xinwen_1.1.0</name>
<url>http://gdown..com/data/wisegame/f98d235e39e29031/xinwen.apk</url>
</update>

在這里我使用的是XML文件,方便讀取。由於XML文件內容比較少,因此可通過DOM方式進行文件的解析:

public class ParseXmlService
{
public HashMap<String, String> parseXml(InputStream inStream) throws Exception
{
HashMap<String, String> hashMap = new HashMap<String, String>();

// 實例化一個文檔構建器工廠
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 通過文檔構建器工廠獲取一個文檔構建器
DocumentBuilder builder = factory.newDocumentBuilder();
// 通過文檔通過文檔構建器構建一個文檔實例
Document document = builder.parse(inStream);
//獲取XML文件根節點
Element root = document.getDocumentElement();
//獲得所有子節點

⑺ android開發應用版本升級怎麼實現

應用場景: 1、在界面中顯示應用程序的版本號; 2、用戶啟動該應用,後台判斷該應用是否是最新版本。 上述情景都需要在程序中自動獲取到應用的版本號。 思路簡介: 在Android中,應用程序的版本號是在AndroidManifest.xml文件中進行配置的,而PackageInfo類則封裝了從該配置文件中獲取的所有信息,描述了包內容的整體信息,因此,可以使用PackageInfo對象的versionName屬性獲取應用的版本號。 要怎麼獲取PackageInfo對象呢?可以通過PackageManager對象來獲取。PackageManager是一個檢索當前已安裝在設備上的相關應用程序包的各種信息的類。PackageManager對象中的getPackageInfo方法可以獲取PackageInfo對象,該方法需要傳遞兩個參數:應用包名和條件。通常情況下,應用程序的包名可以通過Activity或Context(Activity繼承自Context)的getPackageName()方法獲取,而添加可以有很多設置,通常設置為0。 最後是PackageManager對象的獲取,Context對象提供了getPackageManager()方法來獲取該對象。 綜上,模板代碼如下:(注意,此處封裝的方法位於某個Activity中,因此直接使用this來代替Context對象) /** * 獲取版本號 * @return 當前應用的版本號 */ public String getVersion() { try { PackageManager manager = this.getPackageManager(); PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0); String version = info.versionName; return this.getString(R.string.version_name) + version; } catch (Exception e) { e.printStackTrace(); return this.getString(R.string.can_not_find_version_name); } }

⑻ iQOO安卓11怎麼升12

iQOO安卓11升12方法Fota方式升級,通過手機設定,一般,關於設備,系統更新,在電腦中下載安裝Kies軟體,注意,下載安裝kies時手機與電腦不要連接。安裝後手機和電腦通過USB連接,打開Kies軟體,如有手機系統或固件新版本時Kies軟體會有固件升級提示,點擊升級即可。

安卓介紹

Android是一種基於Linux的自由及開放源代碼的操作系統。主要使用於移動設備,如智能手機和平板電腦,由Google公司和開放手機聯盟領導及開發。尚未有統一中文名稱,中國大陸地區較多人使用安卓或安致。Android操作系統最初由AndyRubin開發,主要支持手機。

2005年8月由Google收購注資。2007年11月,Google與84家硬體製造商、軟體開發商及電信營運商組建開放手機聯盟共同研發改良Android系統。隨後Google以Apache開源許可證的授權方式,發布了Android的源代碼。

第一部Android智能手機發布於2008年10月。Android逐漸擴展到平板電腦及其他領域上,如電視,數碼相機,游戲機,智能手錶等。2011年第一季度,Android在全球的市場份額首次超過塞班系統,躍居全球第一。

⑼ 如何簡單實現安卓app自動更新功能

app自動更新程序可以參考如下代碼:
第一步 伺服器端:
服務端提供一個借口,或者網址,我這里就用的伺服器是tomcat,這里提供一個網址如下:
//也就是一個json數據介面
public static final String UPDATE_URL = "http://192.168.1.103:8080/update.json";
我們來看下json數據參數:
{
//app名字
appname: "愛新聞1.1",
//伺服器版本號
serverVersion: "2",
//伺服器標志
serverFlag: "1",
//是否強制更新
lastForce: "1",
//apk下載地址,這里我已經下載了官方的apk,放到了伺服器裡面
updateurl: "http://192.168.1.103:8080/36Kr.apk",
//版本的更新的描述
upgradeinfo: "V1.1版本更新,你想不想要試一下哈!!!"
}
好了以上的是伺服器端的信息,在這里不需要多說了,我們來看下客戶端的吧。
第二步 客戶端需要實現:
首先我們要去解析服務端給的json,那麼我們就要來創建一個model類了(代碼過多,這里只有欄位,getter和setter方法自己創建):
//app名字
private String appname;
//伺服器版本
private String serverVersion;
//伺服器標志
private String serverFlag;
//強制升級
private String lastForce;
//app最新版本地址
private String updateurl;
//升級信息
private String upgradeinfo;
在這里使用了一個輔助類,基本和model欄位差不多:
public class UpdateInformation {
public static String appname = MyApplication.getInstance()
.getResources().getString(R.string.app_name);
public static int localVersion = 1;// 本地版本
public static String versionName = ""; // 本地版本名
public static int serverVersion = 1;// 伺服器版本
public static int serverFlag = 0;// 伺服器標志
public static int lastForce = 0;// 之前強制升級版本
public static String updateurl = "";// 升級包獲取地址
public static String upgradeinfo = "";// 升級信息
public static String downloadDir = "wuyinlei";// 下載目錄
}
我們知道,我們在進入app的時候,這個時候如果檢測到伺服器端有了新的版本,就回彈出提示框,提示我們更新。這個我們在MainActivity裡面處理邏輯(onCreate()方法裡面):
OkhttpManager.getAsync(Config.UPDATE_URL, new OkhttpManager.DataCallBack() {
@Override
public void requestFailure(Request request, Exception e) {
}
@Override
public void requestSuccess(String result) {
try {
Log.d("wuyiunlei",result);
JSONObject object = new JSONObject(result);
UpdateInfoModel model = new UpdateInfoModel();
model.setAppname(object.getString("appname"));
model.setLastForce(object.getString("lastForce"));
model.setServerFlag(object.getString("serverFlag"));
model.setServerVersion(object.getString("serverVersion"));
model.setUpdateurl(object.getString("updateurl"));
model.setUpgradeinfo(object.getString("upgradeinfo"));
tmpMap.put(DeliverConsts.KEY_APP_UPDATE, model);
} catch (JSONException e) {
e.printStackTrace();
}
//發送廣播
sendBroadcast(new Intent(UpdateReceiver.UPDATE_ACTION));
}
});
當然了,我們也要注冊和結束廣播:
/**
* 廣播注冊
*/
private void registerBroadcast() {
mUpdateReceiver = new UpdateReceiver(false);
mIntentFilter = new IntentFilter(UpdateReceiver.UPDATE_ACTION);
this.registerReceiver(mUpdateReceiver, mIntentFilter);
}
/**
* 廣播卸載
*/
private void unRegisterBroadcast() {
try {
this.unregisterReceiver(mUpdateReceiver);
} catch (Exception e) {
e.printStackTrace();
}
}
好了,接下來我們看下我們自定義的廣播接收者UpdateReceiver .java:
/**
* 版本更新升級 廣播接受者
*
*/

閱讀全文

與android升級代碼相關的資料

熱點內容
程序員那麼可愛第30集免費看 瀏覽:635
如何下載老友麻將app 瀏覽:443
java路徑參數 瀏覽:590
php命名空間使用 瀏覽:296
app的競爭力如何寫 瀏覽:585
linux刪除swp 瀏覽:588
pdfxchange40 瀏覽:75
車牌號碼是哪個app 瀏覽:48
文件夾如何添加圓點 瀏覽:729
如何建立主索引命令 瀏覽:599
mac電腦怎麼打開終端命令 瀏覽:741
androidvpn待機不斷 瀏覽:756
硬碟的文件夾如何設置密碼 瀏覽:384
plc定位編程 瀏覽:47
mac命令添加用戶 瀏覽:815
android時間widget 瀏覽:393
qd128h壓縮機參數 瀏覽:288
用單片機測車距 瀏覽:395
去哪裡找加密的便簽 瀏覽:19
武漢訂酒店旅館哪個app平台好 瀏覽:115