我的客户希望将我开发的应用程序放在他们的启动器中,并且他们要求启动器的包名和类名。 包名是非常简单的,但ClassName不是因为如果我查看清单,类名前面有一个这样的哈希:md599e473470f20dc18f556aff51bcfbcb1.LaunchScreen
那么我必须使用哪个类名来启动发射器,整个或只有类名称LaunchScreen?
由于
答案 0 :(得分:0)
(如果你提供播放链接,恭喜你进入他们的最爱; - )
正如您所说,包名称很简单,它在清单中定义为package
元素的manifest
属性:
<manifest .... package="com.sushihangover.playscriptstarling2" ...>
启动器类名称是在Activity
C#类属性中标记的类,&#34; MainLauncher = true&#34;
反过来,这会在清单中创建activity
属性片段:
<activity android:icon="@mipmap/icon" android:label="PlayScriptStarling2" android:name="md5d2519388ea1895e3e3594794d2e0c4ce.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
您的班级名称是完整的android:name
属性,因为它不以句点开头。这是一个生成的唯一子类标识符,因此在我的示例中,这是完整的类名:
md5d2519388ea1895e3e3594794d2e0c4ce.MainActivity
虽然大多数人永远不会看到此类ID,但我高度建议您覆盖此生成类标识符并使用包含您的包名称的点类表示法。
通常,这是通过使用带有句点的BEGINS android:name
提供名称来完成的(这是标准的Android类命名101 ;-)但是Xamarin目前不支持Android速记样式类名称以点开头,因此您需要将完全限定的包名称与您的类ID名称一起使用。
因此Main Activity属性变为:
[Activity(Label = "PlayScriptStarling2", Name = "com.sushihangover.playscriptstarling2.MyBigBadGameEveryOneShouldPlay", MainLauncher = true, Icon = "@mipmap/icon")]
生成的清单变为:
<activity android:icon="@mipmap/icon" android:label="PlayScriptStarling2" android:name="com.sushihangover.playscriptstarling2.MyBigBadGameEveryOneShouldPlay">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
我的启动器类名称变为:
com.sushihangover.playscriptstarling2.MyBigBadGameEveryOneShouldPlay
Android文档:
声明类名
许多元素对应于Java对象,包括应用程序本身(元素)及其主要组件的元素 - activities(),services(),broadcast receiver()和content providers()。
如果定义子类,就像组件类(Activity,Service,BroadcastReceiver和ContentProvider)几乎总是那样,子类是通过name属性声明的。名称必须包括完整的包装名称。例如,Service子类可能声明如下:
<manifest . . . >
<application . . . >
<service android:name="com.example.project.SecretService" . . . >
. . .
</service>
. . .
</application>
</manifest>
但是,作为简写,如果字符串的第一个字符是句点,则该字符串将附加到应用程序的包名称(由元素的包属性指定)。
以下分配与上述分配相同:
<manifest package="com.example.project" . . . >
<application . . . >
<service android:name=".SecretService" . . . >
. . .
</service>
. . .
</application>
</manifest>
启动组件时,Android会创建指定子类的实例。如果未指定子类,则会创建基类的实例。
参考:http://developer.android.com/guide/topics/manifest/manifest-intro.html