Skip to content

netcookies/neta-connect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

590 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ๅ“ชๅ’ไบ’่” isulewTools

Version License Android Kotlin Compose

ไธ“ไธบๅ“ชๅ’่ฝฆๆœบ่ฎพ่ฎก็š„้ซ˜็บงๅทฅๅ…ท้›†๏ผŒๅ…ผๅฎนๅŽŸ็”ŸAndroidๅŠๅ…ถไป–่ฝฆๆœบ็ณป็ปŸใ€‚้€š่ฟ‡ๆ— ้šœ็ขๆœๅŠกๅฎž็Žฐ็ณป็ปŸ็บงๅŠŸ่ƒฝๅขžๅผบ๏ผŒๆ— ้œ€Rootใ€‚


โœจ ๆ ธๅฟƒ็‰นๆ€ง

๐ŸŽฏ ๆ™บ่ƒฝไปช่กจ็›˜็ณป็ปŸ

  • ่‡ชๅฎšไน‰็ฝ‘ๆ ผๅธƒๅฑ€ - ็ตๆดป็š„ๆ‹–ๆ‹ฝๅผไปช่กจ็›˜๏ผŒๆ”ฏๆŒ่‡ช็”ฑ่ฐƒๆ•ดไฝ็ฝฎๅ’Œๅคงๅฐ
  • ไธฐๅฏŒๅฐ็ป„ไปถๅบ“ - ไฟกๆฏๅก็‰‡ใ€ๅ›พ่กจใ€็ฝ‘ๆ ผๅ›พๆ ‡็ญ‰ๅคš็ง็ฑปๅž‹ๅฐ็ป„ไปถ
  • ๅฏ่ง†ๅŒ–็ผ–่พ‘ - ๅฎžๆ—ถ้ข„่งˆใ€ๆ‹–ๆ‹ฝๆŽ’ๅบใ€ไธ€้”ฎๅฏผๅ…ฅ้ป˜่ฎค้…็ฝฎ
  • ็Šถๆ€ๆŒไน…ๅŒ– - ๆ‰€ๆœ‰ๅธƒๅฑ€ๅ’Œ้…็ฝฎ่‡ชๅŠจไฟๅญ˜๏ผŒ้‡ๅฏๅŽๆขๅค

๐Ÿ”Œ ๅŠจๆ€ๆ’ไปถ็ณป็ปŸ

  • JARๆ’ไปถๅŠ ่ฝฝ - ๆ”ฏๆŒๅŠจๆ€ๅŠ ่ฝฝ็ฌฌไธ‰ๆ–นๅฐ็ป„ไปถๆ’ไปถ๏ผŒๆ— ้œ€้‡ๆ–ฐ็ผ–่ฏ‘ไธปๅบ”็”จ
  • ๅผ€ๆ”พAPI - ๅฎŒๆ•ด็š„Widget APIๅฎšไน‰๏ผŒๆไพ›ๆ’ไปถๅผ€ๅ‘SDK
  • ๆ•ฐๆฎๆบ็ป‘ๅฎš - ๆ’ไปถๅฏ็›ดๆŽฅ่ฎฟ้—ฎ่ฝฆ่พ†VHALๅฑžๆ€งๅ’Œ่‡ชๅฎšไน‰ๆ•ฐๆฎๆบ
  • ๅณๆ’ๅณ็”จ - ้€š่ฟ‡MANIFEST.MF่‡ชๆ่ฟฐๆœบๅˆถ๏ผŒๆ’ไปถ่‡ชๅŠจๆณจๅ†Œๅ’ŒๅŠ ่ฝฝ
  • ๐Ÿ‘‰ ๆ’ไปถๅผ€ๅ‘ๆŒ‡ๅ—

