HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

hshs

jsdthdshshg

jsdthdshshg

mui.tff字体版权问题

版权 字体

mui.tff字体版权是免费商用的吗?谢谢

mui.tff字体版权是免费商用的吗?谢谢

view垂直滚动时与上面的元素重叠

<--这是第一个元素-->  
<view class="tab-wrap">  
    <view class="group-list">  
        <view v-for="item in groupList" :key="item.id" class="group-div"  
        :class="{ selected: item.id === selectedId }" @click="selectGroup(item.id)">  
            <view :class="{ 'text-selected': item.id === selectedId }">{{ item.name }}</view>  
        </view>  
        </view>  
</view>  

<--这是第二个元素-->  
<view class="device-wrap">  
    <view class="content-wrap">  
        <view class="item-wrap" v-for="(device, index) in deviceList" :key="index">   
                        .....  
                 </view>  
        </view>  
</view  

当第二个元素中的子元素太多,就需要进行垂直滚动,此时滚动第二个元素的高度就会溢出,第一个元素没有背景色的情况下,就会与第一个元素重叠,可以给第一个元素加一个背景色

.group-list {  
     background-color: #fff;  
}

这样第二个元素的元素在垂直向上滚动的时候就不会与第一个元素重叠了

继续阅读 »
<--这是第一个元素-->  
<view class="tab-wrap">  
    <view class="group-list">  
        <view v-for="item in groupList" :key="item.id" class="group-div"  
        :class="{ selected: item.id === selectedId }" @click="selectGroup(item.id)">  
            <view :class="{ 'text-selected': item.id === selectedId }">{{ item.name }}</view>  
        </view>  
        </view>  
</view>  

<--这是第二个元素-->  
<view class="device-wrap">  
    <view class="content-wrap">  
        <view class="item-wrap" v-for="(device, index) in deviceList" :key="index">   
                        .....  
                 </view>  
        </view>  
</view  

当第二个元素中的子元素太多,就需要进行垂直滚动,此时滚动第二个元素的高度就会溢出,第一个元素没有背景色的情况下,就会与第一个元素重叠,可以给第一个元素加一个背景色

.group-list {  
     background-color: #fff;  
}

这样第二个元素的元素在垂直向上滚动的时候就不会与第一个元素重叠了

收起阅读 »

一个Android开发者的血泪史

api Android canvas bug反馈

uni-app Canvas API 吐槽大全:一个Android开发者的血泪史

作为一名资深Android开发者,当我满怀信心地转战uni-app开发时,万万没想到会在Canvas API这里栽了个大跟头。今天就来深度吐槽一下这个让人又爱又恨的uni.canvasToTempFilePath

🔥 开篇吐槽:文档与现实的鸿沟

官方文档说的很美好

uni.canvasToTempFilePath({  
  canvasId: 'myCanvas',  
  success: (res) => {  
    console.log('导出成功!', res.tempFilePath)  
  }  
})

看起来很简单对吧?就像Android的Bitmap.compress()一样简洁明了。然而现实是...

实际使用时的地狱模式

// 在微信小程序中运行  
uni.canvasToTempFilePath({  
  canvasId: 'myCanvas',  
  success: (res) => {  
    console.log('这行永远不会执行')  
  },  
  fail: (error) => {  
    console.error('canvasToTempFilePath:fail fail canvas is empty')  
    // 欢迎来到调试地狱 🔥  
  }  
})

💀 死亡三连击:跨平台兼容性问题

第一击:API参数不统一

H5平台

uni.canvasToTempFilePath({  
  canvasId: 'myCanvas', // 用字符串ID  
  x: 0, y: 0,  
  width: 300, height: 200,  
  success: (res) => { /* 正常工作 */ }  
})

微信小程序

// 方式1:老版本Canvas(已废弃但文档还在推荐)  
uni.canvasToTempFilePath({  
  canvasId: 'myCanvas', // 经常莫名其妙失败  
  // ...  
})  

// 方式2:Canvas 2D(新版本但uni-app支持有问题)  
uni.canvasToTempFilePath({  
  canvas: canvasInstance, // 需要Canvas实例,不是ID  
  // destWidth和destHeight可能导致崩溃  
  // ...  
})

作为Android开发者的我内心OS:这就像Android中Bitmap.createBitmap()在不同API级别有完全不同的参数要求,但Google从来不会这么搞!

第二击:神秘的"canvas is empty"错误

这个错误出现的频率和莫名其妙程度堪比Windows的蓝屏:

// 明明Canvas上有内容,肉眼可见  
ctx.fillStyle = '#FF0000'  
ctx.fillRect(0, 0, 100, 100) // 绘制了一个红色方块  

// 立即导出  
uni.canvasToTempFilePath({  
  canvasId: 'myCanvas',  
  fail: (error) => {  
    // 结果:canvas is empty  
    // 我:???红色方块是我眼花了吗?  
  }  
})

可能的原因(官方永远不会告诉你的)

  1. 绘制还没完成就开始导出
  2. Canvas context被重置了
  3. 微信小程序的Canvas 2D有bug
  4. 设备像素比设置有问题
  5. 月亮不够圆(玄学)

第三击:TypeScript支持形同虚设

// uni-app的类型定义  
interface CanvasToTempFilePathOptions {  
  canvasId?: string  
  canvas?: any // 看到这个any了吗?就是在告诉你:自求多福  
  x?: number  
  y?: number  
  // ... 一堆可选参数,但不告诉你哪些是必需的  
}  

// 实际使用时  
uni.canvasToTempFilePath({  
  canvasId: 'test'  
  // TypeScript:✅ 类型检查通过  
  // 运行时:💥 missing required parameter 'componentInstance'  
  // 我:🤬  
})

在Android中,如果方法签名是createBitmap(width: Int, height: Int, config: Bitmap.Config),那就是必须传这三个参数,不会搞什么"看起来可选实际必需"的把戏。

🎭 平台差异大赏

Canvas 2D vs 传统Canvas

// 传统Canvas(将被废弃,但文档还在推荐)  
<canvas canvas-id="oldCanvas" />  

uni.canvasToTempFilePath({  
  canvasId: 'oldCanvas', // 字符串ID  
  // 在某些平台可能工作  
})  

// Canvas 2D(新版本,但坑更多)  
<canvas type="2d" id="newCanvas" />  

// 获取Canvas实例的仪式  
const query = uni.createSelectorQuery()  
query.select('#newCanvas')  
  .fields({ node: true }, (res) => {  
    const canvas = res.node  
    const ctx = canvas.getContext('2d')  

    // 设置Canvas尺寸的仪式  
    canvas.width = width * dpr  
    canvas.height = height * dpr  
    ctx.scale(dpr, dpr)  

    // 导出的仪式  
    uni.canvasToTempFilePath({  
      canvas: canvas, // 现在需要实例  
      // 但在微信小程序中可能还是失败  
    })  
  })

这个复杂度让我想起了Android早期的AsyncTask,每次使用都要写一堆样板代码,而且还容易内存泄漏。

🚫 参数陷阱大集合

1. componentInstance:看似可选的必需参数

// 文档说这样就行  
uni.canvasToTempFilePath({  
  canvasId: 'myCanvas'  
})  

// 实际上需要这样  
uni.canvasToTempFilePath({  
  canvasId: 'myCanvas'  
}, this) // 在页面中  
// 或者  
uni.canvasToTempFilePath({  
  canvasId: 'myCanvas'  
}, getCurrentInstance()) // 在setup函数中

为什么不在类型定义中标记为必需?为什么?!

2. destWidth/destHeight:薛定谔的参数

// 在H5中:不设置就用Canvas原始尺寸  
uni.canvasToTempFilePath({  
  canvasId: 'myCanvas'  
  // destWidth和destHeight可以不设置  
})  

// 在微信小程序中:不设置可能导出失败  
uni.canvasToTempFilePath({  
  canvas: canvasInstance,  
  destWidth: 300,  // 必须设置  
  destHeight: 200  // 必须设置  
})  

// 但是设置了又可能导致内存溢出  
// 特别是在高DPI设备上

这种行为在Android中是不可想象的。Bitmap.createScaledBitmap()要么就是必需参数,要么就是可选参数,不会搞这种平台相关的把戏。

3. 设备像素比的迷惑行为

const dpr = uni.getSystemInfoSync().pixelRatio  

// 看似正确的做法  
canvas.width = width * dpr  
canvas.height = height * dpr  
ctx.scale(dpr, dpr)  

uni.canvasToTempFilePath({  
  canvas: canvas,  
  destWidth: width * dpr,    // 可能导致微信小程序崩溃  
  destHeight: height * dpr   // 特别是在iPhone Pro Max上  
})  

// 实际需要的做法(通过无数次试错得出)  
const safeDpr = Math.min(dpr, 2) // 限制DPR避免内存问题  
// 然后在微信小程序中不设置destWidth/destHeight  
// 但在H5中又必须设置  
// 🤯

🔧 被迫的Workaround大全

经过无数个日夜的调试,我总结出了这些"民间智慧":

1. 平台检测大法

// 被迫写出这样的代码  
const platform = process.env.UNI_PLATFORM  

if (platform === 'mp-weixin') {  
  // 微信小程序的特殊处理  
  exportWithWechatNative()  
} else if (platform === 'h5') {  
  // H5的处理方式  
  exportWithUniApp()  
} else {  
  // 其他平台... 祈祷能工作  
  exportAndPray()  
}

在Android中,我们有Build.VERSION.SDK_INT来处理API级别差异,但那是向后兼容的渐进式升级。uni-app这种是直接重新定义API,让开发者自己处理兼容性。

2. 延迟导出大法

// 绘制完成后不能立即导出  
ctx.fillRect(0, 0, 100, 100)  

// 必须等待一段时间  
setTimeout(() => {  
  uni.canvasToTempFilePath({  
    // ...  
  })  
}, 500) // 这个时间是玄学,不同平台不一样

这让我想起了Android早期处理UI更新的方式,但那是因为线程模型的限制。Canvas绘制是同步的,为什么需要延迟?

3. 原生API回退大法

// 在微信小程序中,uni-app API不行就用原生API  
// @ts-ignore  
if (typeof wx !== 'undefined' && wx.canvasToTempFilePath) {  
  wx.canvasToTempFilePath({  
    canvas: canvasInstance,  
    success: resolve,  
    fail: reject  
  })  
} else {  
  // 回退到uni-app API  
  uni.canvasToTempFilePath(options, instance)  
}

这种写法让我想起了jQuery时代的浏览器兼容性处理,但那是2010年的事了!

🎯 对比Android Canvas的优雅

在Android中绘制和导出是多么优雅:

// Android: 简洁、可靠、文档完善  
val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)  
val canvas = Canvas(bitmap)  

// 绘制  
canvas.drawRect(0f, 0f, 100f, 100f, paint)  

// 导出  
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream)

没有平台差异,没有神秘错误,没有需要猜测的参数。工具就应该是这样的:可靠、一致、可预测

💡 给uni-app团队的建议

1. 统一API设计

  • 要么全平台都用Canvas实例,要么都用ID
  • 不要搞平台特定的参数差异

2. 完善类型定义

  • 必需参数就标记为必需
  • 平台特定的参数要在文档中明确说明

3. 提供最佳实践

  • 官方示例应该能在所有平台正常工作
  • 提供平台差异的处理方案

4. 改进错误信息

  • "canvas is empty"这种错误信息毫无意义
  • 应该提供具体的解决方案

🏁 结语:爱恨交织的uni-app

尽管吐槽了这么多,我还是要说uni-app的跨平台能力是很棒的。但是Canvas API确实需要大幅改进。

作为一名Android开发者,我深知API设计的重要性。一个好的API应该是:

  • 直观的:看方法名就知道功能
  • 一致的:相同的输入产生相同的输出
  • 文档完善的:每个参数的作用都清楚说明
  • 向后兼容的:新版本不会破坏旧代码

希望uni-app团队能够听到开发者的声音,把Canvas API做得更好。毕竟,工具的存在是为了提高生产力,而不是增加调试时间。

最后的最后:如果你也在被Canvas API折磨,记住你不是一个人在战斗。我们都是在这个API的坑里摸爬滚打的难兄难弟。


写于某个被Canvas API折磨到凌晨3点的夜晚
一个疲惫但不放弃的Android开发者

📚 相关资源

🏷️ 标签

#uni-app #Canvas #跨平台开发 #API设计 #吐槽 #Android开发者视角

继续阅读 »

uni-app Canvas API 吐槽大全:一个Android开发者的血泪史

作为一名资深Android开发者,当我满怀信心地转战uni-app开发时,万万没想到会在Canvas API这里栽了个大跟头。今天就来深度吐槽一下这个让人又爱又恨的uni.canvasToTempFilePath

🔥 开篇吐槽:文档与现实的鸿沟

官方文档说的很美好

uni.canvasToTempFilePath({  
  canvasId: 'myCanvas',  
  success: (res) => {  
    console.log('导出成功!', res.tempFilePath)  
  }  
})

看起来很简单对吧?就像Android的Bitmap.compress()一样简洁明了。然而现实是...

实际使用时的地狱模式

// 在微信小程序中运行  
uni.canvasToTempFilePath({  
  canvasId: 'myCanvas',  
  success: (res) => {  
    console.log('这行永远不会执行')  
  },  
  fail: (error) => {  
    console.error('canvasToTempFilePath:fail fail canvas is empty')  
    // 欢迎来到调试地狱 🔥  
  }  
})

💀 死亡三连击:跨平台兼容性问题

第一击:API参数不统一

H5平台

uni.canvasToTempFilePath({  
  canvasId: 'myCanvas', // 用字符串ID  
  x: 0, y: 0,  
  width: 300, height: 200,  
  success: (res) => { /* 正常工作 */ }  
})

微信小程序

// 方式1:老版本Canvas(已废弃但文档还在推荐)  
uni.canvasToTempFilePath({  
  canvasId: 'myCanvas', // 经常莫名其妙失败  
  // ...  
})  

// 方式2:Canvas 2D(新版本但uni-app支持有问题)  
uni.canvasToTempFilePath({  
  canvas: canvasInstance, // 需要Canvas实例,不是ID  
  // destWidth和destHeight可能导致崩溃  
  // ...  
})

作为Android开发者的我内心OS:这就像Android中Bitmap.createBitmap()在不同API级别有完全不同的参数要求,但Google从来不会这么搞!

第二击:神秘的"canvas is empty"错误

这个错误出现的频率和莫名其妙程度堪比Windows的蓝屏:

// 明明Canvas上有内容,肉眼可见  
ctx.fillStyle = '#FF0000'  
ctx.fillRect(0, 0, 100, 100) // 绘制了一个红色方块  

// 立即导出  
uni.canvasToTempFilePath({  
  canvasId: 'myCanvas',  
  fail: (error) => {  
    // 结果:canvas is empty  
    // 我:???红色方块是我眼花了吗?  
  }  
})

可能的原因(官方永远不会告诉你的)

  1. 绘制还没完成就开始导出
  2. Canvas context被重置了
  3. 微信小程序的Canvas 2D有bug
  4. 设备像素比设置有问题
  5. 月亮不够圆(玄学)

第三击:TypeScript支持形同虚设

// uni-app的类型定义  
interface CanvasToTempFilePathOptions {  
  canvasId?: string  
  canvas?: any // 看到这个any了吗?就是在告诉你:自求多福  
  x?: number  
  y?: number  
  // ... 一堆可选参数,但不告诉你哪些是必需的  
}  

// 实际使用时  
uni.canvasToTempFilePath({  
  canvasId: 'test'  
  // TypeScript:✅ 类型检查通过  
  // 运行时:💥 missing required parameter 'componentInstance'  
  // 我:🤬  
})

在Android中,如果方法签名是createBitmap(width: Int, height: Int, config: Bitmap.Config),那就是必须传这三个参数,不会搞什么"看起来可选实际必需"的把戏。

🎭 平台差异大赏

Canvas 2D vs 传统Canvas

// 传统Canvas(将被废弃,但文档还在推荐)  
<canvas canvas-id="oldCanvas" />  

uni.canvasToTempFilePath({  
  canvasId: 'oldCanvas', // 字符串ID  
  // 在某些平台可能工作  
})  

// Canvas 2D(新版本,但坑更多)  
<canvas type="2d" id="newCanvas" />  

// 获取Canvas实例的仪式  
const query = uni.createSelectorQuery()  
query.select('#newCanvas')  
  .fields({ node: true }, (res) => {  
    const canvas = res.node  
    const ctx = canvas.getContext('2d')  

    // 设置Canvas尺寸的仪式  
    canvas.width = width * dpr  
    canvas.height = height * dpr  
    ctx.scale(dpr, dpr)  

    // 导出的仪式  
    uni.canvasToTempFilePath({  
      canvas: canvas, // 现在需要实例  
      // 但在微信小程序中可能还是失败  
    })  
  })

这个复杂度让我想起了Android早期的AsyncTask,每次使用都要写一堆样板代码,而且还容易内存泄漏。

🚫 参数陷阱大集合

1. componentInstance:看似可选的必需参数

// 文档说这样就行  
uni.canvasToTempFilePath({  
  canvasId: 'myCanvas'  
})  

// 实际上需要这样  
uni.canvasToTempFilePath({  
  canvasId: 'myCanvas'  
}, this) // 在页面中  
// 或者  
uni.canvasToTempFilePath({  
  canvasId: 'myCanvas'  
}, getCurrentInstance()) // 在setup函数中

为什么不在类型定义中标记为必需?为什么?!

2. destWidth/destHeight:薛定谔的参数

// 在H5中:不设置就用Canvas原始尺寸  
uni.canvasToTempFilePath({  
  canvasId: 'myCanvas'  
  // destWidth和destHeight可以不设置  
})  

// 在微信小程序中:不设置可能导出失败  
uni.canvasToTempFilePath({  
  canvas: canvasInstance,  
  destWidth: 300,  // 必须设置  
  destHeight: 200  // 必须设置  
})  

// 但是设置了又可能导致内存溢出  
// 特别是在高DPI设备上

这种行为在Android中是不可想象的。Bitmap.createScaledBitmap()要么就是必需参数,要么就是可选参数,不会搞这种平台相关的把戏。

