当前位置:   article > 正文

uni-app 配置编译环境与动态修改manifest,2024年最新android基础面试题及答案

uni-app 配置编译环境与动态修改manifest,2024年最新android基础面试题及答案

"scripts": {

	// 与点击“发行”编译相同 包位置:dist/build/mp-weixin

	"build:mp-weixin": "cross-env NODE_ENV=production UNI_PLATFORM=mp-weixin vue-cli-service uni-build",

	// 与点击“运行”编译相同 包位置:dist/dev/mp-weixin

	"dev:mp-weixin": "cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch"

},



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

【注意】:复制上述代码的时候,记得把备注删除。否则无法运行。

2、文件配置处理


1、创建如下项目结构配置


.

├── env.js // 网络环境的切换在这里处理

└── libs // 该目录下放置对应的网络环境

    ├── env.dev.js		// 开发环境

    ├── env.prod.js		// 生产环境

    ├── env.rc.js			// 预发环境

    └── env.test.js		// 测试环境



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

2、env.js 代码实现:


// development test rc buildPro/watchPro/production

console.log("==========NODE_ENV:", process.env.NODE_ENV)



let _config = {}

if (process.env.NODE_ENV === 'development'

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

	_config = require('./libs/env.dev.js')

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

	//测试环境

	_config = require('./libs/env.test.js')

}  else if (process.env.NODE_ENV === 'production'

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

	//生产环境

	_config = require('./libs/env.prod.js')

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

	//rc环境

	_config = require('./libs/env.rc.js')

}



// 给环境变量 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
  • 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
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55

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

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


const config = {

  baseUrl: 'http://baidu.com', // 主域名

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

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

	......

	environment: 'dev'

}



module.exports = config;



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

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


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

import './env/env.js'



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

二、动态修改manifest.json参数

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

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

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

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


{

    "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
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

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

1、创建文件


在src根目录下

在src根目录下

在src根目录下

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


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)


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

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

**因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/8bdd0400943801b3aabe5668f131732a.png)
![img](https://img-blog.csdnimg.cn/img_convert/cf4ba57ca9943af858c4c43f1a7449f0.png)
![img](https://img-blog.csdnimg.cn/img_convert/d573b7496cead20797bba7a8e7998715.png)
![img](https://img-blog.csdnimg.cn/img_convert/388fa00170c05f5cd4e62cd5603f63d4.png)
![img](https://img-blog.csdnimg.cn/img_convert/4d95bc72a9478eaf29c8325f4829c161.png)
![img](https://img-blog.csdnimg.cn/img_convert/c3890bb054921ea18e4d209f423f8e3d.png)
![img](https://img-blog.csdnimg.cn/13f2cb2e05a14868a3f0fd6ac81d625c.png)

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

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

**如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)**
![img](https://img-blog.csdnimg.cn/img_convert/719265a82a9efc9444762af0c53d1ce4.png)



## 最后

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

下图是我进阶学习所积累的历年**腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题**,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节

>![](https://img-blog.csdnimg.cn/img_convert/05eae4ac06fc010756df5809615de4c8.webp?x-oss-process=image/format,png)

整理不易,望各位看官老爷点个关注转发,谢谢!祝大家都能得到自己心仪工作。



**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
![img](https://img-blog.csdnimg.cn/img_convert/6974f3f19b2ae7b3fc803821b6764de1.png)
学习所积累的历年**腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题**,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节

>[外链图片转存中...(img-7eDvear8-1712814197879)]

整理不易,望各位看官老爷点个关注转发,谢谢!祝大家都能得到自己心仪工作。



**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
[外链图片转存中...(img-b8sY3xvp-1712814197879)]
  • 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
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号