开辟终端,

【声明】 

统计 1

迎接转载,但求保留文章原来出处→_→ 

 

生命壹号:http://www.cnblogs.com/smyhvae/

从而cd命令
定位到工程所当的目,然后调用以下命名即可将每个源代码文件行数及总数统计出:

章来源:http://www.cnblogs.com/smyhvae/p/4653736.html

find . “(” -name “*.m” -or -name “*.mm” -or -name “*.cpp” -or -name
“*.h” -or -name “*.rss” “)” -print | xargs wc -l

 

 

一、下载SDK:

按下 回车

官网链接:http://www.umeng.com/component_update

统计 2

开辟链接后,界面如下:

 

统计 3

其中,-name  “*.m”
就象征扩展名为.m的文本。同时使统计java文件以及xml文件的授命分别是:

齐图备受,点开箭头处所出示之职务,下载Android对应的版本:

find . “(” -name “*.java”  “)” -print | xargs wc -l

统计 4

find . “(” -name “*.xml”  “)” -print | xargs wc -l

统计 5

 

 

直达图备受,单击红框部分下载SDK。

  

次、在友盟的后台注册下:

统计 6

上图中,单击红框部分,创建新的行使。

统计 7

直达图被,应用创建成功后,会生成AppKey,这就算是咱后要因此到之。

 

其次、在代码中进行部署:

今开看官方文档怎么说之,文档链接如下:http://dev.umeng.com/auto-update/android-doc/quick-start

1、导入SDK所急需之jar包:

将SDK中之libs文件夹合并到地面工程libs子目录下。

 

2、添加资源文件:

以SDK提供的res文件夹拷入工程目录下, 和工程自己res目录合并。提示:友盟SDK提供的资源文件都因为umeng_开头。

 

3、配置AndroidManifest.xml:

3.1、打开AndroidManifest.xml,添加SDK需要之权到<manifest>标签下:

1 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
2 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
3 <uses-permission android:name="android.permission.INTERNET"></uses-permission>

 上方代码中:第一实施的权柄是同意将下载的apk保存到sd卡中。第二行之权杖是容检查网络状态,从而根据不同网络环境控制何种下载策略,务必添加该权限。

 

3.2、紧接着,添加APPKEY和渠道及<application>标签下:
(如果既集成了统计SDK等友盟其他服务,不需再添加APPKEY)

<meta-data android:value="YOUR APP KEY" android:name="UMENG_APPKEY"/>
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>

 UMENG_APPKEY:用来恒定该行使的唯一性,用而该以的UMENG
APPKEY,替换value中之”YOUR APP KEY”。

UMENG_CHANNEL:用来标注使用推广渠道,不同渠道可以上传不同更新包,您可采取20各中的英文与数字为渠道定名,替换value中之”Channel
ID”。如果不转动,将意味默认渠道。(特别提醒:如果要以友盟自动更新多渠道创新,必须先集成友盟统计SDK)

 

3.3、添加Service和Activity到<application>标签下:

<service
    android:name="com.umeng.update.net.DownloadingService"
    android:process=":DownloadingService" >
</service>
<activity 
    android:name="com.umeng.update.UpdateDialogActivity"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>

  

4、调用更新接口:

首要采用场景:

 
  最普遍的凡自动更新模式:当用户进入应用首页后,如果处在wifi环境则检测更新,如果产生更新,弹出对话框提示有新本子,用户点选更新开始下载更新。

于应用程序入口Activity里的OnCreate() 方法中调用如下代码:

