华为sdk报错 Failed to read meta data for the AppID,gradle拷贝配置文件
问题描述:
unity2017,接入第三方支持华为的sdk,androidstudio生成aar给unity
错误日志:
In getMetaDataAppId, Failed to read meta data for the AppID.
最终和技术沟通后得出结论,apk中AndroidManifest.xml文件内没有
<meta-data android:name="com.huawei.hms.client.appid" android:value="appid=*******"/>
原因是agconnect-services.json文件并没有打入到aar,问华为技术也没有得到正面回答,所以aar不能处理,只能通过unity打包gralde的时候处理
解决方式:
华为官方要求agconnect-services.json文件目录
2019.4以及更高
官方解决方案:https://github.com/Unity-Technologies/HuaweiServiceSample
1、agconnect-services.json文件放到Plugins/Android下面
2、参考官方给的demo里的脚本Assets/HuaweiHms/src/Editor/AfterBuildToDo.cs文件修改。用到的是IPostGenerateGradleAndroidProject
不过IPostGenerateGradleAndroidProject是unity 2019.4以及更高版本处理方式
其他处理方式gradle
1、agconnect-services.json文件放到Assets\StreamingAssets下面
2、Plugins/Android下增加并修改mainTemplate.gradle文件,以下代码放到mainTemplate.gradle文件最下面
task copyJsonFile { copy { delete("agconnect-services.json")//先删除旧的文件
//拷贝文件到华为需要的目录 from('src/main/assets/') into('./') include("agconnect-services.json") } } preBuild.dependsOn copyJsonFile
执行结果
ps:
1、打包后可以通过反编译apk,查看AndroidManifest.xml文件内没有
<meta-data android:name="com.huawei.hms.client.appid" android:value="appid=*******"/>
2、也可以通过此方法处理gradle拷贝其他文件,比如google-services.json