【问题标题】:How to know/configure Xamarin Android generated package name?如何知道/配置 Xamarin Android 生成的包名称?
【发布时间】:2016-05-25 13:24:18
【问题描述】:

我需要为 Widget 配置活动指定完整的类名(包括包名),如下所示:

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:configure="my.package.MyConfigActivity"
    ...
>
</appwidget-provider>

但是当我编译我的应用程序并查看生成的清单文件时,我看到活动的名称更改为md52e27f5924a30b693e8c2cbed2aefe779.MyConfigActivity

如何获取这个生成的名称或将其设置在某个位置以便其可预测并且我可以在我的 appwidget-provider Xml 配置文件中使用它?

【问题讨论】:

  • 你在哪里比较这个文件名?如果您在 Activity 中执行此操作,则可以分别使用 this.ComponenetName.PackageNamethis.ComponentName.ClassName 获取包名和类名。

标签: android xamarin android-widget xamarin.android android-appwidget


【解决方案1】:

如果您未通过 Attribute 指定类 ID,Xamarin 会自动生成类 ID

一些例子:

活动命名:

[Activity(Label = "ActivityNaming", Name = "com.sushihangover.playscript.MyBigBadGame", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
  ~~~
}

自动生成到清单中:

<activity android:icon="@mipmap/icon" android:label="ActivityNaming" android:name="com.sushihangover.playscript.MyBigBadGame">
  <intent-filter>
      ~~~~~
  </intent-filter>
</activity>

BroadcastReceiver 命名:

[BroadcastReceiver(Name = "com.sushihangover.greatapp.MyReceiver")]
public class MyBroadCastReceiver : BroadcastReceiver
{
    public override void OnReceive(Context context, Intent intent)
    {
       ~~~~
    }
}

自动生成到清单中:

<receiver android:name="com.sushihangover.greatapp.MyReceiver" />

【讨论】:

  • 这很好用,但 proguard 然后抱怨。有没有办法在不禁用 proguard 的情况下避免这种情况?
  • @lahsrah 您是否有自定义的 Java jar/aar(s),您也将其与 CIL 程序集一起打包? / 你的 Proguard 问题是什么?
  • 不,它抱怨包/类命名错误。对于广播接收器,我要给它一个自定义名称。
  • @lahsrah Proguard 不涉及 CIL 程序集,我一直使用它来剥离 Google Play 等...在发布发布模式 apk 时。 Name 唯一要做的就是更新您的清单,所以我会查看您的 Proguard 错误,因为这不是原因...在另一个问题中发布另一个问题,其中包含您的 Proguard 构建输出/警告/错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
  • 1970-01-01
  • 2011-01-21
相关资源
最近更新 更多