๐Ÿ”ง ็ณป็ปŸ็บงๅŠŸ่ƒฝ้›†ๆˆ

  • ๆ™บ่ƒฝ่“็‰™ๆŽงๅˆถ - ๅŸบไบŽๅ‰ๅฐๅบ”็”จ่‡ชๅŠจๅˆ‡ๆข่“็‰™๏ผŒๆ”ฏๆŒ่‡ชๅฎšไน‰่ง„ๅˆ™
  • ๅผ€ๆœบ่‡ชๅฏๅŠจ - ๆ— ้šœ็ขๆœๅŠกๅฎž็Žฐ็ณป็ปŸ็บง่‡ชๅฏๅŠจๅ’ŒๅŽๅฐๅธธ้ฉป
  • ๆŒ‰้”ฎๆ˜ ๅฐ„ - ๆ–นๅ‘็›˜ๆŒ‰้”ฎๅ…ผๅฎนๅ„็ฑป้ŸณไนAPP๏ผˆ็ฝ‘ๆ˜“ไบ‘ใ€QQ้Ÿณไน็ญ‰๏ผ‰
  • ่ฏญ้Ÿณๅ›พๆ ‡้š่— - ่‡ชๅŠจ้š่—็ณป็ปŸ่ฏญ้ŸณๅŠฉๆ‰‹ๅ›พๆ ‡
  • ้บฆๅ…‹้ฃŽๆŽงๅˆถ - ็‹ฌ็ซ‹้บฆๅ…‹้ฃŽๆœๅŠก๏ผŒๆ”ฏๆŒ็ฒพ็ป†ๅŒ–ๆƒ้™็ฎก็†
  • ๅ…Rootๆ“ไฝœ - ๆ‰€ๆœ‰ๅŠŸ่ƒฝๅ‡้€š่ฟ‡ๆ— ้šœ็ขๆœๅŠกๅฎž็Žฐ๏ผŒๆ— ้œ€ๅˆทๆœบ

๐Ÿ“Š ๅฎžๆ—ถ่ฝฆ่พ†ๆ•ฐๆฎ็›‘ๆŽง

  • ๆ‚ฌๆตฎ็ช—ๆ˜พ็คบ - ๅฏ็งปๅŠจใ€ๅฏ็ผฉๆ”พใ€้€ๆ˜Žๅบฆ่‡ช้€‚ๅบ”็š„่ฝฆๅ†ตๆ‚ฌๆตฎ็ช—
  • VHALๅฑžๆ€ง็›‘ๆŽง - ๅฎžๆ—ถ่ฏปๅ–่ฝฆ่พ†็กฌไปถๆŠฝ่ฑกๅฑ‚ๆ•ฐๆฎ๏ผˆ็”ตๆฑ ใ€้€Ÿๅบฆใ€ๆธฉๅบฆ็ญ‰๏ผ‰
  • ่‡ชๅฎšไน‰ๆ•ฐๆฎๆบ - ๆ”ฏๆŒๅ…ฌๅผ่ฎก็ฎ—่™šๆ‹Ÿๅฑžๆ€ง๏ผˆๆ”ฏๆŒ็ฎ—ๆœฏใ€้€ป่พ‘ใ€ๆฏ”่พƒ่ฟ็ฎ—๏ผŒๅ†…็ฝฎๆ•ฐๅญฆๅ‡ฝๆ•ฐๅ’Œ็ฑปๅž‹่ฝฌๆข๏ผ‰
  • ๆ—ฅๅฟ—ๆŸฅ็œ‹ - ๅ†…็ฝฎๆ—ฅๅฟ—็ณป็ปŸ๏ผŒไพฟไบŽๆ•…้šœ่ฏŠๆ–ญๅ’Œๆ•ฐๆฎๅˆ†ๆž
  • ่‡ชๅฎšไน‰ๆ ‡็ญพ - ไธบๅ…ณๆณจ็š„่ฝฆ่พ†ๅฑžๆ€งๆทปๅŠ ๆ ‡็ญพ๏ผŒๅฟซ้€Ÿ่ฟ‡ๆปคๆ˜พ็คบ

๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

็ณป็ปŸ่ฆๆฑ‚

  • Android็‰ˆๆœฌ: Android 11 (API 30) ๅŠไปฅไธŠ
  • ่ฎพๅค‡็ฑปๅž‹: ๅ“ชๅ’่ฝฆๆœบ๏ผˆไผ˜ๅ…ˆๆ”ฏๆŒ๏ผ‰/ ๅŽŸ็”ŸAndroid / ๅ…ถไป–่ฝฆๆœบ็ณป็ปŸ
  • ๆƒ้™่ฆๆฑ‚: ๆ— ้šœ็ขๆœๅŠกใ€่“็‰™ใ€ๆ‚ฌๆตฎ็ช—ใ€้€š็Ÿฅ็ญ‰

