资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

flutter混淆,flutter 混编

flutter-android打包

android打包教程:

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了邳州免费建站欢迎大家使用!

1、在AndroidManifest中确定app的名字:

2、在app/build.gradle中设置安卓兼容版本targetSdkVersion和最低版本minSdkVersion,还有编译版本compileSdkVersion,还有设置包名applicationId,一般不用设置,除非你是要变更

4、添加启动图标,图标资源文件的位置如下:

看到这个文件的时候,就说明创建证书成功了

6、配置项目证书

在android目录下新建一个file文件key.properties,然后填写证书的信息如下:

7、启用混淆

在app路径中添加proguard-rules.pro文件(这个百度下就好了)

8、构建flutter build apk

【百度地图篇】1.Flutter+百度Sdk实现地图功能 & 百度地图显示网格问题

我是初学者小白,所以很多看法不深,理解也不够透彻。但是很适合小白们一起从低角度往高处探索。文中有错误的,感谢指正,一起进步。

趁着假期做一个Flutter的地图功能,因为后端选用了百度地图,所以前端没得挑。找了遍插件,并没有现成可用的。(不过发现了百度官方也自开发Flutter插件,目前功能只有一个获取本地位置信息,后期会继续增加吧?很期待!)

参考帖子:

这个实际上跟功能之间没太大关系,只是我按照个人摸索的过程来写。

当对一个“领域/知识块”完全不懂的时候,360°的方向都不确定的话。先了解基础概念,有利于你确定自己的摸索方向。

参考帖子:

中间我跳过了几十,上百个帖子的摸索过程。这个才是关键能够真正做事的参考。

因为百度的sdk还算是很完善的,所以一旦出问题,都会有对应的报错提示。

我是使用flutter插件:permission_handler,来解决安卓的动态授权问题,用法简单而且设计合理。

这个错误直接来看,就是签名有问题。怎么查看SHA1码和包名,这里不多说,网上有极其多的方法,百度Sdk开发指南里也有。没那么复杂,也没那么麻烦。按照流程操作就是对的。

实在不放心?跟我一样,flutter打包后,把apk反过来解SHA1码不就行了?

参考帖子:

红色框框基本就是帖子讲解的那样。

蓝色框框见下图:release标签里好像是自己设置了。所以debug标签里面,箭头指向的位置,是我多设置的一个参数。

uid: -1 appid -1 msg: httpsPost failed,IOException:Unable to resolve host "api.map.baidu.com": No address associated with hostname

这一步我是哭笑不得,一开始老是和问题(2)混淆,导致浪费很多时间。仔细阅读后,发现是不能连接到“api.map.baidu.com”。

我打开模拟器的chrome浏览器,发现不能上网。查看手机的dns是10.0.2.3(默认的),和家里wifi不一样,所以不能上网也正常,之前居然没发现这个问题!!!

终端执行:adb shell  和  getprop,就可以查看所有的属性参数了。(window小伙伴自行百度,这个没多大差别。如果你有多个设备,记得自己选好设备。)

在里面找到这一项,就是你的dns参数。有些人是net.dns1,我的是net.eth0.dns1。这个没关系,只是等下指令 稍微改动 就行。

修改dns指令:setprop net.eth0.dns1 192.168.2.1

后面的192.168.2.1是我自己的dns,这个根据自己的情况来填写。不懂的百度下怎么查看自己的dns。

虽然提示设置失败,但是回到模拟器一看,地图已经显示出来了。

嘿嘿,在flutter设定多大的区域,地图就是多大的区域。用起来就很方便了。

过程十分痛苦,因为对flutter不是很熟悉,对Android原生更是了解很少。所以自己就像突然不能讲话,被丢到一个陌生的环境,却要我去找一个人。所以细心很重要,一定要看清楚错误提示,不要错过每一个细节和可能性。

幸好最后解决了问题,开心~

其实如果你仔细阅读过百度官方的文档,会发现里面有关于 地图的生命周期管理 。然后在这里面没有提及到,这一点虽然没提,但不可或缺,小伙伴就自行思考吧。

最后还有一点,其实我的初衷是想实现一个百度地图的plugin,但是苦于能力有限,对Android的不熟悉,最后折戟。我不得已另起项目,然后重新实现地图sdk接入。经过这次对于这些有更多更全面的认知后,有空会再次研究flutter 插件的开发,共勉,奥利给!!!

为什么flutter debug版本和release版本有差别?

为了利用debug工具,大多数程序猿开发的时候使用AS的debug版本,最终发布版本是release版本,但是在这个转变的过程中可能会出现一些意外。

1、releas版本与debug版本的applicationId不一样

为了客户端上两个版本共存,通常debug设置不同applicationId,这会导致需要填写applicationId申请的第三方平台使用不正常,比如小米推送和微信分享等。

2、混淆问题: 一般情况下,debug版本的混淆是关闭的,release版本是打开的

这个坑我是多次涉入。

(1)使用Gson或者FastGson 转换Json字符后提供给某些类使用,比如Adapter。Release版本发现列表不能正常显示,结果是因为混淆的时候没有keep相关的Entity类。

(2) 使用反射,利用类名调起类时,注意keep该类,防止混淆。

使用案例: Switch 分支很多,导致代码很长,阅读困难。因此把switch的String作为类名, 使用反射调起。有新的情况时,只需要增加新类,不需要看以前的分支,也不用放在一个类里面。

Flutter 禁止混淆

新版  Flutter 在打 release 包时会自动混淆,会造成一部分插件不能正常使用。

android { 

buildTypes {

       debug {

            signingConfig signingConfigs.config 

       } 

        release {

            minifyEnabled false 

            useProguard false 

           shrinkResources false 

            }

}

}


本文标题:flutter混淆,flutter 混编
标题路径:http://cdkjz.cn/article/dscdgcj.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220