当前位置:   article > 正文

uni-app 配置编译环境与动态修改manifest,2024非科班生的Android面试之路_manifest 动态编译

manifest 动态编译

} else if (process.env.NODE_ENV === ‘test’) {

//测试环境

_config = require('./libs/env.test.js')
  • 1
  • 2
  • 3

} else if (process.env.NODE_ENV === ‘production’

		|| process.env.NODE_ENV === 'prod') {

//生产环境

_config = require('./libs/env.prod.js')
  • 1
  • 2
  • 3
  • 4
  • 5

} else if (process.env.NODE_ENV === ‘rc’) {

//rc环境

_config = require('./libs/env.rc.js')
  • 1
  • 2
  • 3

}

// 给环境变量 process.uniEnv 赋值 使用 process.uniEnv.baseUrl

if (_config) {

process.uniEnv = {};

for (let key in _config) {

	process.uniEnv[key] = _config[key];

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

}




3、对应网络环境域名配置  

这里例举一个简单的实例:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

const config = {

baseUrl: ‘http://baidu.com’, // 主域名

aaaUrl: 'http://aaa.com',

bbbUrl: 'http://bbb.com',

......

environment: 'dev'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

}

module.exports = config;




4、在根目录的 `main.js` 中导入



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

// 网络环境配置(导入便会执行)

import ‘./env/env.js’




[]( )二、动态修改manifest.json参数

========================================================================================



通过以上,根据不同的编译方式,可以自动的切换不同的网络环境。  

但是这时候又碰到了一个问题。不同的网络环境,可能还需要配置不同的小程序appid。作为一个慵懒的程序员,根据不同的网络环境,手动去修改appid那是不可能的。



动态配置appid,本质就是要动态配置 `manifest.json` 文件内容,先简单了解下该文件的结构:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

{

"name" : "小程序名称",

"appid" : "__UNI__9329D99",

"description" : "",

"versionName" : "1.0.0",

"versionCode" : "100",

"transformPx" : false,

"mp-weixin" : {

    "appid": "wxe6fc48a27f7591b1",

    "setting" : {

        "urlCheck" : false,

        "es6" : true,

        "postcss" : true,

        "minified" : true

    },

    "usingComponents" : true,

    "permission" : {

        "scope.userLocation" : {

            "desc" : "测试"

        }

    }

},
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

}




由以上可知,需要修改的是 `mp-weixin.appid` 的内容,具体实现步骤如下:



[]( )1、创建文件

-------------------------------------------------------------------------



在src根目录下  

在src根目录下  

在src根目录下  

重要事情说三遍(可视化创建的项目,在项目的根目录下)。创建 `modifyManifest.js` ,并实现如下代码:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

const fs = require(‘fs’)

//此处如果是用HBuilderX创建的项目manifest.json文件在项目跟目录,如果是 cli 创建的则在 src 下,这里要注意

//process.env.UNI_INPUT_DIR为项目所在的绝对路径,经测试,相对路径会找不到文件

const manifestPath = process.env.UNI_INPUT_DIR + ‘/manifest.json’

let Manifest = fs.readFileSync(manifestPath, { encoding: ‘utf-8’ })

function replaceManifest(path, value) {

const arr = path.split(‘.’)

const len = arr.length

const lastItem = arr[len - 1]

let i = 0

let ManifestArr = Manifest.split(/\n/)

for (let index = 0; index < ManifestArr.length; index++) {

const item = ManifestArr[index]

if (new RegExp(`"${arr[i]}"`).test(item)) ++i;

if (i === len) {

  const hasComma = /,/.test(item)

  ManifestArr[index] = item.replace(new RegExp(`"${lastItem}"[\\s\\S]*:[\\s\\S]*`), `"${lastItem}": ${value}${hasComma ? ',' : ''}`)

  break;

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

}

Manifest = ManifestArr.join(‘\n’)

}

// 动态配置 appid

if (process.env.NODE_ENV === ‘production’

|| process.env.NODE_ENV === 'prod'

|| process.env.NODE_ENV === 'rc'){

replaceManifest('mp-weixin.appid', '正式和预发网络环境的appid')
  • 1
  • 2
  • 3
  • 4
  • 5

}else {

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

学习福利

【Android 详细知识点思维脑图(技能树)】

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/710342
推荐阅读
相关标签
  

闽ICP备14008679号