ๅฎ‰่ฃ…ๆ–นๆณ•

  1. ไปŽ Releases ไธ‹่ฝฝๆœ€ๆ–ฐAPK
  2. ๅœจ่ฝฆๆœบๆˆ–Android่ฎพๅค‡ไธŠๅฎ‰่ฃ…APK
  3. ้ฆ–ๆฌกๆ‰“ๅผ€ๅบ”็”จ๏ผŒๆ นๆฎๅผ•ๅฏผๆŽˆไบˆๆ‰€้œ€ๆƒ้™๏ผš
    • ๆ— ้šœ็ขๆœๅŠก๏ผˆๆ ธๅฟƒๅŠŸ่ƒฝ๏ผ‰
    • ่“็‰™ๆƒ้™๏ผˆ่‡ชๅŠจๅŒ–ๆŽงๅˆถ๏ผ‰
    • ๆ‚ฌๆตฎ็ช—ๆƒ้™๏ผˆ่ฝฆๅ†ตๆ˜พ็คบ๏ผ‰
    • ้€š็Ÿฅๆƒ้™๏ผˆ็Šถๆ€ๆ็คบ๏ผ‰

ๅŸบ็ก€ไฝฟ็”จ

  1. ้…็ฝฎ่“็‰™่ง„ๅˆ™ - ่ฟ›ๅ…ฅ"่ฎพ็ฝฎ"้กต้ข๏ผŒ่‡ชๅฎšไน‰ๅบ”็”จๅŒ…ๅไธŽ่“็‰™ๅผ€ๅ…ณ่ง„ๅˆ™
  2. ่ฎพ็ฝฎไปช่กจ็›˜ - ๅœจ"ไปช่กจ็›˜"้กต้ขๆทปๅŠ ๅฐ็ป„ไปถ๏ผŒๆ‹–ๆ‹ฝ่ฐƒๆ•ดๅธƒๅฑ€
  3. ๅฏ็”จๆ‚ฌๆตฎ็ช— - ๅผ€ๅฏ่ฝฆๅ†ตๆ‚ฌๆตฎ็ช—๏ผŒๅฎžๆ—ถ็›‘ๆŽง่ฝฆ่พ†ๆ•ฐๆฎ
  4. ๆŸฅ็œ‹ๆ—ฅๅฟ— - ๅœจ"ๆ—ฅๅฟ—"้กต้ขๆŸฅ็œ‹็ณป็ปŸไบ‹ไปถๅ’Œ่ฝฆ่พ†ๅฑžๆ€งๅ˜ๅŒ–
  5. ๅฎ‰่ฃ…ๆ’ไปถ๏ผˆๅฏ้€‰๏ผ‰- ๅฏผๅ…ฅ็ฌฌไธ‰ๆ–นๅฐ็ป„ไปถๆ’ไปถ๏ผŒๆ‰ฉๅฑ•ไปช่กจ็›˜ๅŠŸ่ƒฝ

๐Ÿ› ๏ธ ๆŠ€ๆœฏๆ ˆ

่ฏญ่จ€ไธŽๆก†ๆžถ: Kotlin โ€ข Jetpack Compose โ€ข Kotlin Coroutines โ€ข Kotlin Serialization

ๆžถๆž„ไธŽ่ฎพ่ฎก: MVVM โ€ข Repository Pattern โ€ข Dependency Injection (AppServices)

ๆ•ฐๆฎๅญ˜ๅ‚จ: Room Database โ€ข DataStore โ€ข SharedPreferences

็ณป็ปŸ้›†ๆˆ: Accessibility Service โ€ข Car VHAL (Vehicle HAL) โ€ข Bluetooth Manager โ€ข Window Manager

ๆž„ๅปบๅทฅๅ…ท: Gradle 8.9 โ€ข Android Gradle Plugin 8.7 โ€ข Kotlin 2.1


๐Ÿ—๏ธ ้กน็›ฎๆžถๆž„

ๆจกๅ—็ป“ๆž„

ๆจกๅ— ่ฏดๆ˜Ž ็ฑปๅž‹
app ไธปๅบ”็”จๆจกๅ—๏ผŒๅŒ…ๅซUIใ€ไธšๅŠก้€ป่พ‘ๅ’Œๆ ธๅฟƒๆœๅŠก Application
app-privilege ็ณป็ปŸ็‰นๆƒๅŠŸ่ƒฝๆจกๅ—๏ผŒๅค„็†Root็บงๅˆซๆ“ไฝœ๏ผˆๅฏ้€‰๏ผ‰ Android Library
stub Android็ณป็ปŸๆŽฅๅฃๅญ˜ๆ น๏ผŒๆไพ›้š่—API่ฎฟ้—ฎ Android Library
vendor-stub ๅŽ‚ๅ•†ๅฎšๅˆถๆŽฅๅฃๅญ˜ๆ น๏ผŒ้€‚้…ๅ“ชๅ’่ฝฆๆœบ็‰นๆœ‰ๅŠŸ่ƒฝ Android Library
mic-service ็‹ฌ็ซ‹้บฆๅ…‹้ฃŽๆŽงๅˆถๆœๅŠก๏ผŒๆ”ฏๆŒ็ป†็ฒ’ๅบฆๆƒ้™็ฎก็† Android Library
widget-api ๅฐ็ป„ไปถๆ’ไปถAPIๅฎšไน‰๏ผŒ็ฌฌไธ‰ๆ–นๆ’ไปถๅผ€ๅ‘ๆŽฅๅฃ Android Library
plugin-widgets ๅŠจๆ€ๅŠ ่ฝฝๅฐ็ป„ไปถๆ’ไปถ็คบไพ‹๏ผˆJARๆ’ไปถ๏ผ‰ Android Library
probe-api ้€š็”จๆŽข้’ˆ contract๏ผŒ็ฌฌไธ‰ๆ–น probe ๅผ€ๅ‘ๆŽฅๅฃ Android Library
probe-runtime ้€š็”จๆŽข้’ˆๅฎฟไธป่ฟ่กŒๆ—ถไธŽ OEM ๅ‚่€ƒ probe Android Library

