最近在使用unity2017时,因渠道方要求,给出的包必须要是target21,在直接修改了buildsetting中的target APILevel为21后,然后将项目的androidmainfest的targetsdkversion设置为21,打包时出现了如下报错。
[Temp\StagingArea\AndroidManifest-main.xml:2, \Temp\StagingArea\android-libraries\unity-android-resources\AndroidManifest.xml:1] Main manifest has <uses-sdk android:targetSdkVersion='21'> but library uses targetSdkVersion='26'
temp文件夹是在unity编译的时候自动生成的临时文件。因为unity在打包过程中会自动合并所有plugins目录下的androidmainfest生成一个唯一的androidmainfest。对于合并后的唯一的targetsdkversion的设置,首先取决于buildsetting中的target APILevel,其次是androidmainfest中的设定。
比如我设置了buildsetting中的target APILevel为21,而我有一个androidmainfest的taegetsdk为26,就会出现以上报错。高版本无法和低版本合并。
但我的项目中只存在一个androidmainfest,且设置为21,但仍出现了已上报错。于是我打开了报错信息中的\Temp\StagingArea\android-libraries\unity-android-resources\路径,发现在项目编译的时候,在这个路径下自动生成了一个androidmainfest。且里面只存在一句话: <uses-