精华内容
下载资源
问答
  • 安卓应用市场下载app
    千次阅读
    2021-12-09 10:00:29

    1、跳转主流应用市场工具方法

    const val YYB = "com.tencent.android.qqdownloader"
    const val HUAWEI = "com.huawei.appmarket"
    const val XIAOMI = "com.xiaomi.market"
    const val OPPO = "com.oppo.market"
    const val VIVO = "com.bbk.appstore"
    const val SANSUNG="com.sec.android.app.samsungapps"
    
    fun isAppAvailable(packageName: String): Boolean {
        // 获取packagemanager
        val packageManager: PackageManager = App.instance.packageManager
        // 获取所有已安装程序的包信息
        val pinfo: List<PackageInfo> = packageManager.getInstalledPackages(0)
        // 用于存储所有已安装程序的包名
        val pName: MutableList<String> = ArrayList()
        // 从pinfo中将包名字取出
        for (i in pinfo.indices) {
            val pf: String = pinfo[i].packageName
            pName.add(pf)
        }
        // 判断pName中是否有目标程序的包名,有true,没有false
        return pName.contains(packageName)
    }
    
    /**
     * 启动到应用商店app详情界面
     *
     * @param appPkg    目标App的包名
     * @param marketPkg 应用商店包名 ,如果为""则由系统弹出应用商店列表供用户选择,否则调转到目标市场的应用详情界面
     */
    fun launchAppDetail(marketPkg: String?) {
        try {
            val uri: Uri = Uri.parse("market://details?id=com.tencent.mobileqq")
            val intent = Intent(Intent.ACTION_VIEW, uri)
            if (!TextUtils.isEmpty(marketPkg)) {
                intent.setPackage(marketPkg)
            }
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            App.instance.startActivity(intent)
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

    2、通过抓取网页版本信息,对比本地,然后更新app

    class UpdateAsyncTask(var context: Context) : AsyncTask<String, Void, String>() {
    
        companion object {
            private const val tencentUrl: String = "https://android.myapp.com/myapp/detail.htm?apkName=cn.com.blackview.dashcam"
            private const val getElementsByClass: String = "pp-comp-extra-p"
        }
    
        override fun doInBackground(vararg params: String): String {
            var version = ""
            kotlin.runCatching {
                val doc = Jsoup.connect(tencentUrl).get()
                val elementsByClass = doc.getElementsByClass(getElementsByClass)
                if (elementsByClass.size > 1) {
                    version = elementsByClass[1].text()
                }
            }.getOrNull()
            return version
            //通过本地接口
    //        var result = ""
    //        kotlin.runCatching {
    //            val url = URL("http://test.blackview4g.com:8910/community/api/appVersion")
    //            val urlConnection = url.openConnection() as HttpURLConnection
    //            val responseCode: Int = urlConnection.responseCode
    //            if (responseCode == HttpURLConnection.HTTP_OK) {
    //                result = readStream(urlConnection.inputStream)
    //            }
    //        }.getOrNull()
    //
    //        return result
    
        }
    
        override fun onPostExecute(s: String) {
            super.onPostExecute(s)
            //版本:4.5.1421115
            kotlin.runCatching {
                val versionCode = s.split(":")[1].split(".")[2].toInt()
                val localVersionCode = App.instance.packageManager.getPackageInfo(App.instance.packageName, 0)
                    .versionName.toString().split(".")[2].toInt()
                Log.e("dd", "localVersionCode:$localVersionCode")
                Log.e("dd", "versionCode:$versionCode")
                if (localVersionCode < versionCode) {
                    if (context is BaseActivity) {
                        if ((context as BaseActivity).isFinishing) {
                            return
                        }
                    }
                    LDDialog.Builder(context)
                        .setTitle(App.instance.resources.getString(R.string.album_note))
                        .setContent(App.instance.resources.getString(R.string.album_note_upgrade_title))
                        .setRightButton(App.instance.resources.getString(R.string.album_confirm))
                        { dialog: IDialog ->
                            dialog.dismiss()
                            setIntent()
                        }
                        .setLeftButton(App.instance.resources.getString(R.string.album_cancel))
                        { dialog: IDialog -> dialog.dismiss() }
                        .show()
                }
            }.getOrNull()
        }
    
        private fun setIntent() {
            when {
                isAppAvailable(YYB) -> {
                    launchAppDetail(YYB)
                }
                isAppAvailable(HUAWEI) -> {
                    launchAppDetail(HUAWEI)
                }
                isAppAvailable(XIAOMI) -> {
                    launchAppDetail(XIAOMI)
                }
                isAppAvailable(OPPO) -> {
                    launchAppDetail(OPPO)
                }
                isAppAvailable(VIVO) -> {
                    launchAppDetail(VIVO)
                }
                else -> {
                    val uri = Uri.parse(tencentUrl)
                    val intent = Intent(Intent.ACTION_VIEW, uri)
                    intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
                    App.instance.startActivity(intent)
                }
            }
        }
    
        private fun readStream(inputStream: InputStream): String {
            var reader: BufferedReader? = null
            val response = StringBuffer()
            try {
                reader = BufferedReader(InputStreamReader(inputStream))
                var line: String?
                while (reader.readLine().also { line = it } != null) {
                    response.append(line)
                }
            } catch (e: IOException) {
                e.printStackTrace()
            } finally {
                if (reader != null) {
                    try {
                        reader.close()
                    } catch (e: IOException) {
                        e.printStackTrace()
                    }
                }
            }
            return response.toString()
        }
    
    }

    更多相关内容
  • Android应用源码之安卓应用市场app商店源码
  • Android应用源码开发Demo,主要用于毕业设计学习。
  • Android应用源码安卓应用市场app商店源码.zip
  • Android应用源码之安卓应用市场app商店源码.zip项目安卓应用源码下载Android应用源码之安卓应用市场app商店源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目...
  • Android安卓应用市场app商店源码Android安卓应用市场app商店源码Android安卓应用市场app商店源码Android安卓应用市场app商店源码Android安卓应用市场app商店源码Android安卓应用市场app商店源码Android安卓应用市场...
  • Android应用源码之app更新,实现service下载.zip项目安卓应用源码下载Android应用源码之app更新,实现service下载.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目...
  • 本项目源码是一套安卓应用市场手机客户端项目源码,包括android客户端 javaweb服务端,安卓客户端与服务端通过json交互,昨天有个朋友找我咨询这方面的源码来着,我就把这套源码推荐给他的,项目涉及的技术比较全面...
  • 源码参考,欢迎下载
  • 一款能在Android安卓手机使用git客户端应用APP,支持创建本地仓库,支持自定义手机本地仓库目录,支持远程仓库克隆到手机储存,支持提交并推送到远程仓库。
  • 安卓应用市场服务端+客户端_源码 简单版本demo,可以参考使用,流程完整。客户端和服务端代码都有,可以基于此升级改造。具有参考价值意义
  • 安卓Android源码——安卓应用市场app商店源码.zip
  • 安卓开发-Android应用源码安卓应用市场app商店源码.zip.zip
  • 方法一:通过系统隐式意图方式去调用应用市场app详情页 try{ Uri uri = Uri.parse(market://details?id=+getPackageName()); Intent intent = new Intent(Intent.ACTION_VIEW,uri); intent.addFlags(Intent.FLAG...
  • android应用程序锁APP源码,含已经编译好的APK文件
  • 安卓Android源码——安卓应用市场app商店源码 (2).zip
  • [安卓开源]安卓应用市场app商店源码.zip
  • Android应用源码之强行结束APP进程的方法.zip项目安卓应用源码下载Android应用源码之强行结束APP进程的方法.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术...
  • App上架安卓应用市场最全指南

    千次阅读 2020-06-17 11:58:33
    这里写目录标题一、目前国内安卓应用市场二、应用市场上架前准备三、以华为开放平台为例介绍具体操作四、各应用市场上架目录1、腾讯应用宝2、360手机助手3、百度手机助手/91助手/安卓市场4、小米应用商店5、阿里应用...

    一、目前国内安卓应用市场

    目前国内安卓市场主要分为“第三方应用市场”和“手机厂商应用市场”:

    • 第三方应用市场主要指:应用宝、360手机助手、百度手机助手、豌豆荚等;
    • 手机厂商应用市场主要指:华为、小米、VIVO、OPPO、魅族、三星等。

    第三方应用市场对App类型的限制较小,应用总量和装机量较大,因此分发量也大,如果你的产品质量差,又没有实力做ASO、刷量的话,很容易被淹没在众多应用的汪洋大海里。

    手机厂商应用市场指有硬件制造能力的厂商,他们会在自家生产的品牌中预装自家的应用商店,一般对应用的上架把控比较严格,产品质量要求较高,一些功能太简单或者同类产品泛滥的App是不能通过审核的。

    二、应用市场上架前准备

    1、apk包,注意要区分备注好每个应用市场包,有部分应用市场可能会要求加固,按要求加固后再上传,有的应用商店会提供加固工具。

    2、icon,icon图标分直角圆角,尺寸最好做全套,一般准备16X16、216X216、256X256、512X512这四种就够了。

    3、应用截图,第一张截图一般对应app最核心的功能特色,让用户直接读懂这个app的用途,后面4张对应更具体的功能特色,每套尺寸需准备5张,一般准备3套:480X800、720X1280、1080X1920(华为需要上传权限使用场景展示页)

    4、app名称:填写自己app名,名字通俗易懂,有可识别性差异性。

    5、20字以内一句话简介:言简意赅,介绍产品的核心功能。

    6、200字左右的介绍描述:描述你的app是什么类型,是游戏,工具还是社交等,要遵守广告法、新闻语等规则,两三句话描述app的最核心特色,用几个短段落来阐述app的功能特色,最好写上联系方式,微博微信网站等。

    7、企业开发者企业认证资料
    (1)公司营业执照副本
    (2)企业法人身份证正反面扫描件(或者用手机拍照、全能扫描王等)
    (3)企业其他相关信息
    (4)商务联系人一般为经常使用的人员,方便今后使用,联系客服解决问题
    (5)部分应用市场需要授权书或者免责函等需要公司盖章证明:该项资料统一为一张图,如果为多张请合并生成png等要求文件

    8、软著权:项目开发初版之后即可进行软著权申领,在国家版权局申请。建议交给第三方版权申领公司。

    9、注册不同平台的开发者账号时,建议使用公司老板或法人的邮箱或手机(腾讯应用宝使用QQ号码),而不是员工私人邮箱或手机注册,以免遇到员工离职等情况造成不必要的麻烦。

    三、以华为开放平台为例介绍具体操作

    在开发应用前,需要在AppGallery Connect中创建该应用。

    1、首次登录需要实名认证开发者信息

    在这里插入图片描述

    2、在分发中选择“上传应用”。

    在这里插入图片描述

    3、点击界面右侧的“新建”。

    在这里插入图片描述

    4、填写应用信息,完成后点击“确定”,进入应用信息页面。
    在这里插入图片描述
    软件包类型:根据实际情况选择应用包的类型。

    支持设备:发布后运行的设备。

    应用名称:如果开发者之前在华为开发者联盟有对应的应用,则填写原应用名称,从下拉框中选择联想出的应用名称,那么在AppGallery Connect创建的应用将和原来应用的APP ID保持一致,即进行了应用的迁移。

    如果开发者之前没有创建过应用,则填写新创建的应用名称,要求1-64个字符,创建后将获取一个新的App ID,应用名称支持在应用信息中修改。(注意:应用名不能含有低俗敏感字样)

    应用分类:1、应用:普通应用。2、应用:游戏类应用。

    默认语言:应用的默认语言,根据实际情况选择。

    5、左侧导航栏选择“版本信息 > 准备提交”,在“软件版本”区域点击“软件包管理”,上传待发布的软件包。

    在这里插入图片描述

    6、首次上传软件包,将弹出如下提示信息,点击“上传”。在“上传包”界面中点击“+”,上传应用的软件包。系统将以此软件包的包名作为该应用的包名。

    在这里插入图片描述
    7、上传完成后,点击“保存”。

    在这里插入图片描述

    8、返回应用列表查看已创建应用。
    应用列表展示应用的名称、状态(新创建应用的状态为“准备提交”)、支持设备和应用类型。点击应用名称,可进入应用详情页面。

    在这里插入图片描述

    四、各应用市场上架目录

    1、腾讯应用宝

    腾讯开放平台地址:https://open.tencent.com/

    提示:注册开发者类型,分个人与公司,根据需要选择;应用宝一经注册不能更换QQ。

    应用上架要提交软件著作权证明(原件扫描)或者该应用PC官网ICP备案截图+官网地址+2个以上的应用宝以外市场上线后台状态截图代替,软著后续补上。如果APP在应用宝搜索不到(不能外显),则必须提供软著+版号。

    在这里插入图片描述

    注册开发者帐号方法:http://wiki.open.qq.com/wiki/
    应用提交方法:http://wiki.open.qq.com/wiki/

    2、360手机助手

    360开放平台地址:http://dev.360.cn

    提示:企业操作人要进行实名认证,要提供身份证号,银行卡号及预留的手机验证码验证。应用上架必须要提交360的保证函。

    在这里插入图片描述

    注册开发者帐号方法:http://dev.360.cn/wiki
    应用提交方法:http://dev.360.cn/wiki/index/id/21

    3、百度手机助手/91助手/安卓市场

    百度开发者平台地址:http://app.baidu.com

    提示:百度手机助手、91助手 和安卓市场是联盟平台,在百度开发平台中上传APP通过审核后,在其它两个平台也可以搜索到自己的APP。这里只需要注册一个百度开发者帐号即可。应用上架必须要提交百度的保证函。

    在这里插入图片描述

    注册开发者帐号方法:http://app.baidu.com/docs?id=2&frompos=401003
    应用提交方法:http://app.baidu.com/docs?id=5&frompos=401007

    4、小米应用商店

    小米开放平台网站:https://dev.mi.com

    提示:企业操作人要进行实名认证,要提供身份证号,银行卡号及预留的手机验证码验证。该认证将调用“小米支付”服务,在该小米账号下绑定银行卡进行实名认证。

    在这里插入图片描述

    注册开发者帐号:https://dev.mi.com/docs/appsmarket/distribution/account_register/
    应用提交方法:https://dev.mi.com/docs/appsmarket/distribution/app_submit/

    5、阿里应用商店/豌豆荚/PP助手

    阿里开发者平台地址:http://open.uc.cn

    提示:阿里应用分发整合了豌豆荚、阿里九游、PP助手、UC应用商店、神马搜索,并联合YunOS应用商店等应用分发平台,实现全流量矩阵布局。这里只需要注册一个阿里开发者帐号即可。企业操作人要进行实名认证,用支付宝扫描二维码进行实名认证。应用上架必须要提交阿里的保证函。

    在这里插入图片描述

    注册开发者帐号方法:http://aliapp.open.uc.cn/wiki/?p=35
    应用提交方法:http://aliapp.open.uc.cn/wiki/?p=40

    6、三星应用商店

    三星开发者平台地址:http://support-cn.samsung.com/App/DeveloperChina/Home/Index

    提示:要选择服务类型,全球开发者、主题开发者、中国开发者。法人和联系人要双手持身份证拍照,要露出双臂,照片不能用软件处理。

    在这里插入图片描述

    注册开发者帐号方法:http://support-cn.samsung.com/App/DeveloperChina/home/list?parentid=11&newsid=38
    应用提交方法:(需要下载三星应用商店上传手册)http://support-cn.samsung.com/App/DeveloperChina/home/list?parentid=11&newsid=11

    7、OPPO应用商店

    OPPO开发者联盟地址:https://open.oppomobile.com/newservice/capability?pagename=app_store

    提示:必须要软件著作权,应用上架必须要提交OPPO的免责函。

    在这里插入图片描述

    注册开发者帐号方法:http://open.oppomobile.com/doc/index?idx=0&item=39
    应用提交方法:http://jingyan.baidu.com/article/d169e186656065436611d897.html

    8、ViVO应用商店

    ViVO开放平台地址:https://dev.vivo.com.cn/distribute/appStore?from=header

    提示:要记得填写联系人信息。

    在这里插入图片描述

    注册开发者帐号方法:https://dev.vivo.com.cn/doc/document/info
    应用提交方法:https://dev.vivo.com.cn/doc/document/info?id=52

    9、联想应用商店

    联想开发者联盟地址:http://open.lenovo.com

    提示:应用上架必须要提交联想的免责函。

    在这里插入图片描述

    注册开发者帐号方法:http://open.lenovo.com/developer/adp/helpData/database_detail.jsp?url=http://open.lenovo.com/sdk/zhzc/
    应用提交方法:http://open.lenovo.com/developer/adp/helpData/database_detail.jsp?url=http://open.lenovo.com/sdk/?p=796

    10、魅族应用商店

    魅族开发者联盟地址:http://open.flyme.cn

    提示:应用上架必须要提交魅族的免责函。

    在这里插入图片描述

    注册开发者帐号方法:http://open-wiki.flyme.cn/index.php?title=新手指南
    应用提交方法:http://open-wiki.flyme.cn/index.php?title=应用发布

    其他应用市场:

    乐视http://open.letv.com/dev-web/index.html
    金立http://devquickapp.gionee.com/
    锤子http://dev.smartisan.com/
    搜狗手机助手http://zhushou.sogou.com/open/
    安智http://dev.anzhi.com/
    应用汇http://dev.appchina.com/dev/index
    木蚂蚁http://dev.mumayi.com/
    机锋http://dev.gfan.com/user/index
    谷歌https://play.google.com/apps/publish/
    电信http://open.189.cn/
    移动http://dev.10086.cn/
    联通http://dev.wo.com.cn/index.action

    五、其他工具

    酷传:一款免费发布软件应用的软件平台,使用酷传一键发布即可上传至各大应用市场,也有办理软著等服务。

    在这里插入图片描述

    openinstall:可以做到“渠道统计、免邀请码安装、一键拉起安装”这些功能。而且Android由产品和运营能通过openinstall极简操作快速打包,不需要研发花几个小时给每个市场打包。

    在这里插入图片描述

    阿里云:阿里云同样提供了代办软件著作权的业务,目前有35、20、10个工作日的加急办理服务,软著还是建议越早办越好,毕竟影响上架效率。

    在这里插入图片描述

    如果不想用第三方的代办,可以参考一些教程,自己办理:https://blog.csdn.net/qq_40803752/article/details/100591076

    展开全文
  • Android App上架应用市场所需资料说明

    千次阅读 2021-07-16 10:59:40
    App上架应用市场所需资料说明前言正文一、确认上架平台二、企业开发者账号三、应用上架资料四、等待平台审核 前言   作为Android开发工程师,如果你的人生中没有自己上架过应用,那是很幸运的,因为那样你就不用去...

    前言

      作为Android开发工程师,如果你的人生中没有自己上架过应用,那是很幸运的,因为那样你就不用去准备一堆材料了,不说废话了,进入主题。

    正文

      App上架应用市场,就标志者你的App要直面全国用户了,海外你只要搞定了Google应用市场,其实就没啥了,主要还是国内。

    一、确认上架平台

    上架首先你需要明确上架的平台有哪些。这里说一些常见的平台,首先是各大手机厂商的平台:

    华为开放平台

    小米开放平台

    OPPO开放平台

    VIVO开放平台

    魅族开放平台

    然后是应用平台提供商

    腾讯开放平台

    百度开放平台

    360移动开放平台

    上述平台是常规的一些,具体上架到哪里问你的老板,不要自己做决定。

    二、企业开发者账号

      假设上面的平台你都要上架,那么恭喜你了,下一步就是各平台的注册和企业开发者申请。申请的时候不要使用自己的手机号、QQ号、邮箱等信息。让公司的相关人员给你提供,如果你是打算在这个公司干一辈子的话,就使用自己的个人信息去注册。否则,千万、千万、千万不要使用自己的个人信息。到时候你会很麻烦的。

      下面说明一下申请账号及注册成功企业开发者需要的资料(包括但不限于,因为个人平台对于资料的审核都有好几种方式

    1. 联系人姓名

    2. 联系人手机号

    3. 联系人邮箱

    4. 联系人QQ号

    5. 邮箱

    6. 企业全称

    7. 企业证件号码

    8. 企业地址

    9. 统一社会信用代码(营业执照统一社会信息代码注意使用大写字母,以及区分字母”О“和数据”0“的区别)

    10. 营业执照(三证合一),电子照片就可以,腾讯开放平台需要在营业执照上手写一行文字,然后文字上盖章签字再拍照的。在这里插入图片描述

    11. 企业管理员实名认证(小米开放平台有这个环节,此阶段需要设置管理员身份:企业法定代表人或企业授权代理人,选择完之后需要扫描码进行企业实名认证)

    12. 身份证号

    13. 身份证头像面、国徽面照片(信息清晰可见)

    14. 法定代表人手持身份证照片两张,国徽面、人像面,照片示例如下图在这里插入图片描述

    15. 开户银行

    16. 开户行支行

    17. 开户号

    18. 企业公对公账号

      以上资料仅为注册成为各开放平台的企业开发者账号所需。建议这一环节让负责公司账号的人去进行申请创建,实在没人的话就开发者自己上。
      最好在App项目启动之前就搞定,最好不要等到项目写完了,测试完了,说要上架了,这个资料的审核不是加班能解决的,需要一定的时间,提前申请完成

    三、应用上架资料

      应用上架也有很多的坑,各个平台的要求还不太一样,我自己上架应用只有过普通应用和软硬件相结合的应用,游戏没有上架过,还不是很清楚,后面有这方面经历之后我再补充,当然有朋友上架过,可以说说,我加到文章中。应用上架所需资料如下:

    1. 应用名称,这个应用名称很重要,你在平台上创建应用的名称必须与你APK中的应用名称一致,否则会审核失败,其次要与你的软件著作权上的软件名称一致,否则有的平台看你的软著和App应用名称不一致就不会让你过审

    2. 应用图标,也就是LOGO,这里就看你自己会不会改图片尺寸,不会就找UI,公司没有UI就自己百度上看一下就会了,还有就是对于应用图标的尺寸,不同平台有不同的要求,我所知的有16x16、32x32、64x64、128x128、200x200、216x216、256x256、512x512,以上的图标都可以备一个,有备无患。

    3. 应用简介,应用简介分两种,一种是一句话简介,一种是详细的简介,两个都需要,简介的要求是不允许夸大事实,要实事求是,不能出现最、第一、最权威等充斥着噱头的字眼,对字数有一定要求,各平台不同。

    4. 软件著作权 ,软件著作权需要提前申请,最好是在项目开发一周以后,当你的项目框架搭建完成,有一些核心代码的时候去申请,申请软件需要注明软件的名称和版本,例如聊天App V1.0,还有软著的申请是需要贴代码的,最后,软著的申请可以通过网络渠道找一些公司帮你去申请,花点小钱即可,当然钱多钱少关系到申请的快慢,比如1个月可讷可能只要300 ~ 400,而两三天的就需要3000 ~ 4000,提前申请就能省下一部分钱,还是那句话没有人就开发者自己去申请。

    5. 软件安装包,Apk格式 标准APK命名是应用名称+版本号。

    6. 应用截图, 应用截图最低三张及以上,也有平台要四张及以上的,多准备准没错,截图最好不要包括App的启动页面,其他的截图最好是能够突出你的App的功能和信息的,应用截图各平台要求不同则尺寸不一样,我知道的尺寸有450x800、480x800、1080x1920,提前准备,有备无患。

    7. 隐私政策, 如果你不知道隐私政策是什么东西,可以参考一下这个链接App隐私政策,注意这个隐私政策需要是一个网址,这个网址最好是在你公司的官网下,因为这个隐私政策还需要在App上提现出来,例如腾讯开放平台
      在这里插入图片描述
      需要你在软件启动之后有一个可以查看隐私政策的入口,我这里用的是弹窗,文本中有一个绿色的《隐私政策》点击后跳转到隐私政策的页面,这里面可以放一个网址,显示你的隐私政策,用WebView或者用富文本都可以。

    8. ICP备案号,ICP备案号,就是你的APP中的访问网络的ip地址的备案,一般来说不备案的地址是用不了的,在国内起码是这样的。这个备案号有的平台要网页截图,有的需要网页截图打印出来盖章之后再拍照的图片,有的只要输入备案号就可以了

    9. App使用视频,如果你的App是软硬件相结合的,例如物联网App,则需要拍一个使用视频,提现App的用法和硬件的用法即可。

    四、等待平台审核

      当你的资料填写完成之后,就会进入平台的审核环境,有的是1 ~ 3天,也有3 ~ 5,运气好可能一遍就过了,运气不好没过,平台会告诉你为什么没过,然后解决后再提交审核,反反复复的,开发者最好提交了审核之后最好每天去看一个两次,争取在最短时间内解决问题,因为平台的应用的审核状态,会联系注册企业账号的哪个人,如果那不是你,则自己通过账号去查看审核状态。

      最后一点,记得对各个平台的账号进行一个文档保存,对于提交审核的资料进行保存,以后要找的时候能够第一时间找到,对公司和对自己都比较好,切记、切记、切记。

    上高水从,后会有期~

    展开全文
  • 安卓手机运维助手APP开发与应用.pdf
  • Android应用源码之app更新,实现service下载.zip
  • 基于Android的校园服务APP的研究与应用.pdf
  • 安卓APP应用启动流程详解

    千次阅读 2022-06-02 17:18:11
    Android 应用启动流程详解

    一、安卓app启动流程(冷启动)分析:

    一般来说,冷启动包括以下几个步骤:

    1、启动APP进程: 当我们点击Launcher桌面程序的APP图标时,Launcher程序会调用startActivity()函数,通过Binder跨进程通信,发送消息给system_server进程。在system_server进程中,由AMS通过socket通信告知Zygote进程fork出一个子进程(APP进程)。

    2、开启APP主线程: APP进程启动后,会实例化一个ActivityThread,并执行其main函数,同时会创建ApplicationThread、Looper、Handler对象,开启主线程消息循环Looper.loop()。

    3、创建并初始化Application和Activity: ActivityThread的main函数通过调用attach方法进行 Binder 通信,通知system_server进程执行AMS的attachApplication方法。在attachApplication方法中,AMS分别通过bindApplication、scheduleLaunchActivity方法,通知APP进程的主线程Handler,对APP进程的Application和Activity进行初始化,并执行Application、Activity的生命周期。

    4、UI布局和绘制: 主线程Handler初始化Activity时,会执行创建PhoneWindow、初始化DecorView的操作,并且添加布局到DecorView的ContentView中。ContentView,对应着Activity的setContentView中设置的layout.xml布局文件所在的最外层父布局。Android视图层次结构如下图:

    在这里插入图片描述

    APP启动流程图

    在这里插入图片描述

    二、启动过程中涉及到的关键角色介绍:

    1、Zygote进程: Android系统启动过程中,会先启动linux内核,然后加载init.rc文件,启动init进程。然后,init进程通过解析init.rc文件fork生成Zygote进程,该进程也是Android系统的首个Java进程。之后Zygote进程负责孵化System Server进程和APP进程。

    2、SystemServer进程: 由Zygote进程fork生成,SystemServer是Zygote孵化的第一个进程。负责启动、管理整个Java Framework,系统里面重要的服务都是在这个进程里面开启的,比如AMS(ActivityManagerService)、PMS(PackageManagerService)、WMS(WindowManagerService)。

    3、APP进程: Zygote进程在App层中孵化出的第一个进程是Launcher进程,即手机的桌面APP。Zygote还会孵化出Browser、Email、Phone等APP进程,每个APP至少运行在一个进程上。所有APP进程都由Zygote进程fork生成。

    4、Android系统里的Client/Server模式: 平时我们所熟知的前端(Web\Android\iOS)通过网络与服务器通信是客户端-服务端模式的体现,而在Android Framework中,四大组件的创建、生命周期也是通过这样的模式进行通信。
    服务器端(server):指的就是SystemServer进程,这个进程提供了很多服务,比如AMS、PMS、WMS等等,所有的APP进程都可以与其通信。
    客户端(client):指的就是各个独立的APP进程。
    Android开发中,我们可以通过Package包名和Activity类名,来打开一个APP。实际上,项目里的业务代码startActivity()方法并不是直接创建进程、拉起APP的。而是通过一系列的调用,把请求传递给SystemServer的AMS。AMS收到来自客户端的请求后,再通知zygote进程来fork一个新进程,来开启我们的目标APP。APP中所有Activity的生命周期过程,都由AMS(SystemServer进程)统一调度,并在APP自身进程中具体完成。

    这个过程涉及到3个进程:APP进程、SystemServer进程、Zygote进程。
    APP进程与SystemServer进程通过Binder机制,进行跨进程通信。
    SystemServer进程与Zygote进程通过Socket,进行跨进程通信。
    

    5、Android Binder机制: 在Android系统中,一个进程的空间,分为用户空间和内核空间两部分。进程内的用户空间和内核空间可以进行数据交互。进程间的用户空间是隔离开来的,只有内核空间能进行数据交互。
    APP进程与SystemServer进程的交互,就是通过Binder机制进行跨进程通信(IPC),实现进程间的内核数据交互过程。Android专门设计了2个Binder接口,用作交互使用。

    IApplicationThread: 作为系统进程请求应用进程的接口。
    IActivityManager: 作为应用进程请求系统进程的接口。
    

    总结

    在Android中,所有应用都是一个独立的进程。
    每个应用进程都是由Zygote进程fork出来的。
    应用启动是一个跨进程的复杂工作,应用启动流程主要是围绕着SystemServer的ActivityManagerService和应用进程的ActivityThread展开的。
    APP应用的启动流程内容比较多,可以通过Launcher响应屏幕点击、APP进程的创建、Application初始化、UI布局和绘制这四部分来理解。

    展开全文
  • 某些共享电单车的友商最近推出了手机碰一碰NFC自动跳转到App自动开锁的功能,这个对于用户体验是有提升的,所以研究了一下。 友商的逻辑是这样的 如果已安装App,接触NFC自动跳转到...如果未安装App,则跳转到应用市场

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 493,210
精华内容 197,284
热门标签
关键字:

安卓应用市场下载app