ๆžถๆž„่ฎพ่ฎก

ๆœฌ้กน็›ฎ้‡‡็”จ MVVMๆžถๆž„ ๅ’Œ ๆจกๅ—ๅŒ–่ฎพ่ฎก๏ผš

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚           UI Layer (Compose)            โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚ HomePage โ”‚  โ”‚ Settings โ”‚  โ”‚Widgets โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                   โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚         ViewModel Layer                 โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚ HomeViewModel  โ”‚  โ”‚WidgetViewModel โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                   โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚    Business Logic (AppServices)         โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚Bluetooth โ”‚  โ”‚  VHAL    โ”‚  โ”‚Widget  โ”‚ โ”‚
โ”‚  โ”‚ Manager  โ”‚  โ”‚ Service  โ”‚  โ”‚Loader  โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                   โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚      Data Layer (Repository)            โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚   Room   โ”‚  โ”‚DataStore โ”‚  โ”‚  VHAL  โ”‚ โ”‚
โ”‚  โ”‚ Database โ”‚  โ”‚ Prefs    โ”‚  โ”‚  API   โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๆ ธๅฟƒ่ฎพ่ฎกๅŽŸๅˆ™:

  • ViewModelๅ‘ฝๅ่ง„่Œƒ๏ผšPage็บง็”จ XXXViewModel๏ผŒTab็บง็”จ XXXTabViewModel
  • ไฝฟ็”จ AppServices ่ฟ›่กŒ่ฝป้‡็บงไพ่ต–็ฎก็†๏ผŒ้ฟๅ…่ฟ‡ๅบฆๆŠฝ่ฑก
  • UIไธŽViewModelไธ€ๅฏนไธ€ๆ˜ ๅฐ„๏ผŒไฟๆŒๆธ…ๆ™ฐ็š„่ดฃไปป่พน็•Œ
  • ๆ‰€ๆœ‰UI้—ด่ทไฝฟ็”จ AppSpacing ็ปŸไธ€็ฎก็†๏ผŒ็ฌฆๅˆMaterial Design 3่ง„่Œƒ

่ฏฆ็ป†ๆžถๆž„ๆ–‡ๆกฃ่ฏทๅ‚่€ƒ๏ผš๐Ÿ‘‰ ARCHITECTURE.md๏ผˆๅพ…ๅˆ›ๅปบ๏ผ‰


๐Ÿ‘จโ€๐Ÿ’ป ๅผ€ๅ‘ๆŒ‡ๅ—

ๅฏนไบŽ็”จๆˆท

