外部链接打开安卓应用的方法

首次正式接触安卓工程,正好要做个点击外部链接(分享链接)打开游戏的功能碰到了点问题总结一下。

unity导出android工程

网上搜索到的方法都是需要更改android工程的manifest文件,因此首先需要的是将unity工程导出android工程。我使用的是新的gradle方法,因此需要安装Android Studio

  1. 打开unity的Build Settings,如图:asset_img
  2. 选择Android平台并点击Switch Platform
  3. 点击Player Settings; 检查是否设置了Other SettingsPackage Name,gradle的导出方式必须填写这项; 在Publishing Settings中可以先加上签名信息(gradle方式发布release包必须有签名)。
  4. 回到Build SettingsBuild System改为Gradle (New)并勾选上Export Project后点击Export,选择想要导出的文件夹点击Select Folder后工程就会被导出。

正常编译android工程需要修改的内容

unity导出时可能一些信息已经过时需要自己更新。

  1. build.gradle是gradle自动化编译过程的配置文件,其中可以找到类似于
buildscript {
	...
	dependencies {
		classpath 'com.android.tools.build:gradle:2.3.2'
	}
}

的代码,在Android Plugin for Gradle中确认最新的工具版本号将2.3.2替换为最新的; 2. 打开Android Studio选择Import project (Eclipse ADT, Gradle, etc.)选择导出工程的build.gradle文件后点击OK,等待gradle执行完成; 3. 这步是可选操作,构建完成后会在工程目录下生成gradle/wrapper的目录结构,其中存放的是gradle工具及配置信息。如果想要将gradle更新到最新版本,可以用文本工具打开gradle-wrapper.properties文件,将distributionUrl项的值改为最新包的地址的完整包地址,如https://services.gradle.org/distributions/gradle-4.0-all.zip,其中冒号前需要加转义符。

如何让外部链接点击后启动游戏

需要在你的启动activity中加入intent-filter字段,首先这个字段是可以重复的,一开始写在一起于是怎么打包都无法打开游戏……unity导出的工程只有一个activity——UnityPlayerActivity,然后列出几个intent-filter字段下的关键属性:

  • 添加action属性设置值为"android.intent.action.VIEW";
  • 添加category属性设置值为"android.intent.category.DEFAULT",这样可以接受外部任意输入;
  • 添加category属性设置值为"android.intent.category.BROWSABLE",这样可以通过浏览器启动;
  • 添加data属性,我只用到了android:schemeandroid:host两个,其实android:scheme就够了,具体这些参数什么含义以及填写规则可以查看Android 使用Scheme实现从网页启动APP

完成后的代码大致如下:

<activity>
	<intent-filter>
		<!-- 原有的内容 -->
	</intent-filter>
	<intent-filter>
		<action android:name="android.intent.action.VIEW" />
		<category android:name="android.intent.category.DEFAULT" />
		<category android:name="android.intent.category.BROWSABLE" />
		<data android:scheme="myscheme" android:host="myhost" />
	</intent-filter>
</activity>

于是再编写个简单html文件测试功能:

<html>
<a href="myscheme://myhost/?param=value">start my app!</a>
</html>

成功~

总结

其实还是没做过android项目对AndroidManifest.xml的配置方法不熟,走了很多弯路,安装完后无法打开app、启动后闪退等……

说明

微信的WebView貌似受到腾讯的限制scheme的方法不起效,还需尝试通过外部网页调用的方法。 另外,iOS的方法类似,只需在info.plist中配置URL Identifier(类似Android的host)和URL Scheme即可。