小编Mik*_*nin的帖子

如何在Xamarin中处理"$ {applicationid}"?

我正在尝试为Zendesk库创建绑定,但我遇到了一个问题.

Zendesk Belvedere库(belvedere-1.0.2.1.aar)在其清单文件中包含一个文件提供程序:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    ...
    ...

    <application>
        <provider
            android:name="com.zendesk.belvedere.BelvedereFileProvider"
            android:authorities="${applicationId}.belvedere.attachments"
            android:exported="false"
            android:grantUriPermissions="true" >
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/belvedere_attachment_storage" />
        </provider>
    </application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

当Gradle用作构建工具时,它会将其放在APK文件中,${applicationId}.belvedere.attachmentscom.your_package_name_here.belvedere.attachments在合并的清单文件中替换它.没关系.

但是,Xamarin以不同的方式处理它.这是我在最终APK的清单中找到的内容:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    ...
    ...

    <application 
        ...
        ...
        <provider 
            android:name="com.zendesk.belvedere.BelvedereFileProvider" 
            android:exported="false"
            android:authorities="dollar_openBracket_applicationId_closeBracket" 
            android:grantUriPermissions="true">
            <meta-data 
                android:name="android.support.FILE_PROVIDER_PATHS" 
                android:resource="@xml/belvedere_attachment_storage" />
        </provider>
        ...
        ...
    </application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

显然,dollar_openBracket_applicationId_closeBracket不是我需要的.

似乎一切正常,但是不可能安装几个使用这些绑定的Xamarin应用程序,因为所有这些应用程序都会有相同权限的冲突提供程序(并且用户会收到INSTALL_FAILED_CONFLICTING_PROVIDER错误).

是否有办法改变dollar_openBracket_applicationId_closeBracket清单?

编辑:显示问题的小样本:https://gitlab.com/lassana/ZendeskXamarin/

android android-manifest xamarin.android xamarin

13
推荐指数
2
解决办法
3350
查看次数

Resource.Designer.cs:"资源...不包含...的定义"

今天我更新了Android版的NuGet包(我们目前正在为Android和iOS开发).更新后,我无法再构建Android版本了.这是我到目前为止每次更新包装后遇到的问题,但这次我无法解决这个问题.通常重启Xamarin或重新安装NuGet包有帮助.

我有151条错误消息,如下所示:

/Users/Username/Projects/MyAppName/Droid/Resources/Resource.designer.cs(118,118):错误CS0117:> MyAppName.Droid.Resource.Attribute'不包含mediaRouteSettingsDrawable的定义'(CS0117)(MyAppName.Droid)

以下是我尝试解决此问题的所有步骤(按此顺序):

  1. 建立 - >清理所有
  2. 从每个项目卸载每个NuGet包(Droid,iOS,SyncLibrary(用于SQL服务器通信的自有库)和UITest)
  3. 删除文件"Resource.Designer.cs"中的所有内容
  4. 关闭Xamarin
  5. 在SDK Manager中为每个版本安装每个软件包
  6. 删除解决方案的packages文件夹
  7. 删除/Users/Username/.local/share/Xamarin的内容
  8. 删除/Users/Username/.local/share/NuGet/cache的内容
  9. 启动Xamarin
  10. 将Newtonsoft.Json包添加到SyncLibrary
  11. 添加Android软件包:只添加所需的软件包,让NuGet自行解决依赖关系(如Xamarin.Android.Support,Xamarin.GooglePlayServices等).已安装的包(按此顺序):

    Xamarin.Forms .......................................(2.2.0.45)
    Xamarin.Forms .Maps ...........................(2.2.0.45)
    XLabs.Forms ............. ...............................(2.0.5782)
    ZXing.Net.Mobile ......... .........................(2.0.4.46)
    Newtonsoft.Json ................. ...................(8.0.3)
    Xam.Plugin.Geolocator ..................... ...(3.0.4)

  12. 建立 - >清理所有

  13. 重启Xamarin
  14. 构建新的:SyncLibrary(因此在尝试构建Android版本时没有依赖性错误)
  15. 构建新:Android版本 - >错误

我真的不知道该怎么做了.任何帮助/想法都表示赞赏,提前谢谢.