ๅธธ่ง้—ฎ้ข˜

  • Q: ไธบไป€ไนˆ้œ€่ฆๆ— ้šœ็ขๆœๅŠกๆƒ้™๏ผŸ A: ๆ— ้šœ็ขๆœๅŠกๆ˜ฏๅฎž็Žฐ่“็‰™่‡ชๅŠจๅŒ–ใ€ๆŒ‰้”ฎๆ˜ ๅฐ„็ญ‰็ณป็ปŸ็บงๅŠŸ่ƒฝ็š„ๆ ธๅฟƒ๏ผŒๅบ”็”จไธไผš่Žทๅ–ๆ•ๆ„Ÿไฟกๆฏใ€‚

  • Q: ๅบ”็”จไผšๅฝฑๅ“่ฝฆๆœบๆ€ง่ƒฝๅ—๏ผŸ A: ๅบ”็”จ้‡‡็”จ้ซ˜ๆ•ˆ็š„ๅŽๅฐๆœๅŠก่ฎพ่ฎก๏ผŒไป…ๅœจๅฟ…่ฆๆ—ถๅทฅไฝœ๏ผŒๅฏน่ฝฆๆœบๆ€ง่ƒฝๅฝฑๅ“ๆžๅฐใ€‚

  • Q: ๆ”ฏๆŒๅ“ชไบ›่ฝฆๅž‹๏ผŸ A: ไผ˜ๅ…ˆๆ”ฏๆŒๅ“ชๅ’็ณปๅˆ—่ฝฆๅž‹๏ผŒๅ…ผๅฎนๅŽŸ็”ŸAndroid 11+่ฎพๅค‡๏ผŒๅ…ถไป–่ฝฆๆœบ้œ€ๆต‹่ฏ•้ชŒ่ฏใ€‚

  • Q: ๅฆ‚ไฝ•ๅค‡ไปฝๆˆ‘็š„้…็ฝฎ๏ผŸ A: ๅœจ"่ฎพ็ฝฎ > ้ซ˜็บง่ฎพ็ฝฎ"ไธญๅฏๅฏผๅ‡บ้…็ฝฎ๏ผŒ้‡่ฃ…ๅŽๅฏๆขๅคใ€‚

ๅŠŸ่ƒฝไฝฟ็”จๆŠ€ๅทง

  • ไปช่กจ็›˜ๅฐ็ป„ไปถ้•ฟๆŒ‰ๅฏ่ฟ›ๅ…ฅ็ผ–่พ‘ๆจกๅผ
  • ๆ‚ฌๆตฎ็ช—ๅŒๆŒ‡็ผฉๆ”พ่ฐƒๆ•ดๅคงๅฐ๏ผŒๅ•ๆŒ‡ๆ‹–ๅŠจ่ฐƒๆ•ดไฝ็ฝฎ
  • ่‡ชๅฎšไน‰ๆ•ฐๆฎๆบๆ”ฏๆŒไธฐๅฏŒ็š„ๅ…ฌๅผ่ฎก็ฎ—๏ผš็ฎ—ๆœฏ่ฟ็ฎ—ใ€้€ป่พ‘ๅˆคๆ–ญใ€ๆกไปถๅˆ†ๆ”ฏใ€ๆ•ฐๅญฆๅ‡ฝๆ•ฐ(abs/max/min/sqrt/round็ญ‰) ใ€็ฑปๅž‹่ฝฌๆข(int/float/str/bool)
  • ไธป้ข˜็ฎก็†ๅŠŸ่ƒฝๅฏๅœจ"่ฎพ็ฝฎ > ้ซ˜็บง่ฎพ็ฝฎ"ไธญๆ‰พๅˆฐ

ๅฏนไบŽๅผ€ๅ‘่€…

็Žฏๅขƒๅ‡†ๅค‡

# ๅ…‹้š†ไป“ๅบ“
git clone --recurse-submodules https://github.com/netcookies/isulewTools.git
cd isulewTools

# ๆž„ๅปบ้กน็›ฎ
./gradlew assembleDebug

# ๅฎ‰่ฃ…ๅˆฐ่ฎพๅค‡
./gradlew installDebug

CBridge ๆจกๆ‹Ÿๅ™จๅ›žๆ”พ

ๆœฌๅœฐๆจกๆ‹Ÿ OEM WebSocket ๅ›žๆ”พไธŽ adb forward tcp:17880 tcp:17880 ่”่ฐƒ่ฏดๆ˜Ž่ง๏ผš

Voice / llama.cpp

ๅฝ“ๅ‰ๆœฌๅœฐๅคงๆจกๅž‹่ฟ่กŒๆ—ถไฝไบŽ ai-llm ๆจกๅ—๏ผŒ้€š่ฟ‡ไธŠๆธธ llama.cpp submodule ๅ’Œๆœฌๅœฐ JNI ๆกฅๆŽฅๅฑ‚ๅšๆœฌๅœฐๆŽจ็†๏ผ›ๆ—ง็š„ whisper.cpp ้“พ่ทฏๅทฒ็ป็งป้™ค๏ผŒไธๅ†ๅ‚ไธŽๅฝ“ๅ‰ Android ๆž„ๅปบใ€‚

