查询 hidden-api 兼容性
使用 android-api-diff mcp 查询 hidden-api 内的兼容性情况
30 previous messages
我先连接
android-api-diffMCP,确认它支持的查询维度,再结合当前项目里的 hidden API 使用点做兼容性检查。Ran 3 commands
使用 android-api-diff mcp 查询 hidden-api 内的兼容性情况
我先连接
android-api-diffMCP,确认它支持的查询维度,再结合当前项目里的 hidden API 使用点做兼容性检查。Ran 3 commands
| <script lang="ts" setup> | |
| // https://github.com/sherwinshen/vue3-text-clamp/blob/master/package/text-clamp.vue | |
| const props = withDefaults( | |
| defineProps<{ | |
| text: string | |
| maxHeight?: string | number | |
| maxLines?: number | |
| expanded?: boolean | |
| location?: 'start' | 'middle' | 'end' | |
| ellipsis?: string |
| import { ElDialog } from 'element-plus' | |
| /** | |
| * 解决 ElDialog 不显示时仍然渲染内容的问题 | |
| */ | |
| const PerfDialog = defineComponent( | |
| (props, ctx) => { | |
| const render = shallowRef(props.modelValue) | |
| const onClosed = async () => { | |
| await nextTick() |
| export const createInheritedComposable = <F extends (...args: any[]) => any>(fn: F): F => { | |
| const key = 'inherited-composable-' + Date.now() | |
| return ((...args: any[]) => { | |
| let r: any = inject(key, key) | |
| if (r === key) { | |
| r = fn(...args) | |
| provide(key, r) | |
| } | |
| return r | |
| }) as F |
| <script lang="ts"> | |
| const svgElMap = computedAsync( | |
| async () => (await import('./svg')).default, | |
| {}, | |
| ); | |
| </script> | |
| <script setup lang="ts"> | |
| const props = withDefaults( | |
| defineProps<{ | |
| name: string; |
| import type { SlotsType, VNode } from 'vue' | |
| import { Comment, Fragment } from 'vue' | |
| const isEmpty = (nodes: VNode[] | undefined): boolean => { | |
| if (!nodes?.length) return true | |
| return nodes.every((v) => { | |
| return ( | |
| v.type === Comment || | |
| (v.type === Fragment && isEmpty(v.children as VNode[])) || | |
| // @ts-ignore |
| java.lang.Throwable | |
| at example.ExampleKt.main(Example.kt:11) | |
| at example.ExampleKt.main(Example.kt) |
| 2025-09-17 11:16:02.703 [info] [main] Log level: Info | |
| 2025-09-17 11:16:02.703 [info] [main] Validating found git in: "C:\Program Files\Git\cmd\git.exe" | |
| 2025-09-17 11:16:02.703 [info] [main] Validating found git in: "C:\Program Files (x86)\Git\cmd\git.exe" | |
| 2025-09-17 11:16:02.703 [info] [main] Validating found git in: "C:\Program Files\Git\cmd\git.exe" | |
| 2025-09-17 11:16:02.703 [info] [main] Validating found git in: "C:\Users\lisonge\AppData\Local\Programs\Git\cmd\git.exe" | |
| 2025-09-17 11:16:05.675 [info] [main] Log level: Info | |
| 2025-09-17 11:16:05.675 [info] [main] Validating found git in: "C:\Program Files\Git\cmd\git.exe" | |
| 2025-09-17 11:16:05.675 [info] [main] Validating found git in: "C:\Program Files (x86)\Git\cmd\git.exe" | |
| 2025-09-17 11:16:05.676 [info] [main] Validating found git in: "C:\Program Files\Git\cmd\git.exe" | |
| 2025-09-17 11:16:05.676 [info] [main] Validating found git in: "C:\Users\lisonge\AppData\Local\Programs\Git\cmd\git.exe" |
| export {}; | |
| import { shallowRef, onScopeDispose } from 'vue'; | |
| async function* timer(delay: number) { | |
| let breaked = false; | |
| const stop = () => (breaked = true); | |
| for (let i = 1, st = performance.now(), et = st, errorMs = 0; ; i++) { | |
| await new Promise((r) => setTimeout(r, delay - errorMs)); | |
| yield stop; | |
| if (breaked) return; | |
| et = performance.now(); |
| import { isEqual } from 'lodash-es' | |
| import { customRef, computed, type ShallowRef } from 'vue' | |
| export const useEqualRef = <T>(initValue: T): ShallowRef<T> => { | |
| return customRef((track, trigger) => { | |
| let value = initValue | |
| return { | |
| get() { | |
| track() | |
| return value |