<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[仰望星空]]></title><description><![CDATA[仰望星空，脚踏实地。觉得为时已晚的时候，恰恰是最早的时候]]></description><link>https://blog.youkuaiyun.com/beyondforme</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; beyondforme]]></copyright><item><title><![CDATA[使用Jenkins打包android apk(MAC)]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/108927153</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/108927153</guid><author>beyondforme</author><pubDate>Mon, 05 Oct 2020 11:36:51 +0800</pubDate><description><![CDATA[一.环境搭建
1.配置Gradle环境
2.下载Jenkins
下载最新的版本（一个 WAR 文件),官网下载地址Jenkins.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关于Jenkins的环境什么系统都支持,配置的方法也差不多.我选择的直接使用war包的方式,因为网上有的说pkg的有问题,我就没用.选择Weekly的 Generic Java package(.war)这个选项.把这个war包放到某个文件下,通过控制台来到当前的文件夹,在控制台输入
java -jar j]]></description><category></category></item><item><title><![CDATA[android Retrofit2 返回json客户端与服务端加密通信]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/108927040</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/108927040</guid><author>beyondforme</author><pubDate>Mon, 05 Oct 2020 11:25:17 +0800</pubDate><description><![CDATA[对response进行解密，retrofit设置自定义的ConverterFactory，因客户端与服务端使用json通信，因此我们参考官方提供GsonConverterFactory编写
Retrofit retrofit = new Retrofit.Builder()
                .client(getOkHttpClient())
                .addConverterFactory(CustomGsonConverterFactory.create())
 ]]></description><category></category></item><item><title><![CDATA[flutter 长按弹出菜单,删除,分享,更多,撤回.]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/104100657</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/104100657</guid><author>beyondforme</author><pubDate>Mon, 05 Oct 2020 11:08:20 +0800</pubDate><description><![CDATA[最近在开发IM软件,需要做:长按弹出菜单,删除,分享,更多,撤回.
先看看效果是不是你想要的



使用处的代码
_menuView() {
    bool isCanRecall = DateTime.now().millisecondsSinceEpoch -
            dateTime.millisecondsSinceEpoch &lt;
        12000;
  ...]]></description><category></category></item><item><title><![CDATA[flutter toast 自定义控件]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/104782721</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/104782721</guid><author>beyondforme</author><pubDate>Mon, 05 Oct 2020 11:07:25 +0800</pubDate><description><![CDATA[### 虽然fluttertoast很好用,还是决定自定义一个,毕竟产品经常需要,黑点,亮点,大点小店,带点图片的......需求,如果需要图片等特殊效果,该下UI即可
```
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class ToastUtils {
 static O...]]></description><category></category></item><item><title><![CDATA[Android无法安装apk,8.0未知来源应用安装权限]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/108507867</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/108507867</guid><author>beyondforme</author><pubDate>Thu, 10 Sep 2020 09:52:18 +0800</pubDate><description><![CDATA[Android 新版本的出现 ，适配Android8.0未知来源应用安装权限处理
1、在清单文件中增加请求安装权限
&lt;uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /&gt;

private void showChangCityDialog() {
    
    CustomDialog.Builder builder = new CustomDialog.Builder(mContext);]]></description><category></category></item><item><title><![CDATA[android 网络权限，华为无网络]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/108507593</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/108507593</guid><author>beyondforme</author><pubDate>Thu, 10 Sep 2020 09:41:51 +0800</pubDate><description><![CDATA[工作中遇到华为P30，居然无网络权限，记忆中，网络不需要动态申请权限呀。研究了半天，Android 10 网络权限，需要在application中添加
&lt;application android:usesCleartextTraffic="true"&gt;


]]></description><category></category></item><item><title><![CDATA[git 查看远程分支，删除远程分支]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/108507470</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/108507470</guid><author>beyondforme</author><pubDate>Thu, 10 Sep 2020 09:35:55 +0800</pubDate><description><![CDATA[项目时间长了，难免有不使用的分支，继续保留难以维护，有必要删除掉
查看远程分支

git branch -a

删除远程分支

git push origin --delete branchName



]]></description><category></category></item><item><title><![CDATA[Android studio 链接调试 mac 个大模拟器]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/108214414</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/108214414</guid><author>beyondforme</author><pubDate>Tue, 25 Aug 2020 09:56:59 +0800</pubDate><description><![CDATA[Android studio 自带模拟器大的飞起，mac 一个劲的呜呜呜呜。
下载夜深等模拟器发现无法与Android studio链接。
1。自己配置好adb环境变量
打开mac-其他-终端
夜神模拟器，x86架构
adb connect 127.0.0.1:62001
网易MUMU模拟器
adb connect 127.0.0.1:7555
逍遥安卓模拟器
adb connect 127.0.0.1:21503
天天模拟器
adb connect 127.0.0.1:6555
海马玩模拟器
adb co]]></description><category></category></item><item><title><![CDATA[flutter IJKPlayer 打包release无法运行，debug一切正常]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/108169373</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/108169373</guid><author>beyondforme</author><pubDate>Sat, 22 Aug 2020 15:37:08 +0800</pubDate><description><![CDATA[项目中引入的 IJKPlayer作为视频播放
发现debug运行，没有任何问题，打包release安卓apk，运行一直报错。
究其原因发现，是插件忘记忽略混淆
只需要加上混淆配置就行
在 proguard 文件加入
-keep class tv.danmaku.ijk.media.player.** {
*;
}



...]]></description><category></category></item><item><title><![CDATA[mac 环境变量不生效]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/108169179</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/108169179</guid><author>beyondforme</author><pubDate>Sat, 22 Aug 2020 15:28:14 +0800</pubDate><description><![CDATA[每次关机开机，mac环境变量就不行了。必须运行source ~/.bash_profile。才能生效， 到此说明bash_profile文件没有任何问题。
那么问题到底出在哪了呢？会不会是系统压根没执行 .bash_profile ？所以我根据系统环境变量的加载顺序，去寻找 /etc 下的两个文件。
新升级的 mac 上有些使用 zsh 这个作为默认的 shell（比如我！！！），所以，在启动 shell 时，默认不会按上面的套路去加载。
如果想要正常加载 .bashrc 文件时，就要找到用户目录下的 .z]]></description><category></category></item><item><title><![CDATA[修改macOS 上的主机名，用户名，终端显示的名称]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/108061291</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/108061291</guid><author>beyondforme</author><pubDate>Mon, 17 Aug 2020 18:58:40 +0800</pubDate><description><![CDATA[### 查看hostname
#### scutil --get LocalHostName
### 修改
#### sudo scutil --set LocalHostName XXX


### 查看 ComputerName 


#### scutil --get ComputerName
### 修改

#### sudo scutil --set ComputerName XXX

![](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fb...]]></description><category></category></item><item><title><![CDATA[苹果新版本,ios14更新体验流程]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/107019796</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/107019796</guid><author>beyondforme</author><pubDate>Mon, 29 Jun 2020 14:37:07 +0800</pubDate><description><![CDATA[前几天观看了在 WWDC 2020 大会上，苹果着重介绍了 iOS14 UI 方面的改进。但实际上，iOS14 还有许多改进是没有在发布会上一一详述的。真正好不好用,只有体验了才能亲身感受.
下载流程
1下载描述文件,安装描述文件,重启手机
2 打开设置,打开通用,点击更新,正常更新即可
安装正确的开发者描述文件后，可以从Apple开发人员中心或通过OTA推送下载iOS14
或者‌iPadOS‌ 14。描述文件下载：http://t.cn/A6LlThr2
下载安装完14的证书,再点击通用,更新,就可以下载]]></description><category></category></item><item><title><![CDATA[苹果新版本,ios14更新体验流程]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/107019568</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/107019568</guid><author>beyondforme</author><pubDate>Mon, 29 Jun 2020 14:27:59 +0800</pubDate><description><![CDATA[前几天观看了在 WWDC 2020 大会上，苹果着重介绍了 iOS14 UI 方面的改进。但实际上，iOS14 还有许多改进是没有在发布会上一一详述的。真正好不好用,只有体验了才能亲身感受.
### 下载流程

### 1下载描述文件,安装描述文件,重启手机

### 2 打开设置,打开通用,点击更新,正常更新即可
安装正确的开发者描述文件后，可以从Apple开发人员中心或通过OTA推送下载iOS14
或者‌iPadOS‌ 14。描述文件下载：http://t.cn/A6LlThr2
下载安装完14的证书,]]></description><category></category></item><item><title><![CDATA[swift中Class和Struct的区别]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/106366242</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/106366242</guid><author>beyondforme</author><pubDate>Tue, 26 May 2020 22:01:22 +0800</pubDate><description><![CDATA[struct SRectangle {
    var width = 200
}

class CRectangle {
    var width = 200
}

虽然两者写法看起来很像,其实区别还是很大的
1.类属于引用类型，结构体属于值类型
2.类允许被继承，结构体不允许被继承
3.类中的每一个成员变量都必须被初始化，否则编译器会报错，而结构体不需要，编译器会自动帮我们生成init函数，给变量赋一个默认值

喜欢可以加Q群号:874826112,一起学习,成长,交流工作经验,
记得要点赞,评论哦?]]></description><category></category></item><item><title><![CDATA[swift中==与===的区别]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/106366102</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/106366102</guid><author>beyondforme</author><pubDate>Tue, 26 May 2020 21:54:51 +0800</pubDate><description><![CDATA[==只是比较两个变量的值，并不会比较它们的指针是否指向同一内存
===不仅比较两个变量的值，还会比较它们的指针是否指向同一内存
比较两个对象即使返回true这两个对象也不一定是完全相同的，可能只是对象的属性值相同，而=返回true则证明比较的对象是完全一致的
let str1 = "快乐的字符串"
let str2 = "快乐的字符串"
let str3 = "开心的字符串"

str1 == str2  // true
str1 == str3  // false

class Student: Equa]]></description><category></category></item><item><title><![CDATA[kotlin 枚举]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/106365636</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/106365636</guid><author>beyondforme</author><pubDate>Tue, 26 May 2020 21:33:07 +0800</pubDate><description><![CDATA[在数学和计算机科学理论中，一个集的枚举是列出某些有穷序列集的所有成员的程序，或者是一种特定类型对象的计数。这两种类型经常（但不总是）重叠。
枚举是一个被命名的整型常数的集合，枚举在日常生活中很常见，例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。
枚举的说明与结构和联合相似，其形式为：
enum 枚举名{
    标识符①[=整型常数],
    标识符②[=整型常数],
    ...
    标识符N[=整型常数]]></description><category></category></item><item><title><![CDATA[swift 枚举]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/106365527</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/106365527</guid><author>beyondforme</author><pubDate>Tue, 26 May 2020 21:27:30 +0800</pubDate><description><![CDATA[在数学和计算机科学理论中，一个集的枚举是列出某些有穷序列集的所有成员的程序，或者是一种特定类型对象的计数。这两种类型经常（但不总是）重叠。 [1]  是一个被命名的整型常数的集合，枚举在日常生活中很常见，例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。
枚举
enum Movement:Int {
    case left = 0
    case right = 1
    case top = 2
    ca]]></description><category></category></item><item><title><![CDATA[kotlin 递归]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/106365244</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/106365244</guid><author>beyondforme</author><pubDate>Tue, 26 May 2020 21:14:49 +0800</pubDate><description><![CDATA[程序调用自身的编程技巧称为递归（ recursion）。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法，它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解，递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算，大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说，递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时，递归前进；当边界条件满足时，递归返回。
var count = ]]></description><category></category></item><item><title><![CDATA[swift 递归]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/106364909</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/106364909</guid><author>beyondforme</author><pubDate>Tue, 26 May 2020 20:58:56 +0800</pubDate><description><![CDATA[何为递归 :
递归（英语：Recursion），又译为递回，在数学与计算机科学中，是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如，当两面镜子相互之间近似平行时，镜中嵌套的图像是以无限递归的形式出现的。也可以理解为自我复制的过程。
func sumAdd(num :Int) -&gt; Int{
    if num == 1{
        return 1
    }
    else{
        print("add \(num)")
       ]]></description><category></category></item><item><title><![CDATA[swift可变参数...]]></title><link>https://blog.youkuaiyun.com/beyondforme/article/details/106358650</link><guid>https://blog.youkuaiyun.com/beyondforme/article/details/106358650</guid><author>beyondforme</author><pubDate>Tue, 26 May 2020 16:14:41 +0800</pubDate><description><![CDATA[Swift 中得到了前所未有的简化。现在，写一个可变参数的函数只需要在声明参数时在类型后面加上 … 就可以了。比如下面就声明了一个接受可变参数的 Int 累加函数：

func sum(input: Int...) -&gt; Int {
    //...
}


喜欢可以加Q群号:874826112,一起学习,成长,交流工作经验,
记得要点赞,评论哦????;
更多相关内容请点击主页查看…
简书： https://www.jianshu.com/u/88db5f15770d
csdn：https://m]]></description><category></category></item></channel></rss>