ๅฝ“ๅ‰็บฆๅฎš๏ผš

  • ai-llm/llama.cpp/ ๆ˜ฏไธŠๆธธ llama.cpp submodule๏ผŒไฝœไธบ ai-llm ๆจกๅ—ๅ†…็š„ native ๆž„ๅปบๆบ็ ๆ นใ€‚
  • ai-llm/src/main/cpp/llama_jni.cpp ไธŽ ai-llm/src/main/kotlin/com/neta/isulewtools/ai/llm/runtime/LlamaJni.kt ๆ˜ฏ้กน็›ฎๅ†…็ปดๆŠค็š„ JNI ๆกฅๆŽฅๅฑ‚ใ€‚
  • ๆœฌๅœฐๅคงๆจกๅž‹ไฝฟ็”จ GGUF ็›ฎๅฝ•ๅŒ…๏ผŒ็›ฎๅฝ•ไธญ่‡ณๅฐ‘้œ€่ฆ 1 ไธช .gguf ๆ–‡ไปถใ€‚
  • ๅ…ฌๅ…ฑๅคงๆจกๅž‹็›ฎๅฝ•ไปฅ models/index.json ไธบๅ‡†ใ€‚

ๆž„ๅปบๅปบ่ฎฎ๏ผš

  • ้ฆ–ๆฌกๅ…‹้š†ๅŽๆ‰ง่กŒ git submodule update --init --recursive๏ผŒ็กฎไฟ ai-llm/llama.cpp ๅทฒๅฐฑ็ปชใ€‚
  • ๅธธ่ง„ๅผ€ๅ‘็›ดๆŽฅๆ‰ง่กŒ ./gradlew assembleDebug ๅณๅฏ๏ผŒๅฝ“ๅ‰ llama.cpp native ๆž„ๅปบๅ…ฅๅฃไฝไบŽ ai-llm ๆจกๅ—ใ€‚

ๆไบค็บฆๅฎš๏ผš

  • ๅปบ่ฎฎๆไบค ai-llm/llama.cpp ็š„ submodule ๆŒ‡้’ˆใ€ai-llm/src/main/cpp/llama_jni.cppใ€ai-llm/src/main/kotlin/com/neta/isulewtools/ai/llm/runtime/LlamaJni.kt ไปฅๅŠๅฟ…่ฆ็š„ๆž„ๅปบ้€‚้…ไปฃ็ ใ€‚
  • ไธ่ฆๆไบคๆœฌๅœฐ็ผ“ๅญ˜ใ€ๅทฅๅ…ท้“พๆˆ–ไธดๆ—ถไบง็‰ฉ็›ฎๅฝ•ใ€‚

ๅผ€ๅ‘็Žฏๅขƒ่ฆๆฑ‚:

  • Android Studio Ladybug (2024.2.1) ๆˆ–ๆ›ด้ซ˜็‰ˆๆœฌ
  • JDK 11 ๆˆ–ๆ›ด้ซ˜็‰ˆๆœฌ
  • Android SDK 36 (compileSdk 36, targetSdk 36)
  • Gradle 8.9+

ๆ’ไปถๅผ€ๅ‘

ๆœฌ้กน็›ฎๆ”ฏๆŒๅŠจๆ€ๅŠ ่ฝฝJARๆ’ไปถๆ‰ฉๅฑ•ๅฐ็ป„ไปถๅŠŸ่ƒฝ๏ผŒๅผ€ๅ‘่€…ๅฏไปฅ๏ผš

  1. ไฝฟ็”จ widget-api ๆจกๅ—ๆไพ›็š„ๆŽฅๅฃๅฎšไน‰ๆ’ไปถ
  2. ๅฎž็Žฐ AppWidget ๆŽฅๅฃ๏ผŒ็ผ–ๅ†™่‡ชๅฎšไน‰Compose UI
  3. ้…็ฝฎ MANIFEST.MF ่‡ชๆ่ฟฐๅ…ƒๆ•ฐๆฎ
  4. ็ผ–่ฏ‘ไธบJARๆ–‡ไปถๅนถๅฏผๅ…ฅๅˆฐๅบ”็”จ

ๅฟซ้€Ÿๅ…ฅ้—จ:

class MyCustomWidget : AppWidget {
    override val widgetId: String = "my.custom.widget"
    override val displayName: String = "ๆˆ‘็š„่‡ชๅฎšไน‰ๅฐ็ป„ไปถ"

    @Composable
    override fun WidgetContent(
        modifier: Modifier,
        scale: Float,
        alpha: Float,
        params: Map<String, Any?>
    ) {
        // ไฝฟ็”จCompose็ผ–ๅ†™UI
        Text("Hello Widget!")
    }
}

่ฏฆ็ป†ๆ’ไปถๅผ€ๅ‘ๆŒ‡ๅ—๏ผš

Probe ๅผ€ๅ‘