3. 设备像素比的迷惑行为

const dpr = uni.getSystemInfoSync().pixelRatio  

// 看似正确的做法  
canvas.width = width * dpr  
canvas.height = height * dpr  
ctx.scale(dpr, dpr)  

uni.canvasToTempFilePath({  
  canvas: canvas,  
  destWidth: width * dpr,    // 可能导致微信小程序崩溃  
  destHeight: height * dpr   // 特别是在iPhone Pro Max上  
})  

// 实际需要的做法(通过无数次试错得出)  
const safeDpr = Math.min(dpr, 2) // 限制DPR避免内存问题  
// 然后在微信小程序中不设置destWidth/destHeight  
// 但在H5中又必须设置  
// 🤯

🔧 被迫的Workaround大全

经过无数个日夜的调试,我总结出了这些"民间智慧":

1. 平台检测大法

// 被迫写出这样的代码  
const platform = process.env.UNI_PLATFORM  

if (platform === 'mp-weixin') {  
  // 微信小程序的特殊处理  
  exportWithWechatNative()  
} else if (platform === 'h5') {  
  // H5的处理方式  
  exportWithUniApp()  
} else {  
  // 其他平台... 祈祷能工作  
  exportAndPray()  
}

在Android中,我们有Build.VERSION.SDK_INT来处理API级别差异,但那是向后兼容的渐进式升级。uni-app这种是直接重新定义API,让开发者自己处理兼容性。

2. 延迟导出大法

// 绘制完成后不能立即导出  
ctx.fillRect(0, 0, 100, 100)  

// 必须等待一段时间  
setTimeout(() => {  
  uni.canvasToTempFilePath({  
    // ...  
  })  
}, 500) // 这个时间是玄学,不同平台不一样

这让我想起了Android早期处理UI更新的方式,但那是因为线程模型的限制。Canvas绘制是同步的,为什么需要延迟?

3. 原生API回退大法

// 在微信小程序中,uni-app API不行就用原生API  
// @ts-ignore  
if (typeof wx !== 'undefined' && wx.canvasToTempFilePath) {  
  wx.canvasToTempFilePath({  
    canvas: canvasInstance,  
    success: resolve,  
    fail: reject  
  })  
} else {  
  // 回退到uni-app API  
  uni.canvasToTempFilePath(options, instance)  
}

这种写法让我想起了jQuery时代的浏览器兼容性处理,但那是2010年的事了!

🎯 对比Android Canvas的优雅

在Android中绘制和导出是多么优雅:

// Android: 简洁、可靠、文档完善  
val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)  
val canvas = Canvas(bitmap)  

// 绘制  
canvas.drawRect(0f, 0f, 100f, 100f, paint)  

// 导出  
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream)

没有平台差异,没有神秘错误,没有需要猜测的参数。工具就应该是这样的:可靠、一致、可预测

💡 给uni-app团队的建议

1. 统一API设计

  • 要么全平台都用Canvas实例,要么都用ID
  • 不要搞平台特定的参数差异

2. 完善类型定义

  • 必需参数就标记为必需
  • 平台特定的参数要在文档中明确说明

3. 提供最佳实践

  • 官方示例应该能在所有平台正常工作
  • 提供平台差异的处理方案

4. 改进错误信息

  • "canvas is empty"这种错误信息毫无意义
  • 应该提供具体的解决方案

🏁 结语:爱恨交织的uni-app

尽管吐槽了这么多,我还是要说uni-app的跨平台能力是很棒的。但是Canvas API确实需要大幅改进。

作为一名Android开发者,我深知API设计的重要性。一个好的API应该是:

  • 直观的:看方法名就知道功能
  • 一致的:相同的输入产生相同的输出
  • 文档完善的:每个参数的作用都清楚说明
  • 向后兼容的:新版本不会破坏旧代码

希望uni-app团队能够听到开发者的声音,把Canvas API做得更好。毕竟,工具的存在是为了提高生产力,而不是增加调试时间。

最后的最后:如果你也在被Canvas API折磨,记住你不是一个人在战斗。我们都是在这个API的坑里摸爬滚打的难兄难弟。


写于某个被Canvas API折磨到凌晨3点的夜晚
一个疲惫但不放弃的Android开发者

📚 相关资源

🏷️ 标签

#uni-app #Canvas #跨平台开发 #API设计 #吐槽 #Android开发者视角

收起阅读 »

解决 nvue 页面 input placeholder-style 无效的问题

nvue Android iOS input

背景:nvue 页面,设置 input 的 placeholder-style 属性不生效。

字体大小 使用 px(像素)

APP 端,属性使用小驼峰命名法:

<input placeholder="请输入" placeholder-style="fontSize: 12px; lineHeight: 12px; color: #666;" />

微信小程序端,属性保持原有写法:

<input placeholder="请输入" placeholder-style="font-size: 12px; line-height: 12px; color: #666;" />
继续阅读 »

背景:nvue 页面,设置 input 的 placeholder-style 属性不生效。

字体大小 使用 px(像素)

APP 端,属性使用小驼峰命名法:

<input placeholder="请输入" placeholder-style="fontSize: 12px; lineHeight: 12px; color: #666;" />

微信小程序端,属性保持原有写法:

<input placeholder="请输入" placeholder-style="font-size: 12px; line-height: 12px; color: #666;" />
收起阅读 »

解决 nvue 页面 uni-popup 不居中的问题

uni-popup

临时解决方案:

<uni-popup type="center">    
  <view class='wrapper'>    
    【这里放弹窗内容】    
  </view>    
</uni-popup>
.wrapper {    
  position: fixed;    
  top: 0;    
  right: 0;    
  bottom: 0;    
  left: 0;    
  z-index: 999999999;    

  justify-content: center;    
  align-items: center;    
}
继续阅读 »

临时解决方案:

<uni-popup type="center">    
  <view class='wrapper'>    
    【这里放弹窗内容】    
  </view>    
</uni-popup>
.wrapper {    
  position: fixed;    
  top: 0;    
  right: 0;    
  bottom: 0;    
  left: 0;    
  z-index: 999999999;    

  justify-content: center;    
  align-items: center;    
}
收起阅读 »

iOS 应用安全加固指南:通过 IPA 混淆与防破解技术实现全面防护

iOS

'''在现代移动应用开发中,安全性已不再是一个可以忽视的领域。随着黑客技术的日益成熟以及用户对隐私保护的重视,开发者必须将安全性嵌入到应用的每一个开发环节中,而不仅仅是在开发的后期进行加固。尤其是对于那些涉及用户数据、支付信息等敏感内容的应用,确保应用的安全性是至关重要的。

本文将介绍iOS应用开发中的安全实践,并结合具体的安全加固技术,如使用Ipa GuardObfuscator-LLVM,从应用的设计、开发、测试到上线过程,为开发者提供一套完整的应用安全防护框架。

项目背景:开发一款智能家居控制App

假设我们正在开发一款智能家居控制App,该应用主要功能包括控制智能设备、设置自动化场景、查看实时数据等。由于该应用涉及到用户家庭的个人信息以及智能设备的远程控制,它必须具备非常高的安全性,尤其是在设备控制权限用户隐私保护方面,稍有疏忽就可能导致严重的安全事故。

因此,我们在开发这款应用时,严格遵循iOS应用安全的最佳实践,从设计开始,到开发过程中不断加固,再到最终上线前的安全测试,每一步都力求做到严谨和高效。

阶段一:安全设计与需求规划

安全设计是确保应用在开发生命周期中始终具备安全防护的第一步。我们需要在初期阶段明确应用的安全需求,并设计相应的防护措施。对于这款智能家居控制App,我们明确了以下几个安全目标:

  1. 防止设备被恶意控制:确保用户通过App对家居设备的控制权限不会被滥用。
  2. 保护用户隐私:保证用户的设备信息、家庭成员数据以及控制历史不会被泄露。
  3. 防止逆向工程:确保应用的代码和通信协议不会被逆向或篡改。

在明确了这些安全目标后,我们为后续的开发工作设计了合适的安全架构,并确定了后续的加固策略。

阶段二:代码加固与资源保护

在功能开发过程中,我们就开始对应用进行加固和防护,确保在代码层面就具备基本的防御能力。主要的加固措施包括:

1. 源码混淆与加密

为了防止黑客通过逆向分析获取应用的代码,我们在源代码层面实施了混淆与加密技术。使用 Obfuscator-LLVM 对关键的控制逻辑进行了混淆,尤其是对设备控制模块、用户身份认证等涉及敏感数据的功能进行了重点保护。通过混淆函数名、类名和变量名,使得即使黑客获得了应用的源代码,也很难理解核心业务逻辑。

2. 加密与资源保护

除了代码混淆外,我们还对已编译的ipa文件进行了加固。使用 Ipa Guard 工具对应用的文件进行深度加密,确保应用的类名、函数名以及资源文件(如配置文件、图片等)都得到了混淆和加密。这样,即使黑客成功解包了应用的ipa文件,也无法从中提取出任何有用的信息。

3. API加密与认证

由于智能家居设备的控制需要与云端服务器进行通信,确保通信过程中的安全性至关重要。我们通过 SSL Pinning 防止中间人攻击,并对所有API接口进行了加密处理。所有用户的控制请求和数据传输均采用 AES 加密,确保数据在传输过程中不会被窃取或篡改。

阶段三:反调试与动态分析防护

为了防止黑客利用调试工具(如Frida)对App进行动态分析,我们在应用中嵌入了反调试机制。具体措施包括:

  1. 反调试技术:一旦检测到调试器的存在,App会触发自毁机制,立即崩溃并退出,防止黑客通过调试获取敏感信息。
  2. 反hook技术:通过使用Frida等动态分析工具,我们对App进行了测试,确保黑客无法通过hook技术绕过安全机制,获取控制权限或破解加密。

阶段四:全面安全测试与漏洞修复

在开发过程中,我们不仅进行了常规的功能测试,还进行了一系列的安全测试,确保每个安全措施都能够有效运行。主要测试包括:

  1. 逆向工程测试
    • 使用 FridaHopper 等工具,我们对已混淆和加密的App进行了全面的逆向工程测试,确保应用的源代码和资源无法被轻易逆向恢复。
  2. 渗透测试
    • 专业的渗透测试团队模拟攻击者,通过多种方式攻击应用,测试是否存在可被绕过的安全漏洞。我们重点测试了设备控制权限、用户隐私保护以及数据加密存储等环节。
  3. 功能验证
    • 所有的安全加固措施完成后,我们对应用进行了全面的功能验证,确保加固不会影响应用的核心功能。特别是在智能设备控制和用户认证功能的测试中,我们确保不会因安全加固措施导致用户体验问题。

阶段五:发布与上线后的安全监控

在完成安全测试并确认无安全漏洞后,我们对应用进行了重签名,并准备提交至App Store进行审核。在上线后,我们并没有停止对应用安全的关注,而是通过以下方式进行持续的监控和更新:

  1. 持续监控与日志记录
    • 通过集成安全监控系统,我们实时监控应用的运行状态,并记录所有敏感操作的日志。这样一旦发生异常或安全事件,我们可以及时响应并进行修复。
  2. 安全更新与补丁发布
    • 为了应对新的安全威胁和漏洞,我们定期发布安全更新和补丁,确保应用始终处于最新的安全防护状态。

总结:从设计到发布的全面应用安全保护

通过实施iOS应用安全最佳实践,我们成功为这款智能家居控制App构建了一个全面的安全防护体系。从最初的安全需求规划,到Ipa Guard代码混淆、资源加密、反调试技术的实施,再到发布后的持续安全监控,每一环节都经过精心设计,确保应用能够在整个生命周期中抵御外部威胁。

这些安全加固措施不仅保护了用户数据和设备控制权限,也增加了破解者攻破应用的难度。通过多层次的防护,我们大大提升了应用的安全性,为用户提供了更安全、更可靠的智能家居体验。'''

继续阅读 »

'''在现代移动应用开发中,安全性已不再是一个可以忽视的领域。随着黑客技术的日益成熟以及用户对隐私保护的重视,开发者必须将安全性嵌入到应用的每一个开发环节中,而不仅仅是在开发的后期进行加固。尤其是对于那些涉及用户数据、支付信息等敏感内容的应用,确保应用的安全性是至关重要的。

本文将介绍iOS应用开发中的安全实践,并结合具体的安全加固技术,如使用Ipa GuardObfuscator-LLVM,从应用的设计、开发、测试到上线过程,为开发者提供一套完整的应用安全防护框架。

项目背景:开发一款智能家居控制App

假设我们正在开发一款智能家居控制App,该应用主要功能包括控制智能设备、设置自动化场景、查看实时数据等。由于该应用涉及到用户家庭的个人信息以及智能设备的远程控制,它必须具备非常高的安全性,尤其是在设备控制权限用户隐私保护方面,稍有疏忽就可能导致严重的安全事故。

因此,我们在开发这款应用时,严格遵循iOS应用安全的最佳实践,从设计开始,到开发过程中不断加固,再到最终上线前的安全测试,每一步都力求做到严谨和高效。

阶段一:安全设计与需求规划

安全设计是确保应用在开发生命周期中始终具备安全防护的第一步。我们需要在初期阶段明确应用的安全需求,并设计相应的防护措施。对于这款智能家居控制App,我们明确了以下几个安全目标:

  1. 防止设备被恶意控制:确保用户通过App对家居设备的控制权限不会被滥用。
  2. 保护用户隐私:保证用户的设备信息、家庭成员数据以及控制历史不会被泄露。
  3. 防止逆向工程:确保应用的代码和通信协议不会被逆向或篡改。

在明确了这些安全目标后,我们为后续的开发工作设计了合适的安全架构,并确定了后续的加固策略。

阶段二:代码加固与资源保护

在功能开发过程中,我们就开始对应用进行加固和防护,确保在代码层面就具备基本的防御能力。主要的加固措施包括:

1. 源码混淆与加密

为了防止黑客通过逆向分析获取应用的代码,我们在源代码层面实施了混淆与加密技术。使用 Obfuscator-LLVM 对关键的控制逻辑进行了混淆,尤其是对设备控制模块、用户身份认证等涉及敏感数据的功能进行了重点保护。通过混淆函数名、类名和变量名,使得即使黑客获得了应用的源代码,也很难理解核心业务逻辑。

2. 加密与资源保护

除了代码混淆外,我们还对已编译的ipa文件进行了加固。使用 Ipa Guard 工具对应用的文件进行深度加密,确保应用的类名、函数名以及资源文件(如配置文件、图片等)都得到了混淆和加密。这样,即使黑客成功解包了应用的ipa文件,也无法从中提取出任何有用的信息。

3. API加密与认证

由于智能家居设备的控制需要与云端服务器进行通信,确保通信过程中的安全性至关重要。我们通过 SSL Pinning 防止中间人攻击,并对所有API接口进行了加密处理。所有用户的控制请求和数据传输均采用 AES 加密,确保数据在传输过程中不会被窃取或篡改。

阶段三:反调试与动态分析防护

为了防止黑客利用调试工具(如Frida)对App进行动态分析,我们在应用中嵌入了反调试机制。具体措施包括:

  1. 反调试技术:一旦检测到调试器的存在,App会触发自毁机制,立即崩溃并退出,防止黑客通过调试获取敏感信息。
  2. 反hook技术:通过使用Frida等动态分析工具,我们对App进行了测试,确保黑客无法通过hook技术绕过安全机制,获取控制权限或破解加密。

阶段四:全面安全测试与漏洞修复

在开发过程中,我们不仅进行了常规的功能测试,还进行了一系列的安全测试,确保每个安全措施都能够有效运行。主要测试包括:

  1. 逆向工程测试
    • 使用 FridaHopper 等工具,我们对已混淆和加密的App进行了全面的逆向工程测试,确保应用的源代码和资源无法被轻易逆向恢复。
  2. 渗透测试
    • 专业的渗透测试团队模拟攻击者,通过多种方式攻击应用,测试是否存在可被绕过的安全漏洞。我们重点测试了设备控制权限、用户隐私保护以及数据加密存储等环节。
  3. 功能验证
    • 所有的安全加固措施完成后,我们对应用进行了全面的功能验证,确保加固不会影响应用的核心功能。特别是在智能设备控制和用户认证功能的测试中,我们确保不会因安全加固措施导致用户体验问题。

阶段五:发布与上线后的安全监控

在完成安全测试并确认无安全漏洞后,我们对应用进行了重签名,并准备提交至App Store进行审核。在上线后,我们并没有停止对应用安全的关注,而是通过以下方式进行持续的监控和更新:

  1. 持续监控与日志记录
    • 通过集成安全监控系统,我们实时监控应用的运行状态,并记录所有敏感操作的日志。这样一旦发生异常或安全事件,我们可以及时响应并进行修复。
  2. 安全更新与补丁发布
    • 为了应对新的安全威胁和漏洞,我们定期发布安全更新和补丁,确保应用始终处于最新的安全防护状态。

总结:从设计到发布的全面应用安全保护

通过实施iOS应用安全最佳实践,我们成功为这款智能家居控制App构建了一个全面的安全防护体系。从最初的安全需求规划,到Ipa Guard代码混淆、资源加密、反调试技术的实施,再到发布后的持续安全监控,每一环节都经过精心设计,确保应用能够在整个生命周期中抵御外部威胁。

这些安全加固措施不仅保护了用户数据和设备控制权限,也增加了破解者攻破应用的难度。通过多层次的防护,我们大大提升了应用的安全性,为用户提供了更安全、更可靠的智能家居体验。'''

收起阅读 »

iOS 性能调试工具实战:构建日志追踪与调试可视化系统

iOS