1 public void onCreate(Bundle  savedInstanceState) {
2     super.onCreate(savedInstanceState);
3     UmengUpdateAgent.update(this);

 即调用上方之第3实践代码即可。

注意: 

 
  考虑到用户流量的范围,目前咱们默认在Wi-Fi接入情况下才进行自动唤醒。如用在随心所欲网络环境下都开展创新自动唤醒,则请求于update调用之前添加以下代码:UmengUpdateAgent.setUpdateOnlyWifi(false)。
特别提示:针对机顶盒等或无支持还是没有无线网络的配备,
请同样增长上述代码。

 

5、集成监测:

v2.4版后的SDK中默认开启了合检测功能,在调用任意的换代接口后,我们将替你自动检查上述集成过程遭到2、3鲜独步骤是否被科学就。
如果对就不见面现出其他提示,否则会坐如下的toast提示你。

若得经过调用UmengUpdateAgent.setUpdateCheckConfig(false)来经用是意义。

toast的意义如下:

    “Please copy
all resources (res/) from SDK to your
project!”:请检查是休是拿res文件夹下具有的资源文件都加大至了工程被。

    “Please add
Permission in
AndroidManifest!”:请检查上述手续1.3遇3.1之相干权限是否是添加。

    “Please add
Activity in
AndroidManifest!”:请检查上述手续1.3面临3.3的Activity是否科学添加。

    “Please add
Service in
AndroidManifest!”:请检查上述手续1.3蒙受3.3受到的Service是否科学添加。

    “Please set
umeng appkey!”:请检查上述手续3.2遭之APPKEY是否是添加。

 

其三、上传最新的apk进行翻新:

倘之前的版本号是1.0,如果你本以开发出了新的本,那么只要上传到友盟网站,同时新开发之版本号(VersionCode)要超越1.0,客户端在开行时就见面产生更新提示。

咱来实验一下。

统计 8

达图被,先就击红框部分的“组件”,再单击红框部分的“自动更新”,就会见产出上图备受的文提示了。我们更加需要注意上图中之蔚蓝框部分的字。

 

咱事先改一下工程文件中之代码,将TextView的文本内容改动也“乌拉拉,我是第二单本子哟”。

然后修改一下app这个module中之gradle文件,提高版本号。如下图所示:

统计 9

落得图中,更新红框部分的版本号即可。注意第11尽之versionCode必须也整数啊。然后生成新版的apk。

 

然后打开友盟的后台:

统计 10

齐图备受,将新版的apk上污染,并填写更新日志。点击“确定”,弹出如下界面:

统计 11

 

四、测试: 

v1.0本的apk运行后是下的界面:

统计 12

进入了自动更新功能后,再打开程序,弹出了之类界面:

统计 13

落得图中,点击“自动更新”之后,界面如下:

统计 14

更新了了之后,效果如下:

统计 15

 

备注:

设点击更新之后,出现的凡之类界面:

统计 16

及图的失实是坐,前后两独本子的apk用底凡殊的签字导致的。

 

除此以外推荐一个总是大家看:

友盟自动更新常见问题索引(开发者必读)http://bbs.umeng.com/thread-5924-1-1.html

 

【工程文件】

2015-07-16-UpdateDemo工程文件

 

 

友好处理检测更新的结果:

意是说,现在app中生出只【检测更新】按钮,通过点击是按钮来检测是否需要创新。那我们得把下这段代码放在按钮的监听事件备受:

UmengUpdateAgent.setUpdateAutoPopup(false);
UmengUpdateAgent.setUpdateListener(new UmengUpdateListener() {
    @Override
    public void onUpdateReturned(int updateStatus, UpdateResponse updateInfo) {
        switch (updateStatus) {
            case UpdateStatus.Yes: // has update
                UmengUpdateAgent.showUpdateDialog(UIUtils.getContext(), updateInfo);
                break;
            case UpdateStatus.No: // has no update
                UIUtils.showToastSafe("当前已是最新版本");
                break;
            case UpdateStatus.NoneWifi: // none wifi
                UIUtils.showToastSafe("没有wifi连接, 只在wifi下更新");
                break;
            case UpdateStatus.Timeout: // time out
                UIUtils.showToastSafe("超时");
                break;
        }
    }
});
UmengUpdateAgent.forceUpdate(this);