c# android xamarin.android xamarin-studio xamarin.forms

7
推荐指数
1
解决办法
4008
查看次数

将元数据设置为mp4

我借助MediaCodec和编码视频MediaMuxer.结果我有mp4视频文件.如何设置此mp4文件的元数据(创建时间)?MediaMetadataRetriever只能读取元数据,但不能更改.我不想使用ffmpeg.我试过mp4parser库(这个类),但它对我不起作用.

android mp4parser

5
推荐指数
1
解决办法
1580
查看次数

与UIWebView崩溃

我有一个包装UIWebView的Xamarin.iOS应用程序.不幸的是,我在Firebase控制台中收到大量崩溃事件; 它只发生在iOS 10的iPhone上,iPad没有这个问题.

我个人无法重现崩溃,所以我只有堆栈跟踪:

EXC_BAD_ACCESS / KERN_INVALID_ADDRESS
1   libobjc.A.dylib     objc_msgSend + 115024
2   UIKit               -[_UIKeyboardTextSelectionController selectTextWithGranularity:atPoint:executionContext:] + 5209476
3   UIKit               -[_UIKeyboardBasedNonEditableTextSelectionGestureController oneFingerForcePan:] + 5624368
4   UIKit               -[UIGestureRecognizerTarget _sendActionWithGestureRecognizer:] + 6166732
5   UIKit               _UIGestureRecognizerSendTargetActions + 6181120
6   UIKit               _UIGestureRecognizerSendActions + 1700016
7   UIKit               -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] + 266176
8   UIKit               _UIGestureEnvironmentUpdate + 6116260
9   UIKit               -[UIGestureEnvironment _deliverEvent:toGestureRecognizers:usingBlock:] + 6115188
10  UIKit               -[UIGestureEnvironment _updateGesturesForEvent:window:] + 6111776
11  UIKit               -[UIWindow sendEvent:] + 258892
12  UIKit               -[UIApplication sendEvent:] + 65404
13  UIKit               __dispatchPreprocessedEventFromEventQueue + 8428060 …
Run Code Online (Sandbox Code Playgroud)

uiwebview xamarin.ios uikeyboard ios

5
推荐指数
0
解决办法
363
查看次数

如何从 WKHttpCookieStore 中删除 cookie?

iOS 11 为 WKWebView 带来了一些更新,包括 cookie 管理。我已经开始从 UIWebView 迁移我的应用程序并遇到了一个问题:尽管 WKHttpCookieStore 提供了一种删除 cookie 的方法(deleteCookie:completionHandler:,Xamarin wrapper: DeleteCookieAsync),但实际上它并没有删除所有 cookie。这是我的代码:

WKHttpCookieStore cookieStore = WKWebsiteDataStore.DefaultDataStore.HttpCookieStore;

// Delete all cookies
NSHttpCookie[] allCookies = await cookieStore.GetAllCookiesAsync();
foreach (NSHttpCookie cookieToDelete in allCookies)
{
    await cookieStore.DeleteCookieAsync(cookieToDelete);
}

NSHttpCookie[] newCookies = await cookieStore.GetAllCookiesAsync();
// why newCookies is not an empty array?

myWkWebView.LoadRequest(new NSUrlRequest(new NSUrl("https://facebook.com/")));
Run Code Online (Sandbox Code Playgroud)

例如,这个 cookie 正在被删除:

NSHTTPCookie    
version:1   
name:c_user     
value:100015842...  
expiresDate:'2017-12-27 07:37:39 +0000'     
created:'2017-09-28 07:39:01 +0000'     
sessionOnly:FALSE   
domain:.facebook.com    
partition:none  
path:/  
isSecure:TRUE  
path:"/" 
isSecure:TRUE
Run Code Online (Sandbox Code Playgroud)

但这个不是: …

xamarin.ios ios xamarin wkwebview ios11

5
推荐指数
2
解决办法
4141
查看次数

Instagram图标未显示在文档共享窗口中

我正在使用Document Interaction API在Instagram上分享我的照片。我使用“ igo”作为文件扩展名,文档交互UTI的标识符为com.instagram.exclusivegram。相同的代码适用于iOS12.4

instagram ios13

5
推荐指数
1
解决办法
115
查看次数