ๆœฌ้กน็›ฎๆ”ฏๆŒ้€š่ฟ‡ๅฎฟไธป runtime ๅŠจๆ€ๆ‰ง่กŒ่‡ชๅฎšไน‰ probeใ€‚ๆŽจ่ๅˆ†ๅฑ‚ๅฆ‚ไธ‹๏ผš

  1. probe-api ๅชๅŒ…ๅซ ProbeEntry / ProbeContext / ProbeResult / ProbeErrorCode
  2. probe-runtime ๅŒ…ๅซ ProbeHostMain / ProbeHostExecutor ๅ’Œ OEM ๅ‚่€ƒ probe
  3. ่‡ชๅฎšไน‰ probe ๆจกๅ— ๅชไพ่ต– probe-api๏ผŒ็ผ–่ฏ‘ๆˆ APK ๆˆ– JAR ๅŽไบค็ป™ๅฎฟไธปๆ‰ง่กŒ

็›ธๅ…ณๆ–‡ๆกฃ๏ผš

ๅ‚ไธŽ่ดก็Œฎ

ๆฌข่ฟŽไปปไฝ•ๅฝขๅผ็š„่ดก็Œฎ๏ผForkๆœฌไป“ๅบ“ๅนถๆไบคPull Requestใ€‚

Git Commit่ง„่Œƒ (้ตๅพช Conventional Commits):

  • feat: - ๆ–ฐๅŠŸ่ƒฝ (ๅฏนๅบ”่ฏญไน‰ๅŒ–็‰ˆๆœฌ็š„ MINOR)
  • fix: - Bugไฟฎๅค (ๅฏนๅบ”่ฏญไน‰ๅŒ–็‰ˆๆœฌ็š„ PATCH)
  • refactor: - ไปฃ็ ้‡ๆž„๏ผˆไธๆ”นๅ˜ๅŠŸ่ƒฝ้€ป่พ‘๏ผ‰
  • perf: - ๆ€ง่ƒฝไผ˜ๅŒ–
  • style: - ไปฃ็ ๆ ผๅผ่ฐƒๆ•ด๏ผˆ็ผฉ่ฟ›ใ€็ฉบๆ ผ็ญ‰๏ผ‰
  • docs: - ๆ–‡ๆกฃๆ›ดๆ–ฐ
  • test: - ๆต‹่ฏ•็”จไพ‹ไฟฎๆ”น
  • build: - ๆž„ๅปบ็ณป็ปŸๆˆ–ไพ่ต–้กนไฟฎๆ”น
  • ci: - CI/CD้…็ฝฎไฟฎๆ”น
  • chore: - ๅ…ถไป–้žไธšๅŠกไปฃ็ ไฟฎๆ”น
  • BREAKING CHANGE: - ็ ดๅๆ€งๅ˜ๆ›ด (ๅฏนๅบ”่ฏญไน‰ๅŒ–็‰ˆๆœฌ็š„ MAJOR)

็คบไพ‹:

git commit -m "feat: ๆทปๅŠ ไธป้ข˜็ฎก็†ๅŠŸ่ƒฝ"
git commit -m "fix: ไฟฎๅคไปช่กจ็›˜็ผฉๆ”พๅ˜ๅฝข้—ฎ้ข˜"
git commit -m "refactor(viewmodel): ็ปŸไธ€ViewModelๅ‘ฝๅ่ง„่Œƒ"

ๆไบคๅŽ๏ผŒ่‡ชๅŠจๅŒ–ๅทฅๅ…ทไผšๆ นๆฎcommit็”Ÿๆˆๅ˜ๆ›ดๆ—ฅๅฟ—ๅ’ŒReleaseๅ†…ๅฎนใ€‚


๐Ÿ“š ๆ–‡ๆกฃ็ดขๅผ•

ๆ–‡ๆกฃ ่ฏดๆ˜Ž
CHANGELOG.md ็‰ˆๆœฌๆ›ดๆ–ฐๆ—ฅๅฟ—
BREAKING_NOTICE.md ็‰ˆๆœฌ Breaking Change ๅ…ฌๅ‘Š่ƒฝๅŠ›่ฏดๆ˜Ž
plugin-widgets/README.md ๅฐ็ป„ไปถๆ’ไปถ็ณป็ปŸ่ฏดๆ˜Ž
plugin-widgets/DEVELOPMENT_GUIDE.md ๆ’ไปถๅผ€ๅ‘่ฏฆ็ป†ๆŒ‡ๅ—
probe-api/README.md ้€š็”จๆŽข้’ˆ API ไธŽ็‹ฌ็ซ‹ๅทฅไฝœๅŒบ่ฏดๆ˜Ž
probe-runtime/README.md ้€š็”จๆŽข้’ˆ runtime ไธŽ OEM ๅ‚่€ƒๅฎž็Žฐ่ฏดๆ˜Ž
scripts/oem/README.md probe CLI ไธŽ่ฎพๅค‡ๆ‰ง่กŒ่ฏดๆ˜Ž

