A bridge between Apple Music and Zeekr's automotive OS. (not even a prototype)
Third party developers are not able to get a binder to CoreService (like hvac, mediacenter, etc).
You need to give this app permission to fetch notifications in order for playback info to work (artist, title, album, artwork)
- Playback control
- Media info display (need permission to get notifications)
- Use
Log.e
because Zeekr OS only showserror
level in production vehicles. - ecarx openapi has several caller verification:
- Package name got SHA1-ed and compared with the appKey in your metadata, appSign in
license.txt
- You need to have an encrypted
license.txt
in your assets - The public key used to decrypt
license.txt
can be found in CoreService.apk (extract it from your vehicle) - Your package name and app uid also got verified. (
getPackageName()
must ingetPackagesForUid
) - The decrypted
license.txt
looks like this:
- Package name got SHA1-ed and compared with the appKey in your metadata, appSign in
Expand to see JSON
{
"appId": "<redacted>",
"appSign": [
{
"supplier": "beta",
"appsign": "<redacted>"
},
{
"supplier": "release",
"appsign": "<redacted>"
}
],
"apiSign": "<redacted>",
"apiList": [
{
"master": "basicability",
"slave": [
{
"name": "default",
"list": [
{
"api": "*",
"expired": 0
}
]
}
]
},
{
"master": "bt",
"slave": [
{
"name": "bt",
"list": [
{
"api": "*",
"expired": 0
}
]
},
{
"name": "default",
"list": [
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
}
]
}
]
},
{
"master": "camera",
"slave": [
{
"name": "default",
"list": [
{
"api": "*",
"expired": 0
}
]
}
]
},
{
"master": "device",
"slave": [
{
"name": "default",
"list": [
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
}
]
},
{
"name": "device",
"list": [
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
}
]
}
]
},
{
"master": "mediacenter",
"slave": [
{
"name": "default",
"list": [
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
}
]
},
{
"name": "mediacenter",
"list": [
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
}
]
}
]
},
{
"master": "multimedia",
"slave": [
{
"name": "default",
"list": [
{
"api": "*",
"expired": 0
}
]
}
]
},
{
"master": "navi",
"slave": [
{
"name": "navi",
"list": [
{
"api": "*",
"expired": 0
}
]
}
]
},
{
"master": "policy",
"slave": [
{
"name": "default",
"list": [
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
}
]
},
{
"name": "policy",
"list": [
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
}
]
}
]
},
{
"master": "user",
"slave": [
{
"name": "user",
"list": [
{
"api": "*",
"expired": 0
}
]
}
]
},
{
"master": "vehicle",
"slave": [
{
"name": "default",
"list": [
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
}
]
},
{
"name": "status",
"list": [
{
"api": "*",
"expired": 0
}
]
}
]
},
{
"master": "vr_all",
"slave": [
{
"name": "default",
"list": [
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
},
{
"api": "*",
"expired": 0
}
]
}
]
},
{
"master": "视频流服务",
"slave": [
{
"name": "default",
"list": [
{
"api": "*",
"expired": 0
}
]
}
]
}
]
}