'''在开发iOS应用的过程中,真正让人头疼的往往不是写业务代码,而是那些“你知道出问题了,但不知道出在哪”的调试场景——

  • App在某些设备偶发卡顿,但本地跑一切正常;
  • 用户反馈崩溃,却没有任何重现路径;
  • 网络接口响应慢,但Charles抓不到请求;
  • 文件明明写入成功,数据就是读取不到;
  • 某功能用电特别猛,苹果电池页面却没有提示。

这类问题的共性是:“不可见”,或者说“不够直观”。我们需要一套机制来把这些原本隐藏的系统行为和App运行状态可视化、结构化地呈现出来,这样才能判断问题本质,而不是陷入“猜Bug”的死循环。

下面是我平时在项目中建立的一套“开发辅助系统”组合方式,每个工具解决一个维度的问题,组合后就能把整个系统状态层层还原出来。


第一层:让App运行状态“可视化”——实时性能监测基础

现代App框架越来越复杂,主线程压力越来越高,一些动画卡顿、首帧加载慢往往在开发环境观察不到。解决这类问题,第一步就是获取设备上实时性能指标

使用工具模块:

  • 克魔:iOS设备级实时监控(无需越狱)
  • Xcode Instruments:函数级别深入分析
  • PerfDog(腾讯出品):适合游戏、图形场景

我一般先用克魔做基础指标查看,它能在非调试环境下直接显示FPS波动、CPU使用率、内存分配曲线、网络延迟等,而且可以指定目标App或微信小程序进行分析。比如最近一个项目,启动动画一顿一顿的,我在克魔中看到启动阶段GPU突然激增、FPS掉到23帧,基本就能锁定是UI线程阻塞。

随后我用Instruments中的Time Profiler配合调用堆栈定位是哪段业务逻辑阻塞了动画帧。


第二层:让问题过程“可追踪”——日志与崩溃捕捉系统

日志其实是App调试中最能体现工程意识的一块。一个好的日志系统不仅能输出信息,还要便于过滤、定位、回溯、导出。Xcode Console虽然方便,但对复杂场景很容易丢信息。

我常用组合:

  • 克魔日志系统:支持关键字搜索、App维度筛选、崩溃日志导出
  • DeviceConsole:小巧灵活,适合命令行拉日志
  • Sentry/Bugly:用于线上错误采集归类

举个例子,有次App后台挂起切换前台时偶发崩溃,通过克魔实时日志,我能看到系统调度后台线程时调用了一个已释放对象,随后堆栈崩了。我用克魔直接导出该段Crashlog,借助符号化处理工具定位到是我们业务层某个Observer未移除。

Sentry那边虽然也收到了该错误,但定位需要堆栈上下文和业务信息才能精确分析,而这在克魔里可以直接过滤App名、线程ID获取完整日志上下文,排查效率提升不少。


第三层:让用户行为“留痕”——资源与能耗分析工具

不少功能上线后发现有用户反馈“电池掉电快”、“某功能用起来卡”,但我们在Xcode里完全看不到任何异常。这时候,观察用户实际行为路径和硬件资源调用就很关键。

使用组合:

  • 克魔使用记录模块:最长6个月设备使用历史,含每个App用电、硬件调用情况
  • Energy Log(Instruments):分析某段时间能耗高点
  • Console/系统日志:匹配后台任务和时间点

我在调试一个定时唤醒的后台下载功能时,发现在一些老设备上后台唤醒后能耗异常高。克魔中显示这个App启动后一直驻留了音频硬件模块,且GPU不降频。我对照系统日志和代码,发现是开发同事未关闭一个音频Session。Energy Log中只能看到电量波动,无法还原唤醒前后行为路径。


第四层:让数据结构“看得清”——文件系统与App目录管理

调试缓存逻辑、配置文件、下载内容等数据文件,通常需要访问App沙盒目录。但现在Finder/iTunes已不再支持查看App内容,开发环境又限制重重。

解决方案组合:

  • 克魔文件浏览模块:无需越狱即可访问完整App沙盒结构,支持文件导入导出
  • iMazing:适合产品经理、测试导出数据
  • SQLite工具 / DB Browser:查看数据库结构

有一次我需要验证视频缓存是否正确按策略清除,就直接用克魔导出Library/Caches/video目录,比用NSFileManager逐级遍历目录高效。还可以结合其解密能力,查看App存储的数据文件是否符合业务设定。


结语:建立你的“调试链条”,让开发更系统化

调试能力不是靠某一个IDE或平台带来的,而是靠开发者自己构建的一套可追踪、可复现、可解释的流程体系。我这几年积累下来的一套组合如下,供你参考:

功能维度 工具组合
性能实时监控 克魔 + PerfDog + Instruments
日志与崩溃 克魔日志模块 + DeviceConsole + Bugly/Sentry
文件数据结构 克魔文件模块 + iMazing + SQLite工具
用户行为追踪 克魔使用记录 + 系统日志 + 能耗图表
符号化分析 导出crashlog + symbolicatecrash工具链

这些工具各自擅长一个领域,把它们搭建成一个调试体系,能让你从一个“解决问题的开发者”进阶成“理解系统行为的工程师”。'''

继续阅读 »

'''在开发iOS应用的过程中,真正让人头疼的往往不是写业务代码,而是那些“你知道出问题了,但不知道出在哪”的调试场景——

  • App在某些设备偶发卡顿,但本地跑一切正常;
  • 用户反馈崩溃,却没有任何重现路径;
  • 网络接口响应慢,但Charles抓不到请求;
  • 文件明明写入成功,数据就是读取不到;
  • 某功能用电特别猛,苹果电池页面却没有提示。

这类问题的共性是:“不可见”,或者说“不够直观”。我们需要一套机制来把这些原本隐藏的系统行为和App运行状态可视化、结构化地呈现出来,这样才能判断问题本质,而不是陷入“猜Bug”的死循环。

下面是我平时在项目中建立的一套“开发辅助系统”组合方式,每个工具解决一个维度的问题,组合后就能把整个系统状态层层还原出来。


第一层:让App运行状态“可视化”——实时性能监测基础

现代App框架越来越复杂,主线程压力越来越高,一些动画卡顿、首帧加载慢往往在开发环境观察不到。解决这类问题,第一步就是获取设备上实时性能指标

使用工具模块:

  • 克魔:iOS设备级实时监控(无需越狱)
  • Xcode Instruments:函数级别深入分析
  • PerfDog(腾讯出品):适合游戏、图形场景

我一般先用克魔做基础指标查看,它能在非调试环境下直接显示FPS波动、CPU使用率、内存分配曲线、网络延迟等,而且可以指定目标App或微信小程序进行分析。比如最近一个项目,启动动画一顿一顿的,我在克魔中看到启动阶段GPU突然激增、FPS掉到23帧,基本就能锁定是UI线程阻塞。

随后我用Instruments中的Time Profiler配合调用堆栈定位是哪段业务逻辑阻塞了动画帧。


第二层:让问题过程“可追踪”——日志与崩溃捕捉系统

日志其实是App调试中最能体现工程意识的一块。一个好的日志系统不仅能输出信息,还要便于过滤、定位、回溯、导出。Xcode Console虽然方便,但对复杂场景很容易丢信息。

我常用组合:

  • 克魔日志系统:支持关键字搜索、App维度筛选、崩溃日志导出
  • DeviceConsole:小巧灵活,适合命令行拉日志
  • Sentry/Bugly:用于线上错误采集归类

举个例子,有次App后台挂起切换前台时偶发崩溃,通过克魔实时日志,我能看到系统调度后台线程时调用了一个已释放对象,随后堆栈崩了。我用克魔直接导出该段Crashlog,借助符号化处理工具定位到是我们业务层某个Observer未移除。

Sentry那边虽然也收到了该错误,但定位需要堆栈上下文和业务信息才能精确分析,而这在克魔里可以直接过滤App名、线程ID获取完整日志上下文,排查效率提升不少。


第三层:让用户行为“留痕”——资源与能耗分析工具

不少功能上线后发现有用户反馈“电池掉电快”、“某功能用起来卡”,但我们在Xcode里完全看不到任何异常。这时候,观察用户实际行为路径和硬件资源调用就很关键。

使用组合:

  • 克魔使用记录模块:最长6个月设备使用历史,含每个App用电、硬件调用情况
  • Energy Log(Instruments):分析某段时间能耗高点
  • Console/系统日志:匹配后台任务和时间点

我在调试一个定时唤醒的后台下载功能时,发现在一些老设备上后台唤醒后能耗异常高。克魔中显示这个App启动后一直驻留了音频硬件模块,且GPU不降频。我对照系统日志和代码,发现是开发同事未关闭一个音频Session。Energy Log中只能看到电量波动,无法还原唤醒前后行为路径。


第四层:让数据结构“看得清”——文件系统与App目录管理

调试缓存逻辑、配置文件、下载内容等数据文件,通常需要访问App沙盒目录。但现在Finder/iTunes已不再支持查看App内容,开发环境又限制重重。

解决方案组合:

  • 克魔文件浏览模块:无需越狱即可访问完整App沙盒结构,支持文件导入导出
  • iMazing:适合产品经理、测试导出数据
  • SQLite工具 / DB Browser:查看数据库结构

有一次我需要验证视频缓存是否正确按策略清除,就直接用克魔导出Library/Caches/video目录,比用NSFileManager逐级遍历目录高效。还可以结合其解密能力,查看App存储的数据文件是否符合业务设定。


结语:建立你的“调试链条”,让开发更系统化

调试能力不是靠某一个IDE或平台带来的,而是靠开发者自己构建的一套可追踪、可复现、可解释的流程体系。我这几年积累下来的一套组合如下,供你参考:

功能维度 工具组合
性能实时监控 克魔 + PerfDog + Instruments
日志与崩溃 克魔日志模块 + DeviceConsole + Bugly/Sentry
文件数据结构 克魔文件模块 + iMazing + SQLite工具
用户行为追踪 克魔使用记录 + 系统日志 + 能耗图表
符号化分析 导出crashlog + symbolicatecrash工具链

这些工具各自擅长一个领域,把它们搭建成一个调试体系,能让你从一个“解决问题的开发者”进阶成“理解系统行为的工程师”。'''

收起阅读 »

iOS应用开发中的性能调试与数据分析:一套完整实战工具流程

iOS

'''iOS开发者在调试一个复杂App时,经常会遇到多个维度的问题:启动卡顿、网络慢、内存异常、日志难追踪、数据文件结构混乱。这些问题往往不是靠一个工具能解决的,而是需要把多个工具按功能拆分组合起来,各自负责一块。

这篇文章记录我在调试一个中大型iOS应用(Flutter+Swift混合架构)时,用到的一整套工具组合和真实流程,从性能分析到日志获取,再到数据导出与崩溃追踪,工具各司其职,不踩谁也不捧谁,只谈实战怎么用。


01|性能调优:资源指标先行,分App查看是关键

调试的第一步,是确认App的资源消耗情况。我主要关注的是:

  • CPU使用率
  • 内存占用
  • GPU耗能
  • FPS帧率是否波动

使用工具组合:

  • Instruments(Time Profiler)
  • 克魔(KeyMob)性能监控模块

流程上,我会先用克魔跑一次用户模拟场景,获取该App独立的资源变化图。比如App打开到首页,GPU突然拉升,同时FPS掉到30以下,这时初步判断是渲染瓶颈。

为了进一步定位具体函数,我才切换到Xcode的Instruments做函数级分析。

实战注记:
克魔这部分适合全局初步观察,Instruments适合深入函数栈排查,我一般不会直接用Instruments跑一整天,效率太低。


02|运行日志:能实时拉全量日志才可靠

很多线上Bug,尤其是只在少部分用户设备上重现的问题,用模拟器或Xcode连接设备很难抓到日志。更别说一些“闪一下就崩”的问题。

使用工具组合:

  • 克魔日志模块(可筛选进程名、关键字)
  • Xcode Console(调试时查看)
  • DeviceConsole(轻量日志拉取)

在调试一个偶发崩溃问题时,我直接用克魔连真机,拉出目标App的所有系统日志,关键字过滤后看到某音频组件初始化失败,引发BAD_ACCESS。这个日志在Xcode上完全没出现,应该是连接断开前系统未能回传。

实战注记:
设备日志必须靠工具实时拉取,不能光依赖IDE。克魔日志模块适合有UI操作需求的开发者,DeviceConsole适合命令行快速拉取。


03|文件调试:下载沙盒目录 + 解密资源

我经常需要调试App的数据读写逻辑,比如检查缓存文件是否按预期生成,配置文件是否正确保存,或者验证数据库文件的内容。这些都需要直接访问App的沙盒路径。

使用工具组合:

  • 克魔文件管理器
  • iMazing(非技术团队也能用)
  • mac终端(用于plist解包、SQLite查看)

克魔的文件浏览器可以无越狱地列出App沙盒中的文件结构,包括Documents、Library、Caches等路径,还支持将整个目录下载到本地,适合做“全量文件快照”。

比如有一次我检查一个视频App缓存策略,直接把其Library/Cache目录下的所有文件打包导出,对比不同版本间的缓存命名方式,验证逻辑改动是否生效。

实战注记:
有需要还可以用mac终端脚本跑解密或转码任务,比如.sqlite数据库转.csv,配合用Clairvoyant或DB Browser查看。


04|崩溃分析:符号化必须自动化,crashlog管理也要统一

Xcode能看到当前连接设备的崩溃日志,但如果设备没连、系统日志未同步完,就会丢。

使用工具组合:

  • 克魔崩溃日志模块(导出 + 符号化)
  • Xcode自带symbolicatecrash工具
  • Symbolicate Organizer(自动化脚本)

克魔支持导出任意设备上的崩溃日志,保存为.ips.crash格式。我会拉下来后放进symbolicatecrash跑自动符号化,配合dSYM和App版本。还支持一次性符号化多个crashlog,适合Crash收集平台二次处理。

实战注记:
这套流程对企业版、TF安装的App尤其重要,因为它们的crashlog不一定能同步回Xcode Organizer。


05|能耗与行为记录:从“系统角度”看App资源用法

调试后台任务耗电、App唤醒频率等问题时,系统设置页面的电池图是远远不够用的。

使用工具组合:

  • 克魔使用记录分析
  • Energy Instruments(系统层能耗数据)

克魔记录的是每个App的启动时间、用电量、用GPU/CPU的时长等,对“高耗电后台任务”很有帮助。我曾在一个版本中发现微信小程序的后台定位逻辑异常,通过这工具找到了长时间驻留GPS模块的App,并对应上具体行为时间段。

实战注记:
如果你做系统工具类App或需要节能策略的App,这部分功能可以大大简化QA测试流程。


结语:拆解问题,用对工具组合才是关键

没有一个工具能替代全部开发调试工作。实际工作中,更有效的方式是建立一套自己常用的组合流程,按需取用,各司其职。

我个人常用的调试组合如下:

调试需求 工具组合
性能指标分析 克魔 + Instruments
崩溃日志分析 克魔 + Xcode符号化工具 + symbolicatecrash
实时日志查看 克魔 + DeviceConsole + Xcode Console
文件结构导出 克魔 + iMazing + SQLite工具链
网络请求分析 Charles + App内埋点 + 克魔网络模块
能耗与行为分析 克魔使用记录 + 系统设置电池记录

每个工具负责一块,串起来才能构成一条完整、高效、可验证的开发调试链。'''

继续阅读 »

'''iOS开发者在调试一个复杂App时,经常会遇到多个维度的问题:启动卡顿、网络慢、内存异常、日志难追踪、数据文件结构混乱。这些问题往往不是靠一个工具能解决的,而是需要把多个工具按功能拆分组合起来,各自负责一块。

这篇文章记录我在调试一个中大型iOS应用(Flutter+Swift混合架构)时,用到的一整套工具组合和真实流程,从性能分析到日志获取,再到数据导出与崩溃追踪,工具各司其职,不踩谁也不捧谁,只谈实战怎么用。


01|性能调优:资源指标先行,分App查看是关键

调试的第一步,是确认App的资源消耗情况。我主要关注的是:

  • CPU使用率
  • 内存占用
  • GPU耗能
  • FPS帧率是否波动

使用工具组合:

  • Instruments(Time Profiler)
  • 克魔(KeyMob)性能监控模块

流程上,我会先用克魔跑一次用户模拟场景,获取该App独立的资源变化图。比如App打开到首页,GPU突然拉升,同时FPS掉到30以下,这时初步判断是渲染瓶颈。

为了进一步定位具体函数,我才切换到Xcode的Instruments做函数级分析。

实战注记:
克魔这部分适合全局初步观察,Instruments适合深入函数栈排查,我一般不会直接用Instruments跑一整天,效率太低。


02|运行日志:能实时拉全量日志才可靠

很多线上Bug,尤其是只在少部分用户设备上重现的问题,用模拟器或Xcode连接设备很难抓到日志。更别说一些“闪一下就崩”的问题。

使用工具组合:

  • 克魔日志模块(可筛选进程名、关键字)
  • Xcode Console(调试时查看)
  • DeviceConsole(轻量日志拉取)

在调试一个偶发崩溃问题时,我直接用克魔连真机,拉出目标App的所有系统日志,关键字过滤后看到某音频组件初始化失败,引发BAD_ACCESS。这个日志在Xcode上完全没出现,应该是连接断开前系统未能回传。

实战注记:
设备日志必须靠工具实时拉取,不能光依赖IDE。克魔日志模块适合有UI操作需求的开发者,DeviceConsole适合命令行快速拉取。


03|文件调试:下载沙盒目录 + 解密资源

我经常需要调试App的数据读写逻辑,比如检查缓存文件是否按预期生成,配置文件是否正确保存,或者验证数据库文件的内容。这些都需要直接访问App的沙盒路径。

使用工具组合:

  • 克魔文件管理器
  • iMazing(非技术团队也能用)
  • mac终端(用于plist解包、SQLite查看)

克魔的文件浏览器可以无越狱地列出App沙盒中的文件结构,包括Documents、Library、Caches等路径,还支持将整个目录下载到本地,适合做“全量文件快照”。

比如有一次我检查一个视频App缓存策略,直接把其Library/Cache目录下的所有文件打包导出,对比不同版本间的缓存命名方式,验证逻辑改动是否生效。

实战注记:
有需要还可以用mac终端脚本跑解密或转码任务,比如.sqlite数据库转.csv,配合用Clairvoyant或DB Browser查看。


04|崩溃分析:符号化必须自动化,crashlog管理也要统一

Xcode能看到当前连接设备的崩溃日志,但如果设备没连、系统日志未同步完,就会丢。

使用工具组合:

  • 克魔崩溃日志模块(导出 + 符号化)
  • Xcode自带symbolicatecrash工具
  • Symbolicate Organizer(自动化脚本)

克魔支持导出任意设备上的崩溃日志,保存为.ips.crash格式。我会拉下来后放进symbolicatecrash跑自动符号化,配合dSYM和App版本。还支持一次性符号化多个crashlog,适合Crash收集平台二次处理。

实战注记:
这套流程对企业版、TF安装的App尤其重要,因为它们的crashlog不一定能同步回Xcode Organizer。


05|能耗与行为记录:从“系统角度”看App资源用法

调试后台任务耗电、App唤醒频率等问题时,系统设置页面的电池图是远远不够用的。

使用工具组合:

  • 克魔使用记录分析
  • Energy Instruments(系统层能耗数据)

克魔记录的是每个App的启动时间、用电量、用GPU/CPU的时长等,对“高耗电后台任务”很有帮助。我曾在一个版本中发现微信小程序的后台定位逻辑异常,通过这工具找到了长时间驻留GPS模块的App,并对应上具体行为时间段。

实战注记:
如果你做系统工具类App或需要节能策略的App,这部分功能可以大大简化QA测试流程。


结语:拆解问题,用对工具组合才是关键

没有一个工具能替代全部开发调试工作。实际工作中,更有效的方式是建立一套自己常用的组合流程,按需取用,各司其职。

我个人常用的调试组合如下:

调试需求 工具组合
性能指标分析 克魔 + Instruments
崩溃日志分析 克魔 + Xcode符号化工具 + symbolicatecrash
实时日志查看 克魔 + DeviceConsole + Xcode Console
文件结构导出 克魔 + iMazing + SQLite工具链
网络请求分析 Charles + App内埋点 + 克魔网络模块
能耗与行为分析 克魔使用记录 + 系统设置电池记录

每个工具负责一块,串起来才能构成一条完整、高效、可验证的开发调试链。'''