ๆ›ดๅคšๆ–‡ๆกฃๆญฃๅœจๅฎŒๅ–„ไธญ...


๐ŸŽฏ ็‰ˆๆœฌไบฎ็‚น (v1.9.2)

ๆœฌ็‰ˆๆœฌ่ฟ›่กŒไบ†ๅคง่ง„ๆจกๆžถๆž„้‡ๆž„๏ผŒไธป่ฆๆ›ดๆ–ฐๅŒ…ๆ‹ฌ๏ผš

ๆ ธๅฟƒ้‡ๆž„

  • ไปช่กจ็›˜็ณป็ปŸๅฎŒๅ…จ้‡ๅ†™ - ็ฝ‘ๆ ผๅธƒๅฑ€ใ€ๆ‹–ๆ‹ฝๆŽ’ๅบใ€็Šถๆ€ๆŒไน…ๅŒ–ๅ…จ้ขไผ˜ๅŒ–
  • ๅฐ็ป„ไปถ็”Ÿๆ€ๅขžๅผบ - ๆ–ฐๅขžไฟกๆฏๅก็‰‡ใ€็ฝ‘ๆ ผๅ›พๆ ‡ใ€ๅ›พ่กจ็ฑปๅฐ็ป„ไปถ
  • UI/UX็ปŸไธ€ๅŒ– - ๆ‰€ๆœ‰ไธ€็บง้กต้ข้‡ๆž„๏ผŒ็ปŸไธ€้—ด่ท็ณป็ปŸ๏ผˆAppSpacing๏ผ‰
  • ViewModel่ง„่ŒƒๅŒ– - ๆ˜Ž็กฎๅ‘ฝๅ่ง„่Œƒ๏ผŒๆธ…ๆ™ฐUIไธŽViewModelๅฏนๅบ”ๅ…ณ็ณป

ๆ–ฐๅขžๅŠŸ่ƒฝ

  • ่‡ชๅฎšไน‰ๆ•ฐๆฎๆบๆ”ฏๆŒๅ…ฌๅผ่ฎก็ฎ—๏ผˆ่™šๆ‹Ÿๅฑžๆ€ง๏ผ‰
  • ไธป้ข˜็ฎก็†ๅŠŸ่ƒฝ๏ผˆ่ฎพ็ฝฎ > ้ซ˜็บง่ฎพ็ฝฎ๏ผ‰
  • ไปช่กจ็›˜้ป˜่ฎคๅฏผๅ…ฅๅŠŸ่ƒฝ๏ผˆ็ฉบไปช่กจ็›˜ๆ—ถ๏ผ‰
  • ๅฐ็ป„ไปถๅค‡ไปฝไธŽๆขๅค็ฎก็†

ๆ€ง่ƒฝไผ˜ๅŒ–

  • ไผ˜ๅŒ–ๅฐ็ป„ไปถ่พน่ทๅ’Œๅธƒๅฑ€็ฎ—ๆณ•
  • ๅ‡ๅฐ‘ไธๅฟ…่ฆ็š„้‡็ป„๏ผŒๆๅ‡Composeๆ€ง่ƒฝ
  • ไผ˜ๅŒ–่ฝฆ่พ†ๅฑžๆ€ง่ฏปๅ–ๆ•ˆ็އ

่ฏฆ็ป†ๆ›ดๆ–ฐๅ†…ๅฎน่ฏทๆŸฅ็œ‹ Releases


๐Ÿ“„ ่ฎธๅฏ่ฏ

ๆœฌ้กน็›ฎ้‡‡็”จ MIT License ๅผ€ๆบๅ่ฎฎใ€‚


๐Ÿ™ ่‡ด่ฐข

ๆ„Ÿ่ฐขๆ‰€ๆœ‰ไธบๆœฌ้กน็›ฎๅšๅ‡บ่ดก็Œฎ็š„ๅผ€ๅ‘่€…ๅ’Œ็”จๆˆท๏ผ


Made with โค๏ธ for ๅ“ชๅ’่ฝฆไธป็คพๅŒบ

โฌ† ๅ›žๅˆฐ้กถ้ƒจ

About

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors