android中实现无后端应用更新

1、引言

        诸如下载文件之类的操作必然会大量占用服务器的带宽,影响用户访问,今天就教大家实现无后端模式下实现应用更新,整个过程中不需要我们提供对应的后端程序,自然也不需要消耗我们的服务器资源,而且还可以动态更改数据,让用户能获取到最新版本应用的信息并实现下载功能,源码下载地址会放在文章末尾,请自行下载源码对照。

2、实现原理

        要实现此功能需要借助爬虫程序主动获取数据,这里我是把下载更新相关的信息放在百度网盘,让用户去爬取该数据,然后解析出对应的蓝奏云网盘的真实下载地址,实现下载功能,用户可以更改分享出去的百度网盘链接的子文件目录数据,让用户获取到不同的数据,从而动态改变需要下载的最新版本应用的下载地址和版本号。

3、实现步骤

3.1、应用上传

        这里需要把apk文件更改文件后缀为zip后上传蓝奏云网盘,因为蓝奏云网盘apk格式文件下载规则有变化,所以需要修改文件后缀,我目前的解析规则不能直接下载apk格式文件,上传后保存下载链接。

3.2、数据加密

        先把蓝奏云下载链接转化为16进制文本数据,然后在加密后的16进制文本数据前加上分隔符和版本更新标记和版本号,并用分隔符隔开。说明一下,这里使用16进制文本加密的意义是因为我是使用文件夹名称存储数据,部分符号不能使用,所以需要加密,我的加密后的最终数据如下图所示:

3.3、16进制加密和解密代码

        这个加密和解密方式是网上找的,这里感谢提供加密算法的那位朋友,自己使用时请更改代码中加密字符串所需的字符顺序,防止被别人解析。

    /**
     * 字符串转换成为16进制(无需Unicode编码),转化后大小会翻倍
     * @param str
     * @return
     */
    public static String strToHex(String str) {
        char[] chars = "54E017CD9623AB8F".toCharArray();//这里改变编码顺序
        StringBuilder sb = new StringBuilder("");
        byte[] bs = str.getBytes();
        int bit;
        for (int i = 0; i < bs.length; i++) {
            bit = (bs[i] & 0x0f0) >> 4;
            sb.append(chars[bit]);
            bit = bs[i] & 0x0f;
            sb.append(chars[bit]);
            // sb.append(' ');
        }
        return sb.toString().trim();
    }
    /**
     * 16进制直接转换成为字符串(无需Unicode解码)
     * @param hexStr
     * @return
     */
    public static String hexToStr(String hexStr) {
        String str = "54E017CD9623AB8F";
        char[] hexs = hexStr.toCharArray();
        byte[] bytes = new byte[hexStr.length() / 2];
        int n;
        for (int i = 0; i < bytes.length; i++) {
            n = str.indexOf(hexs[2 * i]) * 16;
            n += str.indexOf(hexs[2 * i + 1]);
            bytes[i] = (byte) (n & 0xff);
        }
        return new String(bytes);
    }

3.4、把加密数据放在百度网盘

        在百度网盘中创建一个文件夹,然后把链接分享出去,并放在应用在,然后在该文件夹中创建一个子文件夹,把子文件夹名字用加密后的最终数据表示,效果如图所示:

3.5、b站效果演示

android中无后端模式下实现动态应用更新演示视频

 

4、源码下载地址

http://code.drjtrtj.xyz/downCode?id=4

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 是一个前端框架,通常需要与后端进行交互才能实现增删改查功能。但是,我们可以使用一些模拟数据或者第三方 API 来模拟后端接口,以实现后端的增删改查项目。 以下是一个简单的示例: 1. 创建一个 Vue 项目: ``` vue create my-project ``` 2. 安装 axios,用于发送 HTTP 请求: ``` npm install axios ``` 3. 在 src 目录下创建一个 mock 文件夹,用于存放模拟数据。 4. 创建一个 mock 数据文件,例如 users.js,用于模拟用户数据: ```javascript const users = [ { id: 1, name: 'John Doe', email: '[email protected]' }, { id: 2, name: 'Jane Smith', email: '[email protected]' }, { id: 3, name: 'Bob Johnson', email: '[email protected]' }, ]; export default users; ``` 5. 在 src 目录下创建一个 api 文件夹,用于存放 API 接口。 6. 创建一个 users.js 文件,用于定义用户相关的 API 接口: ```javascript import axios from 'axios'; const BASE_URL = 'http://localhost:3000'; // 模拟后端接口的基础 URL export function getUsers() { return axios.get(`${BASE_URL}/users`); } export function getUser(id) { return axios.get(`${BASE_URL}/users/${id}`); } export function createUser(data) { return axios.post(`${BASE_URL}/users`, data); } export function updateUser(id, data) { return axios.put(`${BASE_URL}/users/${id}`, data); } export function deleteUser(id) { return axios.delete(`${BASE_URL}/users/${id}`); } ``` 7. 在 src 目录下创建一个 views 文件夹,用于存放组件。 8. 创建一个 Users.vue 组件,用于展示用户列表和实现增删改查功能: ```html <template> <div> <h1>Users</h1> <table> <thead> <tr> <th>ID</th> <th>Name</th> <th>Email</th> <th></th> </tr> </thead> <tbody> <tr v-for="user in users" :key="user.id"> <td>{{ user.id }}</td> <td>{{ user.name }}</td> <td>{{ user.email }}</td> <td> <button @click="editUser(user)">Edit</button> <button @click="deleteUser(user)">Delete</button> </td> </tr> </tbody> </table> <h2>{{ formTitle }}</h2> <form @submit.prevent="submitForm"> <label for="name">Name:</label> <input type="text" id="name" v-model="form.name" required> <label for="email">Email:</label> <input type="email" id="email" v-model="form.email" required> <button type="submit">{{ formAction }}</button> </form> </div> </template> <script> import { getUsers, createUser, updateUser, deleteUser } from '@/api/users'; export default { name: 'Users', data() { return { users: [], formTitle: 'Add User', formAction: 'Add', form: { name: '', email: '', }, }; }, created() { this.loadUsers(); }, methods: { loadUsers() { getUsers() .then(res => { this.users = res.data; }) .catch(err => { console.error(err); }); }, editUser(user) { this.formTitle = 'Edit User'; this.formAction = 'Save'; this.form = { ...user }; }, deleteUser(user) { const confirmDelete = confirm(`Are you sure you want to delete ${user.name}?`); if (confirmDelete) { deleteUser(user.id) .then(() => { this.loadUsers(); }) .catch(err => { console.error(err); }); } }, submitForm() { if (this.formAction === 'Add') { createUser(this.form) .then(() => { this.loadUsers(); this.clearForm(); }) .catch(err => { console.error(err); }); } else { updateUser(this.form.id, this.form) .then(() => { this.loadUsers(); this.clearForm(); }) .catch(err => { console.error(err); }); } }, clearForm() { this.formTitle = 'Add User'; this.formAction = 'Add'; this.form = { name: '', email: '', }; }, }, }; </script> <style> table { border-collapse: collapse; } th, td { border: 1px solid black; padding: 0.5rem; } </style> ``` 9. 在 App.vue 引入 Users 组件: ```html <template> <div id="app"> <Users /> </div> </template> <script> import Users from '@/views/Users'; export default { name: 'App', components: { Users, }, }; </script> ``` 现在运行项目,即可看到一个简单的无后端增删改查项目。注意,在实际开发,我们通常会使用更完整的后端框架(如 Node.js + Express 或 Spring Boot)来实现 API 接口。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值