收起阅读 »

【工具推荐】SnapDevelop 低代码开发工具开放免费试用,参与体验有奖

高效的开发效率

最近接触到一个挺有意思的低代码开发工具——SnapDevelop,是面向 .NET 技术栈的开发人员打造的全栈开发平台。它现在正在开放免费试用 + 开发者体验活动,还有100% 抽奖和最高 500 元现金奖励,所以简单分享下使用体验和活动信息,感兴趣的同学可以试试。

SnapDevelop 是什么?

SnapDevelop 是一个 .NET 平台下的低代码开发工具,特点是:

  • 支持 Web 和移动端页面可视化开发
  • 内置视图设计器,支持拖拽式构建 UI 结构
  • 自动生成前端页面 + 后端 Web API + 数据访问代码
  • 提供表格、表单、详情页、树形结构等标准页面模板
  • 支持前后端绑定(选择 API 即可自动配置请求逻辑)
  • 输出代码结构清晰,可与现有项目集成
    它并非封闭黑盒,更偏向“开发加速器”,适合 C#/.NET 工程师快速构建业务系统。

    试用体验

  • 拖组件 + 配属性 + 选 API,页面就出来了;
  • 无需手写 JS、CSS、HTML,效率比传统开发方式大幅提升;
  • 页面模板规范,适用于内部系统、数据录入、管理后台等场景;
  • 支持导出代码继续二次开发,技术主导权保留。

    活动福利(100%中奖 )

    SnapDevelop 目前正在做开发者体验活动:

  • 注册 + 登录体验后,即可参与抽奖;
  • 奖品包括:
    · 一等奖:500 元现金红包;
    · 二等奖:机械键盘;
    · 三等奖:程序员挎包;
    · 四等奖:10元现金红包;
  • 完成更多体验任务,可提升中奖等级。
    > 报名方式:

    扫码海报
继续阅读 »

最近接触到一个挺有意思的低代码开发工具——SnapDevelop,是面向 .NET 技术栈的开发人员打造的全栈开发平台。它现在正在开放免费试用 + 开发者体验活动,还有100% 抽奖和最高 500 元现金奖励,所以简单分享下使用体验和活动信息,感兴趣的同学可以试试。

SnapDevelop 是什么?

SnapDevelop 是一个 .NET 平台下的低代码开发工具,特点是:

  • 支持 Web 和移动端页面可视化开发
  • 内置视图设计器,支持拖拽式构建 UI 结构
  • 自动生成前端页面 + 后端 Web API + 数据访问代码
  • 提供表格、表单、详情页、树形结构等标准页面模板
  • 支持前后端绑定(选择 API 即可自动配置请求逻辑)
  • 输出代码结构清晰,可与现有项目集成
    它并非封闭黑盒,更偏向“开发加速器”,适合 C#/.NET 工程师快速构建业务系统。

    试用体验

  • 拖组件 + 配属性 + 选 API,页面就出来了;
  • 无需手写 JS、CSS、HTML,效率比传统开发方式大幅提升;
  • 页面模板规范,适用于内部系统、数据录入、管理后台等场景;
  • 支持导出代码继续二次开发,技术主导权保留。

    活动福利(100%中奖 )

    SnapDevelop 目前正在做开发者体验活动:

  • 注册 + 登录体验后,即可参与抽奖;
  • 奖品包括:
    · 一等奖:500 元现金红包;
    · 二等奖:机械键盘;
    · 三等奖:程序员挎包;
    · 四等奖:10元现金红包;
  • 完成更多体验任务,可提升中奖等级。
    > 报名方式:

    扫码海报
收起阅读 »

有个开发工具活动蛮不错的,分享一下

高效的开发效率 原生应用


📢有个开发工具活动蛮不错的,分享一下👇
✅ 免费体验低代码平台(SnapDevelop)
✅ 做任务还能领红包(最高500元)
✅ 抽奖送机械键盘、程序员潮包
我刚试了一下,前后端页面都能一拖一绑搞定,效率挺高~
活动到 6月30日,感兴趣的可以扫码看看

继续阅读 »


📢有个开发工具活动蛮不错的,分享一下👇
✅ 免费体验低代码平台(SnapDevelop)
✅ 做任务还能领红包(最高500元)
✅ 抽奖送机械键盘、程序员潮包
我刚试了一下,前后端页面都能一拖一绑搞定,效率挺高~
活动到 6月30日,感兴趣的可以扫码看看

收起阅读 »

解决 uni-app 开发中环境版本与编译工具版本冲突的方案

在 uni-app 开发中,环境版本与编译工具版本冲突是常见问题,以下是系统性解决方案:

  1. 统一版本管理
    通过package.json锁定依赖版本,避免自动升级导致的冲突。
    json
    {
    "devDependencies": {
    "@dcloudio/types": "3.4.17",
    "@dcloudio/uni-app-cli": "3.4.17",
    "@dcloudio/uni-cli-shared": "3.4.17"
    },
    "engines": {
    "node": ">=14.0.0",
    "npm": ">=6.0.0"
    }
    }
    使用npm install --save-exact精确安装指定版本。
    团队协作时共享package-lock.json确保依赖一致性。
  2. 清理缓存与重新安装
    bash

    删除缓存与依赖

    rm -rf node_modules
    npm cache clean --force

重新安装

npm install

  1. 手动指定 CLI 版本
    通过npx临时使用特定版本的编译工具:
    bash
    npx @dcloudio/uni-cli-shared@3.4.17 build --platform h5
  2. 环境变量配置
    在项目根目录创建.env文件,指定 HBuilderX CLI 路径:
    bash
    UNI_CLI_PATH=./node_modules/@dcloudio/uni-cli-shared/bin/uni.js
  3. 版本兼容性检查
    参考官方版本映射表:
    HBuilderX 版本 uni-app 版本
    3.7.0+ 3.4.17+
    3.6.0 3.4.0
  4. 降级 / 升级策略
    冲突报错:优先升级到最新稳定版(推荐)。
    bash
    npm update @dcloudio/uni-app-cli

兼容性问题:回退到已知兼容版本。
bash
npm install @dcloudio/uni-app-cli@3.4.17

  1. 插件与 SDK 适配
    检查项目中使用的第三方插件是否支持当前 uni-app 版本,必要时联系插件作者更新。

  2. 开发工具同步升级
    确保 HBuilderX 为最新版本,避免 IDE 与 CLI 版本不匹配。

  3. 自定义编译配置
    在vue.config.js中指定编译选项:
    javascript
    module.exports = {
    transpileDependencies: ['uni-app'],
    chainWebpack: (config) => {
    // 自定义配置
    }
    }

  4. 问题排查工具
    使用npx npm-check-updates检查依赖版本差异:
    bash
    npx npm-check-updates -u

通过以上方案,可有效解决 uni-app 开发中的版本冲突问题。建议采用锁定版本 + 定期升级的策略,平衡稳定性与新特性。

https://q.yingjiesheng.com/forum/bk25786/tz1126289
https://q.yingjiesheng.com/forum/bk25786/tz1126290
https://q.yingjiesheng.com/forum/bk25786/tz1126291
https://q.yingjiesheng.com/forum/bk25786/tz1126292
https://q.yingjiesheng.com/forum/bk25786/tz1126293
https://q.yingjiesheng.com/forum/bk25786/tz1126294
https://q.yingjiesheng.com/forum/bk25786/tz1126295
https://q.yingjiesheng.com/forum/bk25786/tz1126296
https://q.yingjiesheng.com/forum/bk25786/tz1126297
https://q.yingjiesheng.com/forum/bk25786/tz1126298
https://q.yingjiesheng.com/forum/bk25786/tz1126299
https://q.yingjiesheng.com/forum/bk25786/tz1126300
https://q.yingjiesheng.com/forum/bk25786/tz1126301
https://q.yingjiesheng.com/forum/bk25786/tz1126302
https://q.yingjiesheng.com/forum/bk25786/tz1126303
https://q.yingjiesheng.com/forum/bk25786/tz1126304
https://q.yingjiesheng.com/forum/bk25786/tz1126305
https://q.yingjiesheng.com/forum/bk25786/tz1126306
https://q.yingjiesheng.com/forum/bk25786/tz1126307
https://q.yingjiesheng.com/forum/bk25786/tz1126308
https://q.yingjiesheng.com/forum/bk25786/tz1126309
https://q.yingjiesheng.com/forum/bk25786/tz1126310
https://q.yingjiesheng.com/forum/bk25786/tz1126311
https://q.yingjiesheng.com/forum/bk25786/tz1126312
https://q.yingjiesheng.com/forum/bk25786/tz1126313
https://q.yingjiesheng.com/forum/bk25786/tz1126314
https://q.yingjiesheng.com/forum/bk25786/tz1126315
https://q.yingjiesheng.com/forum/bk25786/tz1126316
https://q.yingjiesheng.com/forum/bk25786/tz1126317
https://q.yingjiesheng.com/forum/bk25786/tz1126318
https://q.yingjiesheng.com/forum/bk25786/tz1126319
https://q.yingjiesheng.com/forum/bk25786/tz1126320
https://q.yingjiesheng.com/forum/bk25786/tz1126321
https://q.yingjiesheng.com/forum/bk25786/tz1126322
https://q.yingjiesheng.com/forum/bk25786/tz1126323
https://q.yingjiesheng.com/forum/bk25786/tz1126324
https://q.yingjiesheng.com/forum/bk25786/tz1126325
https://q.yingjiesheng.com/forum/bk25786/tz1126326
https://q.yingjiesheng.com/forum/bk25786/tz1126327
https://q.yingjiesheng.com/forum/bk25786/tz1126328
https://q.yingjiesheng.com/forum/bk25786/tz1126329
https://q.yingjiesheng.com/forum/bk25786/tz1126330
https://q.yingjiesheng.com/forum/bk25786/tz1126331
https://q.yingjiesheng.com/forum/bk25786/tz1126332
https://q.yingjiesheng.com/forum/bk25786/tz1126333
https://q.yingjiesheng.com/forum/bk25786/tz1126334
https://q.yingjiesheng.com/forum/bk25786/tz1126335
https://q.yingjiesheng.com/forum/bk25786/tz1126336
https://q.yingjiesheng.com/forum/bk25786/tz1126337
https://q.yingjiesheng.com/forum/bk25786/tz1126338
https://q.yingjiesheng.com/forum/bk25786/tz1126339
https://q.yingjiesheng.com/forum/bk25786/tz1126340
https://q.yingjiesheng.com/forum/bk25786/tz1126341
https://q.yingjiesheng.com/forum/bk25786/tz1126342
https://q.yingjiesheng.com/forum/bk25786/tz1126343
https://q.yingjiesheng.com/forum/bk25786/tz1126344
https://q.yingjiesheng.com/forum/bk25786/tz1126345
https://q.yingjiesheng.com/forum/bk25786/tz1126346
https://q.yingjiesheng.com/forum/bk25786/tz1126347
https://q.yingjiesheng.com/forum/bk25786/tz1126348
https://q.yingjiesheng.com/forum/bk25786/tz1126349
https://q.yingjiesheng.com/forum/bk25786/tz1126350
https://q.yingjiesheng.com/forum/bk25786/tz1126351
https://q.yingjiesheng.com/forum/bk25786/tz1126352
https://q.yingjiesheng.com/forum/bk25786/tz1126353
https://q.yingjiesheng.com/forum/bk25786/tz1126354
https://q.yingjiesheng.com/forum/bk25786/tz1126355
https://q.yingjiesheng.com/forum/bk25786/tz1126356
https://q.yingjiesheng.com/forum/bk25786/tz1126357
https://q.yingjiesheng.com/forum/bk25786/tz1126358
https://q.yingjiesheng.com/forum/bk25786/tz1126359
https://q.yingjiesheng.com/forum/bk25786/tz1126360
https://q.yingjiesheng.com/forum/bk25786/tz1126361
https://q.yingjiesheng.com/forum/bk25786/tz1126362
https://q.yingjiesheng.com/forum/bk25786/tz1126363
https://q.yingjiesheng.com/forum/bk25786/tz1126364
https://q.yingjiesheng.com/forum/bk25786/tz1126365
https://q.yingjiesheng.com/forum/bk25786/tz1126366
https://q.yingjiesheng.com/forum/bk25786/tz1126367
https://q.yingjiesheng.com/forum/bk25786/tz1126368
https://q.yingjiesheng.com/forum/bk25786/tz1126369
https://q.yingjiesheng.com/forum/bk25786/tz1126370
https://q.yingjiesheng.com/forum/bk25786/tz1126371
https://q.yingjiesheng.com/forum/bk25786/tz1126372
https://q.yingjiesheng.com/forum/bk25786/tz1126373
https://q.yingjiesheng.com/forum/bk25786/tz1126374
https://q.yingjiesheng.com/forum/bk25786/tz1126375
https://q.yingjiesheng.com/forum/bk25786/tz1126376
https://q.yingjiesheng.com/forum/bk25786/tz1126378
https://q.yingjiesheng.com/forum/bk25786/tz1126379
https://q.yingjiesheng.com/forum/bk25786/tz1126380
https://q.yingjiesheng.com/forum/bk25786/tz1126381
https://q.yingjiesheng.com/forum/bk25786/tz1126382
https://q.yingjiesheng.com/forum/bk25786/tz1126383
https://q.yingjiesheng.com/forum/bk25786/tz1126385
https://q.yingjiesheng.com/forum/bk25786/tz1126386
https://q.yingjiesheng.com/forum/bk25786/tz1126387
https://q.yingjiesheng.com/forum/bk25786/tz1126388
https://q.yingjiesheng.com/forum/bk25786/tz1126389
https://q.yingjiesheng.com/forum/bk25786/tz1126390
https://q.yingjiesheng.com/forum/bk25786/tz1126391
https://q.yingjiesheng.com/forum/bk25786/tz1126392
https://q.yingjiesheng.com/forum/bk25786/tz1126393
https://q.yingjiesheng.com/forum/bk25786/tz1126394
https://q.yingjiesheng.com/forum/bk25786/tz1126395
https://q.yingjiesheng.com/forum/bk25786/tz1126396
https://q.yingjiesheng.com/forum/bk25786/tz1126397
https://q.yingjiesheng.com/forum/bk25786/tz1126398
https://q.yingjiesheng.com/forum/bk25786/tz1126399
https://q.yingjiesheng.com/forum/bk25786/tz1126400
https://q.yingjiesheng.com/forum/bk25786/tz1126401
https://q.yingjiesheng.com/forum/bk25786/tz1126402
https://q.yingjiesheng.com/forum/bk25786/tz1126403
https://q.yingjiesheng.com/forum/bk25786/tz1126404
https://q.yingjiesheng.com/forum/bk25786/tz1126405
https://q.yingjiesheng.com/forum/bk25786/tz1126406
https://q.yingjiesheng.com/forum/bk25786/tz1126492
https://q.yingjiesheng.com/forum/bk25786/tz1126493
https://q.yingjiesheng.com/forum/bk25786/tz1126494
https://q.yingjiesheng.com/forum/bk25786/tz1126495
https://q.yingjiesheng.com/forum/bk25786/tz1126496
https://q.yingjiesheng.com/forum/bk25786/tz1126497
https://q.yingjiesheng.com/forum/bk25786/tz1126498
https://q.yingjiesheng.com/forum/bk25786/tz1126499
https://q.yingjiesheng.com/forum/bk25786/tz1126500
https://q.yingjiesheng.com/forum/bk25786/tz1126501
https://q.yingjiesheng.com/forum/bk25786/tz1126502
https://q.yingjiesheng.com/forum/bk25786/tz1126503
https://q.yingjiesheng.com/forum/bk25786/tz1126504
https://q.yingjiesheng.com/forum/bk25786/tz1126505
https://q.yingjiesheng.com/forum/bk25786/tz1126506
https://q.yingjiesheng.com/forum/bk25786/tz1126507
https://q.yingjiesheng.com/forum/bk25786/tz1126508
https://q.yingjiesheng.com/forum/bk25786/tz1126509
https://q.yingjiesheng.com/forum/bk25786/tz1126510
https://q.yingjiesheng.com/forum/bk25786/tz1126511
https://q.yingjiesheng.com/forum/bk25786/tz1126512
https://q.yingjiesheng.com/forum/bk25786/tz1126513
https://q.yingjiesheng.com/forum/bk25786/tz1126514
https://q.yingjiesheng.com/forum/bk25786/tz1126515
https://q.yingjiesheng.com/forum/bk25786/tz1126516
https://q.yingjiesheng.com/forum/bk25786/tz1126518
https://q.yingjiesheng.com/forum/bk25786/tz1126519
https://q.yingjiesheng.com/forum/bk25786/tz1126520
https://q.yingjiesheng.com/forum/bk25786/tz1126521
https://q.yingjiesheng.com/forum/bk25786/tz1126522
https://q.yingjiesheng.com/forum/bk25786/tz1126523
https://q.yingjiesheng.com/forum/bk25786/tz1126524
https://q.yingjiesheng.com/forum/bk25786/tz1126525
https://q.yingjiesheng.com/forum/bk25786/tz1126526
https://q.yingjiesheng.com/forum/bk25786/tz1126527
https://q.yingjiesheng.com/forum/bk25786/tz1126528
https://q.yingjiesheng.com/forum/bk25786/tz1126529
https://q.yingjiesheng.com/forum/bk25786/tz1126530
https://q.yingjiesheng.com/forum/bk25786/tz1126531
https://q.yingjiesheng.com/forum/bk25786/tz1126532
https://q.yingjiesheng.com/forum/bk25786/tz1126533
https://q.yingjiesheng.com/forum/bk25786/tz1126534
https://q.yingjiesheng.com/forum/bk25786/tz1126535
https://q.yingjiesheng.com/forum/bk25786/tz1126536
https://q.yingjiesheng.com/forum/bk25786/tz1126537
https://q.yingjiesheng.com/forum/bk25786/tz1126538
https://q.yingjiesheng.com/forum/bk25786/tz1126539
https://q.yingjiesheng.com/forum/bk25786/tz1126540
https://q.yingjiesheng.com/forum/bk25786/tz1126541
https://q.yingjiesheng.com/forum/bk25786/tz1126542
https://q.yingjiesheng.com/forum/bk25786/tz1126543
https://q.yingjiesheng.com/forum/bk25786/tz1126544
https://q.yingjiesheng.com/forum/bk25786/tz1126545
https://q.yingjiesheng.com/forum/bk25786/tz1126546
https://q.yingjiesheng.com/forum/bk25786/tz1126547
https://q.yingjiesheng.com/forum/bk25786/tz1126548
https://q.yingjiesheng.com/forum/bk25786/tz1126549
https://q.yingjiesheng.com/forum/bk25786/tz1126550
https://q.yingjiesheng.com/forum/bk25786/tz1126551
https://q.yingjiesheng.com/forum/bk25786/tz1126552
https://q.yingjiesheng.com/forum/bk25786/tz1126553
https://q.yingjiesheng.com/forum/bk25786/tz1126554
https://q.yingjiesheng.com/forum/bk25786/tz1126555
https://q.yingjiesheng.com/forum/bk25786/tz1126556
https://q.yingjiesheng.com/forum/bk25786/tz1126557
https://q.yingjiesheng.com/forum/bk25786/tz1126558
https://q.yingjiesheng.com/forum/bk25786/tz1126559
https://q.yingjiesheng.com/forum/bk25786/tz1126560
https://q.yingjiesheng.com/forum/bk25786/tz1126561
https://q.yingjiesheng.com/forum/bk25786/tz1126562
https://q.yingjiesheng.com/forum/bk25786/tz1126563
https://q.yingjiesheng.com/forum/bk25786/tz1126564
https://q.yingjiesheng.com/forum/bk25786/tz1126565
https://q.yingjiesheng.com/forum/bk25786/tz1126566
https://q.yingjiesheng.com/forum/bk25786/tz1126567
https://q.yingjiesheng.com/forum/bk25786/tz1126568
https://q.yingjiesheng.com/forum/bk25786/tz1126569
https://q.yingjiesheng.com/forum/bk25786/tz1126570
https://q.yingjiesheng.com/forum/bk25786/tz1126571
https://q.yingjiesheng.com/forum/bk25786/tz1126572
https://q.yingjiesheng.com/forum/bk25786/tz1126573
https://q.yingjiesheng.com/forum/bk25786/tz1126574
https://q.yingjiesheng.com/forum/bk25786/tz1126575
https://q.yingjiesheng.com/forum/bk25786/tz1126576
https://q.yingjiesheng.com/forum/bk25786/tz1126577
https://q.yingjiesheng.com/forum/bk25786/tz1126578
https://q.yingjiesheng.com/forum/bk25786/tz1126579
https://q.yingjiesheng.com/forum/bk25786/tz1126580
https://q.yingjiesheng.com/forum/bk25786/tz1126581
https://q.yingjiesheng.com/forum/bk25786/tz1126582
https://q.yingjiesheng.com/forum/bk25786/tz1126583
https://q.yingjiesheng.com/forum/bk25786/tz1126584
https://q.yingjiesheng.com/forum/bk25786/tz1126585
https://q.yingjiesheng.com/forum/bk25786/tz1126586
https://q.yingjiesheng.com/forum/bk25786/tz1126587
https://q.yingjiesheng.com/forum/bk25786/tz1126588
https://q.yingjiesheng.com/forum/bk25786/tz1126589
https://q.yingjiesheng.com/forum/bk25786/tz1126590
https://q.yingjiesheng.com/forum/bk25786/tz1126591
https://q.yingjiesheng.com/forum/bk25786/tz1126592
https://q.yingjiesheng.com/forum/bk25786/tz1126593
https://q.yingjiesheng.com/forum/bk25786/tz1126594
https://q.yingjiesheng.com/forum/bk25786/tz1126595
https://q.yingjiesheng.com/forum/bk25786/tz1126596
https://q.yingjiesheng.com/forum/bk25786/tz1126597
https://q.yingjiesheng.com/forum/bk25786/tz1126598
https://q.yingjiesheng.com/forum/bk25786/tz1126599
https://q.yingjiesheng.com/forum/bk25786/tz1126600
https://q.yingjiesheng.com/forum/bk25786/tz1126601
https://q.yingjiesheng.com/forum/bk25786/tz1126602
https://q.yingjiesheng.com/forum/bk25786/tz1126603
https://q.yingjiesheng.com/forum/bk25786/tz1126604
https://q.yingjiesheng.com/forum/bk25786/tz1126605
https://q.yingjiesheng.com/forum/bk25786/tz1126606
https://q.yingjiesheng.com/forum/bk25786/tz1126607
https://q.yingjiesheng.com/forum/bk25786/tz1126608
https://q.yingjiesheng.com/forum/bk25786/tz1126609
https://q.yingjiesheng.com/forum/bk25786/tz1126610
https://q.yingjiesheng.com/forum/bk25786/tz1126611
https://q.yingjiesheng.com/forum/bk25786/tz1126612
https://q.yingjiesheng.com/forum/bk25786/tz1126613
https://q.yingjiesheng.com/forum/bk25786/tz1126614
https://q.yingjiesheng.com/forum/bk25786/tz1126615
https://q.yingjiesheng.com/forum/bk25786/tz1126616
https://q.yingjiesheng.com/forum/bk25786/tz1126617
https://q.yingjiesheng.com/forum/bk25786/tz1126618
https://q.yingjiesheng.com/forum/bk25786/tz1126619
https://q.yingjiesheng.com/forum/bk25786/tz1126620
https://q.yingjiesheng.com/forum/bk25786/tz1126621
https://q.yingjiesheng.com/forum/bk25786/tz1126622
https://q.yingjiesheng.com/forum/bk25786/tz1126623
https://q.yingjiesheng.com/forum/bk25786/tz1126624
https://q.yingjiesheng.com/forum/bk25786/tz1126625
https://q.yingjiesheng.com/forum/bk25786/tz1126626
https://q.yingjiesheng.com/forum/bk25786/tz1126627
https://q.yingjiesheng.com/forum/bk25786/tz1126628
https://q.yingjiesheng.com/forum/bk25786/tz1126629
https://q.yingjiesheng.com/forum/bk25786/tz1126630
https://q.yingjiesheng.com/forum/bk25786/tz1126631
https://q.yingjiesheng.com/forum/bk25786/tz1126632
https://q.yingjiesheng.com/forum/bk25786/tz1126633
https://q.yingjiesheng.com/forum/bk25786/tz1126634
https://q.yingjiesheng.com/forum/bk25786/tz1126635
https://q.yingjiesheng.com/forum/bk25786/tz1126636
https://q.yingjiesheng.com/forum/bk25786/tz1126637
https://q.yingjiesheng.com/forum/bk25786/tz1126638
https://q.yingjiesheng.com/forum/bk25786/tz1126639
https://q.yingjiesheng.com/forum/bk25786/tz1126640
https://q.yingjiesheng.com/forum/bk25786/tz1126641
https://q.yingjiesheng.com/forum/bk25786/tz1126642
https://q.yingjiesheng.com/forum/bk25786/tz1126643
https://q.yingjiesheng.com/forum/bk25786/tz1126644
https://q.yingjiesheng.com/forum/bk25786/tz1126645
https://q.yingjiesheng.com/forum/bk25786/tz1126646
https://q.yingjiesheng.com/forum/bk25786/tz1126647
https://q.yingjiesheng.com/forum/bk25786/tz1126648
https://q.yingjiesheng.com/forum/bk25786/tz1126649
https://q.yingjiesheng.com/forum/bk25786/tz1126650
https://q.yingjiesheng.com/forum/bk25786/tz1126651
https://q.yingjiesheng.com/forum/bk25786/tz1126652
https://q.yingjiesheng.com/forum/bk25786/tz1126653
https://q.yingjiesheng.com/forum/bk25786/tz1126654
https://q.yingjiesheng.com/forum/bk25786/tz1126655
https://q.yingjiesheng.com/forum/bk25786/tz1126656
https://q.yingjiesheng.com/forum/bk25786/tz1126657
https://q.yingjiesheng.com/forum/bk25786/tz1126658
https://q.yingjiesheng.com/forum/bk25786/tz1126659
https://q.yingjiesheng.com/forum/bk25786/tz1126660
https://q.yingjiesheng.com/forum/bk25786/tz1126661
https://q.yingjiesheng.com/forum/bk25786/tz1126662
https://q.yingjiesheng.com/forum/bk25786/tz1126663
https://q.yingjiesheng.com/forum/bk25786/tz1126664
https://q.yingjiesheng.com/forum/bk25786/tz1126665
https://q.yingjiesheng.com/forum/bk25786/tz1126666
https://q.yingjiesheng.com/forum/bk25786/tz1126667
https://q.yingjiesheng.com/forum/bk25786/tz1126668
https://q.yingjiesheng.com/forum/bk25786/tz1126669
https://q.yingjiesheng.com/forum/bk25786/tz1126670
https://q.yingjiesheng.com/forum/bk25786/tz1126671
https://q.yingjiesheng.com/forum/bk25786/tz1126672
https://q.yingjiesheng.com/forum/bk25786/tz1126673
https://q.yingjiesheng.com/forum/bk25786/tz1126674
https://q.yingjiesheng.com/forum/bk25786/tz1126675
https://q.yingjiesheng.com/forum/bk25786/tz1126676
https://q.yingjiesheng.com/forum/bk25786/tz1126677
https://q.yingjiesheng.com/forum/bk25786/tz1126678
https://q.yingjiesheng.com/forum/bk25786/tz1126679
https://q.yingjiesheng.com/forum/bk25786/tz1126680
https://q.yingjiesheng.com/forum/bk25786/tz1126681
https://q.yingjiesheng.com/forum/bk25786/tz1126682
https://q.yingjiesheng.com/forum/bk25786/tz1126683
https://q.yingjiesheng.com/forum/bk25786/tz1126684
https://q.yingjiesheng.com/forum/bk25786/tz1126685
https://q.yingjiesheng.com/forum/bk25786/tz1126686
https://q.yingjiesheng.com/forum/bk25786/tz1126687
https://q.yingjiesheng.com/forum/bk25786/tz1126688
https://q.yingjiesheng.com/forum/bk25786/tz1126689
https://q.yingjiesheng.com/forum/bk25786/tz1126690
https://q.yingjiesheng.com/forum/bk25786/tz1126691
https://q.yingjiesheng.com/forum/bk25786/tz1126692
https://q.yingjiesheng.com/forum/bk25786/tz1126693
https://q.yingjiesheng.com/forum/bk25786/tz1126694
https://q.yingjiesheng.com/forum/bk25786/tz1126695
https://q.yingjiesheng.com/forum/bk25786/tz1126696
https://q.yingjiesheng.com/forum/bk25786/tz1126697
https://q.yingjiesheng.com/forum/bk25786/tz1126698
https://q.yingjiesheng.com/forum/bk25786/tz1126699
https://q.yingjiesheng.com/forum/bk25786/tz1126700
https://q.yingjiesheng.com/forum/bk25786/tz1126701
https://q.yingjiesheng.com/forum/bk25786/tz1126702
https://q.yingjiesheng.com/forum/bk25786/tz1126703
https://q.yingjiesheng.com/forum/bk25786/tz1126704
https://q.yingjiesheng.com/forum/bk25786/tz1126705
https://q.yingjiesheng.com/forum/bk25786/tz1126706
https://q.yingjiesheng.com/forum/bk25786/tz1126707
https://q.yingjiesheng.com/forum/bk25786/tz1126708
https://q.yingjiesheng.com/forum/bk25786/tz1126709
https://q.yingjiesheng.com/forum/bk25786/tz1126710
https://q.yingjiesheng.com/forum/bk25786/tz1126711
https://q.yingjiesheng.com/forum/bk25786/tz1126712
https://q.yingjiesheng.com/forum/bk25786/tz1126713
https://q.yingjiesheng.com/forum/bk25786/tz1126714
https://q.yingjiesheng.com/forum/bk25786/tz1126715
https://q.yingjiesheng.com/forum/bk25786/tz1126716
https://q.yingjiesheng.com/forum/bk25786/tz1126717
https://q.yingjiesheng.com/forum/bk25786/tz1126718
https://q.yingjiesheng.com/forum/bk25786/tz1126719
https://q.yingjiesheng.com/forum/bk25786/tz1126720
https://q.yingjiesheng.com/forum/bk25786/tz1126721
https://q.yingjiesheng.com/forum/bk25786/tz1126722
https://q.yingjiesheng.com/forum/bk25786/tz1126723
https://q.yingjiesheng.com/forum/bk25786/tz1126724
https://q.yingjiesheng.com/forum/bk25786/tz1126725
https://q.yingjiesheng.com/forum/bk25786/tz1126726
https://q.yingjiesheng.com/forum/bk25786/tz1126727
https://q.yingjiesheng.com/forum/bk25786/tz1126728
https://q.yingjiesheng.com/forum/bk25786/tz1126729
https://q.yingjiesheng.com/forum/bk25786/tz1126730
https://q.yingjiesheng.com/forum/bk25786/tz1126731
https://q.yingjiesheng.com/forum/bk25786/tz1126732
https://q.yingjiesheng.com/forum/bk25786/tz1126733
https://q.yingjiesheng.com/forum/bk25786/tz1126734
https://q.yingjiesheng.com/forum/bk25786/tz1126735
https://q.yingjiesheng.com/forum/bk25786/tz1126736
https://q.yingjiesheng.com/forum/bk25786/tz1126737
https://q.yingjiesheng.com/forum/bk25786/tz1126738
https://q.yingjiesheng.com/forum/bk25786/tz1126739
https://q.yingjiesheng.com/forum/bk25786/tz1126740
https://q.yingjiesheng.com/forum/bk25786/tz1126741
https://q.yingjiesheng.com/forum/bk25786/tz1126742
https://q.yingjiesheng.com/forum/bk25786/tz1126743
https://q.yingjiesheng.com/forum/bk25786/tz1126744
https://q.yingjiesheng.com/forum/bk25786/tz1126745
https://q.yingjiesheng.com/forum/bk25786/tz1126746
https://q.yingjiesheng.com/forum/bk25786/tz1126747
https://q.yingjiesheng.com/forum/bk25786/tz1126748
https://q.yingjiesheng.com/forum/bk25786/tz1126749
https://q.yingjiesheng.com/forum/bk25786/tz1126750
https://q.yingjiesheng.com/forum/bk25786/tz1126751
https://q.yingjiesheng.com/forum/bk25786/tz1126752
https://q.yingjiesheng.com/forum/bk25786/tz1126753
https://q.yingjiesheng.com/forum/bk25786/tz1126754
https://q.yingjiesheng.com/forum/bk25786/tz1126755
https://q.yingjiesheng.com/forum/bk25786/tz1126756
https://q.yingjiesheng.com/forum/bk25786/tz1126757
https://q.yingjiesheng.com/forum/bk25786/tz1126758
https://q.yingjiesheng.com/forum/bk25786/tz1126759
https://q.yingjiesheng.com/forum/bk25786/tz1126760
https://q.yingjiesheng.com/forum/bk25786/tz1126761
https://q.yingjiesheng.com/forum/bk25786/tz1126762
https://q.yingjiesheng.com/forum/bk25786/tz1126763
https://q.yingjiesheng.com/forum/bk25786/tz1126764
https://q.yingjiesheng.com/forum/bk25786/tz1126765
https://q.yingjiesheng.com/forum/bk25786/tz1126766
https://q.yingjiesheng.com/forum/bk25786/tz1126767
https://q.yingjiesheng.com/forum/bk25786/tz1126768
https://q.yingjiesheng.com/forum/bk25786/tz1126769
https://q.yingjiesheng.com/forum/bk25786/tz1126770
https://q.yingjiesheng.com/forum/bk25786/tz1126771
https://q.yingjiesheng.com/forum/bk25786/tz1126772
https://q.yingjiesheng.com/forum/bk25786/tz1126773
https://q.yingjiesheng.com/forum/bk25786/tz1126774
https://q.yingjiesheng.com/forum/bk25786/tz1126775
https://q.yingjiesheng.com/forum/bk25786/tz1126776
https://q.yingjiesheng.com/forum/bk25786/tz1126777
https://q.yingjiesheng.com/forum/bk25786/tz1126778
https://q.yingjiesheng.com/forum/bk25786/tz1126779
https://q.yingjiesheng.com/forum/bk25786/tz1126780
https://q.yingjiesheng.com/forum/bk25786/tz1126781
https://q.yingjiesheng.com/forum/bk25786/tz1126782
https://q.yingjiesheng.com/forum/bk25786/tz1126783
https://q.yingjiesheng.com/forum/bk25786/tz1126784
https://q.yingjiesheng.com/forum/bk25786/tz1126785
https://q.yingjiesheng.com/forum/bk25786/tz1126786
https://q.yingjiesheng.com/forum/bk25786/tz1126787
https://q.yingjiesheng.com/forum/bk25786/tz1126788
https://q.yingjiesheng.com/forum/bk25786/tz1126789
https://q.yingjiesheng.com/forum/bk25786/tz1126790
https://q.yingjiesheng.com/forum/bk25786/tz1126791
https://q.yingjiesheng.com/forum/bk25786/tz1126792
https://q.yingjiesheng.com/forum/bk25786/tz1126793
https://q.yingjiesheng.com/forum/bk25786/tz1126794
https://q.yingjiesheng.com/forum/bk25786/tz1126795
https://q.yingjiesheng.com/forum/bk25786/tz1126796
https://q.yingjiesheng.com/forum/bk25786/tz1126797
https://q.yingjiesheng.com/forum/bk25786/tz1126798
https://q.yingjiesheng.com/forum/bk25786/tz1126799
https://q.yingjiesheng.com/forum/bk25786/tz1126800
https://q.yingjiesheng.com/forum/bk25786/tz1126801
https://q.yingjiesheng.com/forum/bk25786/tz1126802
https://q.yingjiesheng.com/forum/bk25786/tz1126803
https://q.yingjiesheng.com/forum/bk25786/tz1126804
https://q.yingjiesheng.com/forum/bk25786/tz1126805
https://q.yingjiesheng.com/forum/bk25786/tz1126806
https://q.yingjiesheng.com/forum/bk25786/tz1126807
https://q.yingjiesheng.com/forum/bk25786/tz1126808
https://q.yingjiesheng.com/forum/bk25786/tz1126809
https://q.yingjiesheng.com/forum/bk25786/tz1126810
https://q.yingjiesheng.com/forum/bk25786/tz1126811
https://q.yingjiesheng.com/forum/bk25786/tz1126812
https://q.yingjiesheng.com/forum/bk25786/tz1126813
https://q.yingjiesheng.com/forum/bk25786/tz1126814
https://q.yingjiesheng.com/forum/bk25786/tz1126815
https://q.yingjiesheng.com/forum/bk25786/tz1126816
https://q.yingjiesheng.com/forum/bk25786/tz1126817
https://q.yingjiesheng.com/forum/bk25786/tz1126818
https://q.yingjiesheng.com/forum/bk25786/tz1126819
https://q.yingjiesheng.com/forum/bk25786/tz1126820
https://q.yingjiesheng.com/forum/bk25786/tz1126821
https://q.yingjiesheng.com/forum/bk25786/tz1126822
https://q.yingjiesheng.com/forum/bk25786/tz1126823
https://q.yingjiesheng.com/forum/bk25786/tz1126824
https://q.yingjiesheng.com/forum/bk25786/tz1126825
https://q.yingjiesheng.com/forum/bk25786/tz1126826
https://q.yingjiesheng.com/forum/bk25786/tz1126827
https://q.yingjiesheng.com/forum/bk25786/tz1126828
https://q.yingjiesheng.com/forum/bk25786/tz1126829
https://q.yingjiesheng.com/forum/bk25786/tz1126830
https://q.yingjiesheng.com/forum/bk25786/tz1126831
https://q.yingjiesheng.com/forum/bk25786/tz1126832
https://q.yingjiesheng.com/forum/bk25786/tz1126833
https://q.yingjiesheng.com/forum/bk25786/tz1126834
https://q.yingjiesheng.com/forum/bk25786/tz1126835
https://q.yingjiesheng.com/forum/bk25786/tz1126836
https://q.yingjiesheng.com/forum/bk25786/tz1126837
https://q.yingjiesheng.com/forum/bk25786/tz1126838
https://q.yingjiesheng.com/forum/bk25786/tz1126839
https://q.yingjiesheng.com/forum/bk25786/tz1126840
https://q.yingjiesheng.com/forum/bk25786/tz1126841
https://q.yingjiesheng.com/forum/bk25786/tz1126842
https://q.yingjiesheng.com/forum/bk25786/tz1126843
https://q.yingjiesheng.com/forum/bk25786/tz1126844
https://q.yingjiesheng.com/forum/bk25786/tz1126845
https://q.yingjiesheng.com/forum/bk25786/tz1126846
https://q.yingjiesheng.com/forum/bk25786/tz1126847
https://q.yingjiesheng.com/forum/bk25786/tz1126848
https://q.yingjiesheng.com/forum/bk25786/tz1126849
https://q.yingjiesheng.com/forum/bk25786/tz1126850
https://q.yingjiesheng.com/forum/bk25786/tz1126851
https://q.yingjiesheng.com/forum/bk25786/tz1126852
https://q.yingjiesheng.com/forum/bk25786/tz1126853
https://q.yingjiesheng.com/forum/bk25786/tz1126854
https://q.yingjiesheng.com/forum/bk25786/tz1126855
https://q.yingjiesheng.com/forum/bk25786/tz1126856
https://q.yingjiesheng.com/forum/bk25786/tz1126857
https://q.yingjiesheng.com/forum/bk25786/tz1126858
https://q.yingjiesheng.com/forum/bk25786/tz1126859
https://q.yingjiesheng.com/forum/bk25786/tz1126860
https://q.yingjiesheng.com/forum/bk25786/tz1126861
https://q.yingjiesheng.com/forum/bk25786/tz1126862
https://q.yingjiesheng.com/forum/bk25786/tz1126863
https://q.yingjiesheng.com/forum/bk25786/tz1126864
https://q.yingjiesheng.com/forum/bk25786/tz1126865
https://q.yingjiesheng.com/forum/bk25786/tz1126866
https://q.yingjiesheng.com/forum/bk25786/tz1126867
https://q.yingjiesheng.com/forum/bk25786/tz1126868
https://q.yingjiesheng.com/forum/bk25786/tz1126869
https://q.yingjiesheng.com/forum/bk25786/tz1126870
https://q.yingjiesheng.com/forum/bk25786/tz1126871
https://q.yingjiesheng.com/forum/bk25786/tz1126872
https://q.yingjiesheng.com/forum/bk25786/tz1126873
https://q.yingjiesheng.com/forum/bk25786/tz1126874
https://q.yingjiesheng.com/forum/bk25786/tz1126875
https://q.yingjiesheng.com/forum/bk25786/tz1126876
https://q.yingjiesheng.com/forum/bk25786/tz1126877
https://q.yingjiesheng.com/forum/bk25786/tz1126878
https://q.yingjiesheng.com/forum/bk25786/tz1126879
https://q.yingjiesheng.com/forum/bk25786/tz1126880
https://q.yingjiesheng.com/forum/bk25786/tz1126881
https://q.yingjiesheng.com/forum/bk25786/tz1126882
https://q.yingjiesheng.com/forum/bk25786/tz1126883
https://q.yingjiesheng.com/forum/bk25786/tz1126884
https://q.yingjiesheng.com/forum/bk25786/tz1126885
https://q.yingjiesheng.com/forum/bk25786/tz1126886
https://q.yingjiesheng.com/forum/bk25786/tz1126887
https://q.yingjiesheng.com/forum/bk25786/tz1126888
https://q.yingjiesheng.com/forum/bk25786/tz1126889
https://q.yingjiesheng.com/forum/bk25786/tz1126890
https://q.yingjiesheng.com/forum/bk25786/tz1126891
https://q.yingjiesheng.com/forum/bk25786/tz1126892
https://q.yingjiesheng.com/forum/bk25786/tz1126893
https://q.yingjiesheng.com/forum/bk25786/tz1126894
https://q.yingjiesheng.com/forum/bk25786/tz1126895
https://q.yingjiesheng.com/forum/bk25786/tz1126896
https://q.yingjiesheng.com/forum/bk25786/tz1126897
https://q.yingjiesheng.com/forum/bk25786/tz1126898
https://q.yingjiesheng.com/forum/bk25786/tz1126899
https://q.yingjiesheng.com/forum/bk25786/tz1126900
https://q.yingjiesheng.com/forum/bk25786/tz1126901
https://q.yingjiesheng.com/forum/bk25786/tz1126902
https://q.yingjiesheng.com/forum/bk25786/tz1126903
https://q.yingjiesheng.com/forum/bk25786/tz1126904
https://q.yingjiesheng.com/forum/bk25786/tz1126905
https://q.yingjiesheng.com/forum/bk25786/tz1126906
https://q.yingjiesheng.com/forum/bk25786/tz1126907
https://q.yingjiesheng.com/forum/bk25786/tz1126908
https://q.yingjiesheng.com/forum/bk25786/tz1126909
https://q.yingjiesheng.com/forum/bk25786/tz1126910
https://q.yingjiesheng.com/forum/bk25786/tz1126911
https://q.yingjiesheng.com/forum/bk25786/tz1126912
https://q.yingjiesheng.com/forum/bk25786/tz1126913
https://q.yingjiesheng.com/forum/bk25786/tz1126914
https://q.yingjiesheng.com/forum/bk25786/tz1126915
https://q.yingjiesheng.com/forum/bk25786/tz1126916
https://q.yingjiesheng.com/forum/bk25786/tz1126917
https://q.yingjiesheng.com/forum/bk25786/tz1126918
https://q.yingjiesheng.com/forum/bk25786/tz1126919
https://q.yingjiesheng.com/forum/bk25786/tz1126920
https://q.yingjiesheng.com/forum/bk25786/tz1126921
https://q.yingjiesheng.com/forum/bk25786/tz1126922
https://q.yingjiesheng.com/forum/bk25786/tz1126923
https://q.yingjiesheng.com/forum/bk25786/tz1126924
https://q.yingjiesheng.com/forum/bk25786/tz1126925
https://q.yingjiesheng.com/forum/bk25786/tz1126926
https://q.yingjiesheng.com/forum/bk25786/tz1126927
https://q.yingjiesheng.com/forum/bk25786/tz1126928
https://q.yingjiesheng.com/forum/bk25786/tz1126929
https://q.yingjiesheng.com/forum/bk25786/tz1126930
https://q.yingjiesheng.com/forum/bk25786/tz1126931
https://q.yingjiesheng.com/forum/bk25786/tz1126932
https://q.yingjiesheng.com/forum/bk25786/tz1126933
https://q.yingjiesheng.com/forum/bk25786/tz1126934
https://q.yingjiesheng.com/forum/bk25786/tz1126935
https://q.yingjiesheng.com/forum/bk25786/tz1126936
https://q.yingjiesheng.com/forum/bk25786/tz1126937
https://q.yingjiesheng.com/forum/bk25786/tz1126938
https://q.yingjiesheng.com/forum/bk25786/tz1126939
https://q.yingjiesheng.com/forum/bk25786/tz1126940
https://q.yingjiesheng.com/forum/bk25786/tz1126941
https://q.yingjiesheng.com/forum/bk25786/tz1126942
https://q.yingjiesheng.com/forum/bk25786/tz1126943
https://q.yingjiesheng.com/forum/bk25786/tz1126944
https://q.yingjiesheng.com/forum/bk25786/tz1126945
https://q.yingjiesheng.com/forum/bk25786/tz1126946
https://q.yingjiesheng.com/forum/bk25786/tz1126947
https://q.yingjiesheng.com/forum/bk25786/tz1126948
https://q.yingjiesheng.com/forum/bk25786/tz1126949
https://q.yingjiesheng.com/forum/bk25786/tz1126950
https://q.yingjiesheng.com/forum/bk25786/tz1126951
https://q.yingjiesheng.com/forum/bk25786/tz1126952
https://q.yingjiesheng.com/forum/bk25786/tz1126953
https://q.yingjiesheng.com/forum/bk25786/tz1126954
https://q.yingjiesheng.com/forum/bk25786/tz1126955
https://q.yingjiesheng.com/forum/bk25786/tz1126956
https://q.yingjiesheng.com/forum/bk25786/tz1126957
https://q.yingjiesheng.com/forum/bk25786/tz1126958
https://q.yingjiesheng.com/forum/bk25786/tz1126959

继续阅读 »

在 uni-app 开发中,环境版本与编译工具版本冲突是常见问题,以下是系统性解决方案:

  1. 统一版本管理
    通过package.json锁定依赖版本,避免自动升级导致的冲突。
    json
    {
    "devDependencies": {
    "@dcloudio/types": "3.4.17",
    "@dcloudio/uni-app-cli": "3.4.17",
    "@dcloudio/uni-cli-shared": "3.4.17"
    },
    "engines": {
    "node": ">=14.0.0",
    "npm": ">=6.0.0"
    }
    }
    使用npm install --save-exact精确安装指定版本。
    团队协作时共享package-lock.json确保依赖一致性。
  2. 清理缓存与重新安装
    bash

    删除缓存与依赖

    rm -rf node_modules
    npm cache clean --force

重新安装

npm install

  1. 手动指定 CLI 版本
    通过npx临时使用特定版本的编译工具:
    bash
    npx @dcloudio/uni-cli-shared@3.4.17 build --platform h5
  2. 环境变量配置
    在项目根目录创建.env文件,指定 HBuilderX CLI 路径:
    bash
    UNI_CLI_PATH=./node_modules/@dcloudio/uni-cli-shared/bin/uni.js
  3. 版本兼容性检查
    参考官方版本映射表:
    HBuilderX 版本 uni-app 版本
    3.7.0+ 3.4.17+
    3.6.0 3.4.0
  4. 降级 / 升级策略
    冲突报错:优先升级到最新稳定版(推荐)。
    bash
    npm update @dcloudio/uni-app-cli

兼容性问题:回退到已知兼容版本。
bash
npm install @dcloudio/uni-app-cli@3.4.17

  1. 插件与 SDK 适配
    检查项目中使用的第三方插件是否支持当前 uni-app 版本,必要时联系插件作者更新。

  2. 开发工具同步升级
    确保 HBuilderX 为最新版本,避免 IDE 与 CLI 版本不匹配。

  3. 自定义编译配置
    在vue.config.js中指定编译选项:
    javascript
    module.exports = {
    transpileDependencies: ['uni-app'],
    chainWebpack: (config) => {
    // 自定义配置
    }
    }

  4. 问题排查工具
    使用npx npm-check-updates检查依赖版本差异:
    bash
    npx npm-check-updates -u

通过以上方案,可有效解决 uni-app 开发中的版本冲突问题。建议采用锁定版本 + 定期升级的策略,平衡稳定性与新特性。

https://q.yingjiesheng.com/forum/bk25786/tz1126289
https://q.yingjiesheng.com/forum/bk25786/tz1126290
https://q.yingjiesheng.com/forum/bk25786/tz1126291
https://q.yingjiesheng.com/forum/bk25786/tz1126292
https://q.yingjiesheng.com/forum/bk25786/tz1126293
https://q.yingjiesheng.com/forum/bk25786/tz1126294
https://q.yingjiesheng.com/forum/bk25786/tz1126295
https://q.yingjiesheng.com/forum/bk25786/tz1126296
https://q.yingjiesheng.com/forum/bk25786/tz1126297
https://q.yingjiesheng.com/forum/bk25786/tz1126298
https://q.yingjiesheng.com/forum/bk25786/tz1126299
https://q.yingjiesheng.com/forum/bk25786/tz1126300
https://q.yingjiesheng.com/forum/bk25786/tz1126301
https://q.yingjiesheng.com/forum/bk25786/tz1126302
https://q.yingjiesheng.com/forum/bk25786/tz1126303
https://q.yingjiesheng.com/forum/bk25786/tz1126304
https://q.yingjiesheng.com/forum/bk25786/tz1126305
https://q.yingjiesheng.com/forum/bk25786/tz1126306
https://q.yingjiesheng.com/forum/bk25786/tz1126307
https://q.yingjiesheng.com/forum/bk25786/tz1126308
https://q.yingjiesheng.com/forum/bk25786/tz1126309
https://q.yingjiesheng.com/forum/bk25786/tz1126310
https://q.yingjiesheng.com/forum/bk25786/tz1126311
https://q.yingjiesheng.com/forum/bk25786/tz1126312
https://q.yingjiesheng.com/forum/bk25786/tz1126313
https://q.yingjiesheng.com/forum/bk25786/tz1126314
https://q.yingjiesheng.com/forum/bk25786/tz1126315
https://q.yingjiesheng.com/forum/bk25786/tz1126316
https://q.yingjiesheng.com/forum/bk25786/tz1126317
https://q.yingjiesheng.com/forum/bk25786/tz1126318
https://q.yingjiesheng.com/forum/bk25786/tz1126319
https://q.yingjiesheng.com/forum/bk25786/tz1126320
https://q.yingjiesheng.com/forum/bk25786/tz1126321
https://q.yingjiesheng.com/forum/bk25786/tz1126322
https://q.yingjiesheng.com/forum/bk25786/tz1126323
https://q.yingjiesheng.com/forum/bk25786/tz1126324
https://q.yingjiesheng.com/forum/bk25786/tz1126325
https://q.yingjiesheng.com/forum/bk25786/tz1126326
https://q.yingjiesheng.com/forum/bk25786/tz1126327
https://q.yingjiesheng.com/forum/bk25786/tz1126328
https://q.yingjiesheng.com/forum/bk25786/tz1126329
https://q.yingjiesheng.com/forum/bk25786/tz1126330
https://q.yingjiesheng.com/forum/bk25786/tz1126331
https://q.yingjiesheng.com/forum/bk25786/tz1126332
https://q.yingjiesheng.com/forum/bk25786/tz1126333
https://q.yingjiesheng.com/forum/bk25786/tz1126334
https://q.yingjiesheng.com/forum/bk25786/tz1126335
https://q.yingjiesheng.com/forum/bk25786/tz1126336
https://q.yingjiesheng.com/forum/bk25786/tz1126337
https://q.yingjiesheng.com/forum/bk25786/tz1126338
https://q.yingjiesheng.com/forum/bk25786/tz1126339
https://q.yingjiesheng.com/forum/bk25786/tz1126340
https://q.yingjiesheng.com/forum/bk25786/tz1126341
https://q.yingjiesheng.com/forum/bk25786/tz1126342
https://q.yingjiesheng.com/forum/bk25786/tz1126343
https://q.yingjiesheng.com/forum/bk25786/tz1126344
https://q.yingjiesheng.com/forum/bk25786/tz1126345
https://q.yingjiesheng.com/forum/bk25786/tz1126346
https://q.yingjiesheng.com/forum/bk25786/tz1126347
https://q.yingjiesheng.com/forum/bk25786/tz1126348
https://q.yingjiesheng.com/forum/bk25786/tz1126349
https://q.yingjiesheng.com/forum/bk25786/tz1126350
https://q.yingjiesheng.com/forum/bk25786/tz1126351
https://q.yingjiesheng.com/forum/bk25786/tz1126352
https://q.yingjiesheng.com/forum/bk25786/tz1126353
https://q.yingjiesheng.com/forum/bk25786/tz1126354
https://q.yingjiesheng.com/forum/bk25786/tz1126355
https://q.yingjiesheng.com/forum/bk25786/tz1126356
https://q.yingjiesheng.com/forum/bk25786/tz1126357
https://q.yingjiesheng.com/forum/bk25786/tz1126358
https://q.yingjiesheng.com/forum/bk25786/tz1126359
https://q.yingjiesheng.com/forum/bk25786/tz1126360
https://q.yingjiesheng.com/forum/bk25786/tz1126361
https://q.yingjiesheng.com/forum/bk25786/tz1126362
https://q.yingjiesheng.com/forum/bk25786/tz1126363
https://q.yingjiesheng.com/forum/bk25786/tz1126364
https://q.yingjiesheng.com/forum/bk25786/tz1126365
https://q.yingjiesheng.com/forum/bk25786/tz1126366
https://q.yingjiesheng.com/forum/bk25786/tz1126367
https://q.yingjiesheng.com/forum/bk25786/tz1126368
https://q.yingjiesheng.com/forum/bk25786/tz1126369
https://q.yingjiesheng.com/forum/bk25786/tz1126370
https://q.yingjiesheng.com/forum/bk25786/tz1126371
https://q.yingjiesheng.com/forum/bk25786/tz1126372
https://q.yingjiesheng.com/forum/bk25786/tz1126373
https://q.yingjiesheng.com/forum/bk25786/tz1126374
https://q.yingjiesheng.com/forum/bk25786/tz1126375
https://q.yingjiesheng.com/forum/bk25786/tz1126376
https://q.yingjiesheng.com/forum/bk25786/tz1126378
https://q.yingjiesheng.com/forum/bk25786/tz1126379
https://q.yingjiesheng.com/forum/bk25786/tz1126380
https://q.yingjiesheng.com/forum/bk25786/tz1126381
https://q.yingjiesheng.com/forum/bk25786/tz1126382
https://q.yingjiesheng.com/forum/bk25786/tz1126383
https://q.yingjiesheng.com/forum/bk25786/tz1126385
https://q.yingjiesheng.com/forum/bk25786/tz1126386
https://q.yingjiesheng.com/forum/bk25786/tz1126387
https://q.yingjiesheng.com/forum/bk25786/tz1126388
https://q.yingjiesheng.com/forum/bk25786/tz1126389
https://q.yingjiesheng.com/forum/bk25786/tz1126390
https://q.yingjiesheng.com/forum/bk25786/tz1126391
https://q.yingjiesheng.com/forum/bk25786/tz1126392
https://q.yingjiesheng.com/forum/bk25786/tz1126393
https://q.yingjiesheng.com/forum/bk25786/tz1126394
https://q.yingjiesheng.com/forum/bk25786/tz1126395
https://q.yingjiesheng.com/forum/bk25786/tz1126396
https://q.yingjiesheng.com/forum/bk25786/tz1126397
https://q.yingjiesheng.com/forum/bk25786/tz1126398
https://q.yingjiesheng.com/forum/bk25786/tz1126399
https://q.yingjiesheng.com/forum/bk25786/tz1126400
https://q.yingjiesheng.com/forum/bk25786/tz1126401
https://q.yingjiesheng.com/forum/bk25786/tz1126402
https://q.yingjiesheng.com/forum/bk25786/tz1126403
https://q.yingjiesheng.com/forum/bk25786/tz1126404
https://q.yingjiesheng.com/forum/bk25786/tz1126405
https://q.yingjiesheng.com/forum/bk25786/tz1126406
https://q.yingjiesheng.com/forum/bk25786/tz1126492
https://q.yingjiesheng.com/forum/bk25786/tz1126493
https://q.yingjiesheng.com/forum/bk25786/tz1126494
https://q.yingjiesheng.com/forum/bk25786/tz1126495
https://q.yingjiesheng.com/forum/bk25786/tz1126496
https://q.yingjiesheng.com/forum/bk25786/tz1126497
https://q.yingjiesheng.com/forum/bk25786/tz1126498
https://q.yingjiesheng.com/forum/bk25786/tz1126499
https://q.yingjiesheng.com/forum/bk25786/tz1126500
https://q.yingjiesheng.com/forum/bk25786/tz1126501
https://q.yingjiesheng.com/forum/bk25786/tz1126502
https://q.yingjiesheng.com/forum/bk25786/tz1126503
https://q.yingjiesheng.com/forum/bk25786/tz1126504
https://q.yingjiesheng.com/forum/bk25786/tz1126505
https://q.yingjiesheng.com/forum/bk25786/tz1126506
https://q.yingjiesheng.com/forum/bk25786/tz1126507
https://q.yingjiesheng.com/forum/bk25786/tz1126508
https://q.yingjiesheng.com/forum/bk25786/tz1126509
https://q.yingjiesheng.com/forum/bk25786/tz1126510
https://q.yingjiesheng.com/forum/bk25786/tz1126511
https://q.yingjiesheng.com/forum/bk25786/tz1126512
https://q.yingjiesheng.com/forum/bk25786/tz1126513
https://q.yingjiesheng.com/forum/bk25786/tz1126514
https://q.yingjiesheng.com/forum/bk25786/tz1126515
https://q.yingjiesheng.com/forum/bk25786/tz1126516
https://q.yingjiesheng.com/forum/bk25786/tz1126518
https://q.yingjiesheng.com/forum/bk25786/tz1126519
https://q.yingjiesheng.com/forum/bk25786/tz1126520
https://q.yingjiesheng.com/forum/bk25786/tz1126521
https://q.yingjiesheng.com/forum/bk25786/tz1126522
https://q.yingjiesheng.com/forum/bk25786/tz1126523
https://q.yingjiesheng.com/forum/bk25786/tz1126524
https://q.yingjiesheng.com/forum/bk25786/tz1126525
https://q.yingjiesheng.com/forum/bk25786/tz1126526
https://q.yingjiesheng.com/forum/bk25786/tz1126527
https://q.yingjiesheng.com/forum/bk25786/tz1126528
https://q.yingjiesheng.com/forum/bk25786/tz1126529
https://q.yingjiesheng.com/forum/bk25786/tz1126530
https://q.yingjiesheng.com/forum/bk25786/tz1126531
https://q.yingjiesheng.com/forum/bk25786/tz1126532
https://q.yingjiesheng.com/forum/bk25786/tz1126533
https://q.yingjiesheng.com/forum/bk25786/tz1126534
https://q.yingjiesheng.com/forum/bk25786/tz1126535
https://q.yingjiesheng.com/forum/bk25786/tz1126536
https://q.yingjiesheng.com/forum/bk25786/tz1126537
https://q.yingjiesheng.com/forum/bk25786/tz1126538
https://q.yingjiesheng.com/forum/bk25786/tz1126539
https://q.yingjiesheng.com/forum/bk25786/tz1126540
https://q.yingjiesheng.com/forum/bk25786/tz1126541
https://q.yingjiesheng.com/forum/bk25786/tz1126542
https://q.yingjiesheng.com/forum/bk25786/tz1126543
https://q.yingjiesheng.com/forum/bk25786/tz1126544
https://q.yingjiesheng.com/forum/bk25786/tz1126545
https://q.yingjiesheng.com/forum/bk25786/tz1126546
https://q.yingjiesheng.com/forum/bk25786/tz1126547
https://q.yingjiesheng.com/forum/bk25786/tz1126548
https://q.yingjiesheng.com/forum/bk25786/tz1126549
https://q.yingjiesheng.com/forum/bk25786/tz1126550
https://q.yingjiesheng.com/forum/bk25786/tz1126551
https://q.yingjiesheng.com/forum/bk25786/tz1126552
https://q.yingjiesheng.com/forum/bk25786/tz1126553
https://q.yingjiesheng.com/forum/bk25786/tz1126554
https://q.yingjiesheng.com/forum/bk25786/tz1126555
https://q.yingjiesheng.com/forum/bk25786/tz1126556
https://q.yingjiesheng.com/forum/bk25786/tz1126557
https://q.yingjiesheng.com/forum/bk25786/tz1126558
https://q.yingjiesheng.com/forum/bk25786/tz1126559
https://q.yingjiesheng.com/forum/bk25786/tz1126560
https://q.yingjiesheng.com/forum/bk25786/tz1126561
https://q.yingjiesheng.com/forum/bk25786/tz1126562
https://q.yingjiesheng.com/forum/bk25786/tz1126563
https://q.yingjiesheng.com/forum/bk25786/tz1126564
https://q.yingjiesheng.com/forum/bk25786/tz1126565
https://q.yingjiesheng.com/forum/bk25786/tz1126566
https://q.yingjiesheng.com/forum/bk25786/tz1126567
https://q.yingjiesheng.com/forum/bk25786/tz1126568
https://q.yingjiesheng.com/forum/bk25786/tz1126569
https://q.yingjiesheng.com/forum/bk25786/tz1126570
https://q.yingjiesheng.com/forum/bk25786/tz1126571
https://q.yingjiesheng.com/forum/bk25786/tz1126572
https://q.yingjiesheng.com/forum/bk25786/tz1126573
https://q.yingjiesheng.com/forum/bk25786/tz1126574
https://q.yingjiesheng.com/forum/bk25786/tz1126575
https://q.yingjiesheng.com/forum/bk25786/tz1126576
https://q.yingjiesheng.com/forum/bk25786/tz1126577
https://q.yingjiesheng.com/forum/bk25786/tz1126578
https://q.yingjiesheng.com/forum/bk25786/tz1126579
https://q.yingjiesheng.com/forum/bk25786/tz1126580
https://q.yingjiesheng.com/forum/bk25786/tz1126581
https://q.yingjiesheng.com/forum/bk25786/tz1126582
https://q.yingjiesheng.com/forum/bk25786/tz1126583
https://q.yingjiesheng.com/forum/bk25786/tz1126584
https://q.yingjiesheng.com/forum/bk25786/tz1126585
https://q.yingjiesheng.com/forum/bk25786/tz1126586
https://q.yingjiesheng.com/forum/bk25786/tz1126587
https://q.yingjiesheng.com/forum/bk25786/tz1126588
https://q.yingjiesheng.com/forum/bk25786/tz1126589
https://q.yingjiesheng.com/forum/bk25786/tz1126590
https://q.yingjiesheng.com/forum/bk25786/tz1126591
https://q.yingjiesheng.com/forum/bk25786/tz1126592
https://q.yingjiesheng.com/forum/bk25786/tz1126593
https://q.yingjiesheng.com/forum/bk25786/tz1126594
https://q.yingjiesheng.com/forum/bk25786/tz1126595
https://q.yingjiesheng.com/forum/bk25786/tz1126596
https://q.yingjiesheng.com/forum/bk25786/tz1126597
https://q.yingjiesheng.com/forum/bk25786/tz1126598
https://q.yingjiesheng.com/forum/bk25786/tz1126599
https://q.yingjiesheng.com/forum/bk25786/tz1126600
https://q.yingjiesheng.com/forum/bk25786/tz1126601
https://q.yingjiesheng.com/forum/bk25786/tz1126602
https://q.yingjiesheng.com/forum/bk25786/tz1126603
https://q.yingjiesheng.com/forum/bk25786/tz1126604
https://q.yingjiesheng.com/forum/bk25786/tz1126605
https://q.yingjiesheng.com/forum/bk25786/tz1126606
https://q.yingjiesheng.com/forum/bk25786/tz1126607
https://q.yingjiesheng.com/forum/bk25786/tz1126608
https://q.yingjiesheng.com/forum/bk25786/tz1126609
https://q.yingjiesheng.com/forum/bk25786/tz1126610
https://q.yingjiesheng.com/forum/bk25786/tz1126611
https://q.yingjiesheng.com/forum/bk25786/tz1126612
https://q.yingjiesheng.com/forum/bk25786/tz1126613
https://q.yingjiesheng.com/forum/bk25786/tz1126614
https://q.yingjiesheng.com/forum/bk25786/tz1126615
https://q.yingjiesheng.com/forum/bk25786/tz1126616
https://q.yingjiesheng.com/forum/bk25786/tz1126617
https://q.yingjiesheng.com/forum/bk25786/tz1126618
https://q.yingjiesheng.com/forum/bk25786/tz1126619
https://q.yingjiesheng.com/forum/bk25786/tz1126620
https://q.yingjiesheng.com/forum/bk25786/tz1126621
https://q.yingjiesheng.com/forum/bk25786/tz1126622
https://q.yingjiesheng.com/forum/bk25786/tz1126623
https://q.yingjiesheng.com/forum/bk25786/tz1126624
https://q.yingjiesheng.com/forum/bk25786/tz1126625
https://q.yingjiesheng.com/forum/bk25786/tz1126626
https://q.yingjiesheng.com/forum/bk25786/tz1126627
https://q.yingjiesheng.com/forum/bk25786/tz1126628
https://q.yingjiesheng.com/forum/bk25786/tz1126629
https://q.yingjiesheng.com/forum/bk25786/tz1126630
https://q.yingjiesheng.com/forum/bk25786/tz1126631
https://q.yingjiesheng.com/forum/bk25786/tz1126632
https://q.yingjiesheng.com/forum/bk25786/tz1126633
https://q.yingjiesheng.com/forum/bk25786/tz1126634
https://q.yingjiesheng.com/forum/bk25786/tz1126635
https://q.yingjiesheng.com/forum/bk25786/tz1126636
https://q.yingjiesheng.com/forum/bk25786/tz1126637
https://q.yingjiesheng.com/forum/bk25786/tz1126638
https://q.yingjiesheng.com/forum/bk25786/tz1126639
https://q.yingjiesheng.com/forum/bk25786/tz1126640
https://q.yingjiesheng.com/forum/bk25786/tz1126641
https://q.yingjiesheng.com/forum/bk25786/tz1126642
https://q.yingjiesheng.com/forum/bk25786/tz1126643
https://q.yingjiesheng.com/forum/bk25786/tz1126644
https://q.yingjiesheng.com/forum/bk25786/tz1126645
https://q.yingjiesheng.com/forum/bk25786/tz1126646
https://q.yingjiesheng.com/forum/bk25786/tz1126647
https://q.yingjiesheng.com/forum/bk25786/tz1126648
https://q.yingjiesheng.com/forum/bk25786/tz1126649
https://q.yingjiesheng.com/forum/bk25786/tz1126650
https://q.yingjiesheng.com/forum/bk25786/tz1126651
https://q.yingjiesheng.com/forum/bk25786/tz1126652
https://q.yingjiesheng.com/forum/bk25786/tz1126653
https://q.yingjiesheng.com/forum/bk25786/tz1126654
https://q.yingjiesheng.com/forum/bk25786/tz1126655
https://q.yingjiesheng.com/forum/bk25786/tz1126656
https://q.yingjiesheng.com/forum/bk25786/tz1126657
https://q.yingjiesheng.com/forum/bk25786/tz1126658
https://q.yingjiesheng.com/forum/bk25786/tz1126659
https://q.yingjiesheng.com/forum/bk25786/tz1126660
https://q.yingjiesheng.com/forum/bk25786/tz1126661
https://q.yingjiesheng.com/forum/bk25786/tz1126662
https://q.yingjiesheng.com/forum/bk25786/tz1126663
https://q.yingjiesheng.com/forum/bk25786/tz1126664
https://q.yingjiesheng.com/forum/bk25786/tz1126665
https://q.yingjiesheng.com/forum/bk25786/tz1126666
https://q.yingjiesheng.com/forum/bk25786/tz1126667
https://q.yingjiesheng.com/forum/bk25786/tz1126668
https://q.yingjiesheng.com/forum/bk25786/tz1126669
https://q.yingjiesheng.com/forum/bk25786/tz1126670
https://q.yingjiesheng.com/forum/bk25786/tz1126671
https://q.yingjiesheng.com/forum/bk25786/tz1126672
https://q.yingjiesheng.com/forum/bk25786/tz1126673
https://q.yingjiesheng.com/forum/bk25786/tz1126674
https://q.yingjiesheng.com/forum/bk25786/tz1126675
https://q.yingjiesheng.com/forum/bk25786/tz1126676
https://q.yingjiesheng.com/forum/bk25786/tz1126677
https://q.yingjiesheng.com/forum/bk25786/tz1126678
https://q.yingjiesheng.com/forum/bk25786/tz1126679
https://q.yingjiesheng.com/forum/bk25786/tz1126680
https://q.yingjiesheng.com/forum/bk25786/tz1126681
https://q.yingjiesheng.com/forum/bk25786/tz1126682
https://q.yingjiesheng.com/forum/bk25786/tz1126683
https://q.yingjiesheng.com/forum/bk25786/tz1126684
https://q.yingjiesheng.com/forum/bk25786/tz1126685
https://q.yingjiesheng.com/forum/bk25786/tz1126686
https://q.yingjiesheng.com/forum/bk25786/tz1126687
https://q.yingjiesheng.com/forum/bk25786/tz1126688
https://q.yingjiesheng.com/forum/bk25786/tz1126689
https://q.yingjiesheng.com/forum/bk25786/tz1126690
https://q.yingjiesheng.com/forum/bk25786/tz1126691
https://q.yingjiesheng.com/forum/bk25786/tz1126692
https://q.yingjiesheng.com/forum/bk25786/tz1126693
https://q.yingjiesheng.com/forum/bk25786/tz1126694
https://q.yingjiesheng.com/forum/bk25786/tz1126695
https://q.yingjiesheng.com/forum/bk25786/tz1126696
https://q.yingjiesheng.com/forum/bk25786/tz1126697
https://q.yingjiesheng.com/forum/bk25786/tz1126698
https://q.yingjiesheng.com/forum/bk25786/tz1126699
https://q.yingjiesheng.com/forum/bk25786/tz1126700
https://q.yingjiesheng.com/forum/bk25786/tz1126701
https://q.yingjiesheng.com/forum/bk25786/tz1126702
https://q.yingjiesheng.com/forum/bk25786/tz1126703
https://q.yingjiesheng.com/forum/bk25786/tz1126704
https://q.yingjiesheng.com/forum/bk25786/tz1126705
https://q.yingjiesheng.com/forum/bk25786/tz1126706
https://q.yingjiesheng.com/forum/bk25786/tz1126707
https://q.yingjiesheng.com/forum/bk25786/tz1126708
https://q.yingjiesheng.com/forum/bk25786/tz1126709
https://q.yingjiesheng.com/forum/bk25786/tz1126710
https://q.yingjiesheng.com/forum/bk25786/tz1126711
https://q.yingjiesheng.com/forum/bk25786/tz1126712
https://q.yingjiesheng.com/forum/bk25786/tz1126713
https://q.yingjiesheng.com/forum/bk25786/tz1126714
https://q.yingjiesheng.com/forum/bk25786/tz1126715
https://q.yingjiesheng.com/forum/bk25786/tz1126716
https://q.yingjiesheng.com/forum/bk25786/tz1126717
https://q.yingjiesheng.com/forum/bk25786/tz1126718
https://q.yingjiesheng.com/forum/bk25786/tz1126719
https://q.yingjiesheng.com/forum/bk25786/tz1126720
https://q.yingjiesheng.com/forum/bk25786/tz1126721
https://q.yingjiesheng.com/forum/bk25786/tz1126722
https://q.yingjiesheng.com/forum/bk25786/tz1126723
https://q.yingjiesheng.com/forum/bk25786/tz1126724
https://q.yingjiesheng.com/forum/bk25786/tz1126725
https://q.yingjiesheng.com/forum/bk25786/tz1126726
https://q.yingjiesheng.com/forum/bk25786/tz1126727
https://q.yingjiesheng.com/forum/bk25786/tz1126728
https://q.yingjiesheng.com/forum/bk25786/tz1126729
https://q.yingjiesheng.com/forum/bk25786/tz1126730
https://q.yingjiesheng.com/forum/bk25786/tz1126731
https://q.yingjiesheng.com/forum/bk25786/tz1126732
https://q.yingjiesheng.com/forum/bk25786/tz1126733
https://q.yingjiesheng.com/forum/bk25786/tz1126734
https://q.yingjiesheng.com/forum/bk25786/tz1126735
https://q.yingjiesheng.com/forum/bk25786/tz1126736
https://q.yingjiesheng.com/forum/bk25786/tz1126737
https://q.yingjiesheng.com/forum/bk25786/tz1126738
https://q.yingjiesheng.com/forum/bk25786/tz1126739
https://q.yingjiesheng.com/forum/bk25786/tz1126740
https://q.yingjiesheng.com/forum/bk25786/tz1126741
https://q.yingjiesheng.com/forum/bk25786/tz1126742
https://q.yingjiesheng.com/forum/bk25786/tz1126743
https://q.yingjiesheng.com/forum/bk25786/tz1126744
https://q.yingjiesheng.com/forum/bk25786/tz1126745
https://q.yingjiesheng.com/forum/bk25786/tz1126746
https://q.yingjiesheng.com/forum/bk25786/tz1126747
https://q.yingjiesheng.com/forum/bk25786/tz1126748
https://q.yingjiesheng.com/forum/bk25786/tz1126749
https://q.yingjiesheng.com/forum/bk25786/tz1126750
https://q.yingjiesheng.com/forum/bk25786/tz1126751
https://q.yingjiesheng.com/forum/bk25786/tz1126752
https://q.yingjiesheng.com/forum/bk25786/tz1126753
https://q.yingjiesheng.com/forum/bk25786/tz1126754
https://q.yingjiesheng.com/forum/bk25786/tz1126755
https://q.yingjiesheng.com/forum/bk25786/tz1126756
https://q.yingjiesheng.com/forum/bk25786/tz1126757
https://q.yingjiesheng.com/forum/bk25786/tz1126758
https://q.yingjiesheng.com/forum/bk25786/tz1126759
https://q.yingjiesheng.com/forum/bk25786/tz1126760
https://q.yingjiesheng.com/forum/bk25786/tz1126761
https://q.yingjiesheng.com/forum/bk25786/tz1126762
https://q.yingjiesheng.com/forum/bk25786/tz1126763
https://q.yingjiesheng.com/forum/bk25786/tz1126764
https://q.yingjiesheng.com/forum/bk25786/tz1126765
https://q.yingjiesheng.com/forum/bk25786/tz1126766
https://q.yingjiesheng.com/forum/bk25786/tz1126767
https://q.yingjiesheng.com/forum/bk25786/tz1126768
https://q.yingjiesheng.com/forum/bk25786/tz1126769
https://q.yingjiesheng.com/forum/bk25786/tz1126770
https://q.yingjiesheng.com/forum/bk25786/tz1126771
https://q.yingjiesheng.com/forum/bk25786/tz1126772
https://q.yingjiesheng.com/forum/bk25786/tz1126773
https://q.yingjiesheng.com/forum/bk25786/tz1126774
https://q.yingjiesheng.com/forum/bk25786/tz1126775
https://q.yingjiesheng.com/forum/bk25786/tz1126776
https://q.yingjiesheng.com/forum/bk25786/tz1126777
https://q.yingjiesheng.com/forum/bk25786/tz1126778
https://q.yingjiesheng.com/forum/bk25786/tz1126779
https://q.yingjiesheng.com/forum/bk25786/tz1126780
https://q.yingjiesheng.com/forum/bk25786/tz1126781
https://q.yingjiesheng.com/forum/bk25786/tz1126782
https://q.yingjiesheng.com/forum/bk25786/tz1126783
https://q.yingjiesheng.com/forum/bk25786/tz1126784
https://q.yingjiesheng.com/forum/bk25786/tz1126785
https://q.yingjiesheng.com/forum/bk25786/tz1126786
https://q.yingjiesheng.com/forum/bk25786/tz1126787
https://q.yingjiesheng.com/forum/bk25786/tz1126788
https://q.yingjiesheng.com/forum/bk25786/tz1126789
https://q.yingjiesheng.com/forum/bk25786/tz1126790
https://q.yingjiesheng.com/forum/bk25786/tz1126791
https://q.yingjiesheng.com/forum/bk25786/tz1126792
https://q.yingjiesheng.com/forum/bk25786/tz1126793
https://q.yingjiesheng.com/forum/bk25786/tz1126794
https://q.yingjiesheng.com/forum/bk25786/tz1126795
https://q.yingjiesheng.com/forum/bk25786/tz1126796
https://q.yingjiesheng.com/forum/bk25786/tz1126797
https://q.yingjiesheng.com/forum/bk25786/tz1126798
https://q.yingjiesheng.com/forum/bk25786/tz1126799
https://q.yingjiesheng.com/forum/bk25786/tz1126800
https://q.yingjiesheng.com/forum/bk25786/tz1126801
https://q.yingjiesheng.com/forum/bk25786/tz1126802
https://q.yingjiesheng.com/forum/bk25786/tz1126803
https://q.yingjiesheng.com/forum/bk25786/tz1126804
https://q.yingjiesheng.com/forum/bk25786/tz1126805
https://q.yingjiesheng.com/forum/bk25786/tz1126806
https://q.yingjiesheng.com/forum/bk25786/tz1126807
https://q.yingjiesheng.com/forum/bk25786/tz1126808
https://q.yingjiesheng.com/forum/bk25786/tz1126809
https://q.yingjiesheng.com/forum/bk25786/tz1126810
https://q.yingjiesheng.com/forum/bk25786/tz1126811
https://q.yingjiesheng.com/forum/bk25786/tz1126812
https://q.yingjiesheng.com/forum/bk25786/tz1126813
https://q.yingjiesheng.com/forum/bk25786/tz1126814
https://q.yingjiesheng.com/forum/bk25786/tz1126815
https://q.yingjiesheng.com/forum/bk25786/tz1126816
https://q.yingjiesheng.com/forum/bk25786/tz1126817
https://q.yingjiesheng.com/forum/bk25786/tz1126818
https://q.yingjiesheng.com/forum/bk25786/tz1126819
https://q.yingjiesheng.com/forum/bk25786/tz1126820
https://q.yingjiesheng.com/forum/bk25786/tz1126821
https://q.yingjiesheng.com/forum/bk25786/tz1126822
https://q.yingjiesheng.com/forum/bk25786/tz1126823
https://q.yingjiesheng.com/forum/bk25786/tz1126824
https://q.yingjiesheng.com/forum/bk25786/tz1126825
https://q.yingjiesheng.com/forum/bk25786/tz1126826
https://q.yingjiesheng.com/forum/bk25786/tz1126827
https://q.yingjiesheng.com/forum/bk25786/tz1126828
https://q.yingjiesheng.com/forum/bk25786/tz1126829
https://q.yingjiesheng.com/forum/bk25786/tz1126830
https://q.yingjiesheng.com/forum/bk25786/tz1126831
https://q.yingjiesheng.com/forum/bk25786/tz1126832
https://q.yingjiesheng.com/forum/bk25786/tz1126833
https://q.yingjiesheng.com/forum/bk25786/tz1126834
https://q.yingjiesheng.com/forum/bk25786/tz1126835
https://q.yingjiesheng.com/forum/bk25786/tz1126836
https://q.yingjiesheng.com/forum/bk25786/tz1126837
https://q.yingjiesheng.com/forum/bk25786/tz1126838
https://q.yingjiesheng.com/forum/bk25786/tz1126839
https://q.yingjiesheng.com/forum/bk25786/tz1126840
https://q.yingjiesheng.com/forum/bk25786/tz1126841
https://q.yingjiesheng.com/forum/bk25786/tz1126842
https://q.yingjiesheng.com/forum/bk25786/tz1126843
https://q.yingjiesheng.com/forum/bk25786/tz1126844
https://q.yingjiesheng.com/forum/bk25786/tz1126845
https://q.yingjiesheng.com/forum/bk25786/tz1126846
https://q.yingjiesheng.com/forum/bk25786/tz1126847
https://q.yingjiesheng.com/forum/bk25786/tz1126848
https://q.yingjiesheng.com/forum/bk25786/tz1126849
https://q.yingjiesheng.com/forum/bk25786/tz1126850
https://q.yingjiesheng.com/forum/bk25786/tz1126851
https://q.yingjiesheng.com/forum/bk25786/tz1126852
https://q.yingjiesheng.com/forum/bk25786/tz1126853
https://q.yingjiesheng.com/forum/bk25786/tz1126854
https://q.yingjiesheng.com/forum/bk25786/tz1126855
https://q.yingjiesheng.com/forum/bk25786/tz1126856
https://q.yingjiesheng.com/forum/bk25786/tz1126857
https://q.yingjiesheng.com/forum/bk25786/tz1126858
https://q.yingjiesheng.com/forum/bk25786/tz1126859
https://q.yingjiesheng.com/forum/bk25786/tz1126860
https://q.yingjiesheng.com/forum/bk25786/tz1126861
https://q.yingjiesheng.com/forum/bk25786/tz1126862
https://q.yingjiesheng.com/forum/bk25786/tz1126863
https://q.yingjiesheng.com/forum/bk25786/tz1126864
https://q.yingjiesheng.com/forum/bk25786/tz1126865
https://q.yingjiesheng.com/forum/bk25786/tz1126866
https://q.yingjiesheng.com/forum/bk25786/tz1126867
https://q.yingjiesheng.com/forum/bk25786/tz1126868
https://q.yingjiesheng.com/forum/bk25786/tz1126869
https://q.yingjiesheng.com/forum/bk25786/tz1126870
https://q.yingjiesheng.com/forum/bk25786/tz1126871
https://q.yingjiesheng.com/forum/bk25786/tz1126872
https://q.yingjiesheng.com/forum/bk25786/tz1126873
https://q.yingjiesheng.com/forum/bk25786/tz1126874
https://q.yingjiesheng.com/forum/bk25786/tz1126875
https://q.yingjiesheng.com/forum/bk25786/tz1126876
https://q.yingjiesheng.com/forum/bk25786/tz1126877
https://q.yingjiesheng.com/forum/bk25786/tz1126878
https://q.yingjiesheng.com/forum/bk25786/tz1126879
https://q.yingjiesheng.com/forum/bk25786/tz1126880
https://q.yingjiesheng.com/forum/bk25786/tz1126881
https://q.yingjiesheng.com/forum/bk25786/tz1126882
https://q.yingjiesheng.com/forum/bk25786/tz1126883
https://q.yingjiesheng.com/forum/bk25786/tz1126884
https://q.yingjiesheng.com/forum/bk25786/tz1126885
https://q.yingjiesheng.com/forum/bk25786/tz1126886
https://q.yingjiesheng.com/forum/bk25786/tz1126887
https://q.yingjiesheng.com/forum/bk25786/tz1126888
https://q.yingjiesheng.com/forum/bk25786/tz1126889
https://q.yingjiesheng.com/forum/bk25786/tz1126890
https://q.yingjiesheng.com/forum/bk25786/tz1126891
https://q.yingjiesheng.com/forum/bk25786/tz1126892
https://q.yingjiesheng.com/forum/bk25786/tz1126893
https://q.yingjiesheng.com/forum/bk25786/tz1126894
https://q.yingjiesheng.com/forum/bk25786/tz1126895
https://q.yingjiesheng.com/forum/bk25786/tz1126896
https://q.yingjiesheng.com/forum/bk25786/tz1126897
https://q.yingjiesheng.com/forum/bk25786/tz1126898
https://q.yingjiesheng.com/forum/bk25786/tz1126899
https://q.yingjiesheng.com/forum/bk25786/tz1126900
https://q.yingjiesheng.com/forum/bk25786/tz1126901
https://q.yingjiesheng.com/forum/bk25786/tz1126902
https://q.yingjiesheng.com/forum/bk25786/tz1126903
https://q.yingjiesheng.com/forum/bk25786/tz1126904
https://q.yingjiesheng.com/forum/bk25786/tz1126905
https://q.yingjiesheng.com/forum/bk25786/tz1126906
https://q.yingjiesheng.com/forum/bk25786/tz1126907
https://q.yingjiesheng.com/forum/bk25786/tz1126908
https://q.yingjiesheng.com/forum/bk25786/tz1126909
https://q.yingjiesheng.com/forum/bk25786/tz1126910
https://q.yingjiesheng.com/forum/bk25786/tz1126911
https://q.yingjiesheng.com/forum/bk25786/tz1126912
https://q.yingjiesheng.com/forum/bk25786/tz1126913
https://q.yingjiesheng.com/forum/bk25786/tz1126914
https://q.yingjiesheng.com/forum/bk25786/tz1126915
https://q.yingjiesheng.com/forum/bk25786/tz1126916
https://q.yingjiesheng.com/forum/bk25786/tz1126917
https://q.yingjiesheng.com/forum/bk25786/tz1126918
https://q.yingjiesheng.com/forum/bk25786/tz1126919
https://q.yingjiesheng.com/forum/bk25786/tz1126920
https://q.yingjiesheng.com/forum/bk25786/tz1126921
https://q.yingjiesheng.com/forum/bk25786/tz1126922
https://q.yingjiesheng.com/forum/bk25786/tz1126923
https://q.yingjiesheng.com/forum/bk25786/tz1126924
https://q.yingjiesheng.com/forum/bk25786/tz1126925
https://q.yingjiesheng.com/forum/bk25786/tz1126926
https://q.yingjiesheng.com/forum/bk25786/tz1126927
https://q.yingjiesheng.com/forum/bk25786/tz1126928
https://q.yingjiesheng.com/forum/bk25786/tz1126929
https://q.yingjiesheng.com/forum/bk25786/tz1126930
https://q.yingjiesheng.com/forum/bk25786/tz1126931
https://q.yingjiesheng.com/forum/bk25786/tz1126932
https://q.yingjiesheng.com/forum/bk25786/tz1126933
https://q.yingjiesheng.com/forum/bk25786/tz1126934
https://q.yingjiesheng.com/forum/bk25786/tz1126935
https://q.yingjiesheng.com/forum/bk25786/tz1126936
https://q.yingjiesheng.com/forum/bk25786/tz1126937
https://q.yingjiesheng.com/forum/bk25786/tz1126938
https://q.yingjiesheng.com/forum/bk25786/tz1126939
https://q.yingjiesheng.com/forum/bk25786/tz1126940
https://q.yingjiesheng.com/forum/bk25786/tz1126941
https://q.yingjiesheng.com/forum/bk25786/tz1126942
https://q.yingjiesheng.com/forum/bk25786/tz1126943
https://q.yingjiesheng.com/forum/bk25786/tz1126944
https://q.yingjiesheng.com/forum/bk25786/tz1126945
https://q.yingjiesheng.com/forum/bk25786/tz1126946
https://q.yingjiesheng.com/forum/bk25786/tz1126947
https://q.yingjiesheng.com/forum/bk25786/tz1126948
https://q.yingjiesheng.com/forum/bk25786/tz1126949
https://q.yingjiesheng.com/forum/bk25786/tz1126950
https://q.yingjiesheng.com/forum/bk25786/tz1126951
https://q.yingjiesheng.com/forum/bk25786/tz1126952
https://q.yingjiesheng.com/forum/bk25786/tz1126953
https://q.yingjiesheng.com/forum/bk25786/tz1126954
https://q.yingjiesheng.com/forum/bk25786/tz1126955
https://q.yingjiesheng.com/forum/bk25786/tz1126956
https://q.yingjiesheng.com/forum/bk25786/tz1126957
https://q.yingjiesheng.com/forum/bk25786/tz1126958
https://q.yingjiesheng.com/forum/bk25786/tz1126959

收起阅读 »