小编jo *_*hul的帖子

Android Studio 库未构建发布 aar,仅进行调试

我在 Android Studio 中有一个项目,其中包含三个库。我正在构建一组在许多其他项目中使用的通用库。除了构建过程之外,一切都运行良好。

我有三个库模块:toolsdatabasecore

如果我将构建变体设置为调试,我会在 build/outputs/aar 文件夹中获取正确的文件:

tools-debug.aar
database-debug.aar
core-debug.aar
Run Code Online (Sandbox Code Playgroud)

然而,当我将构建变体设置为发布时,我只得到

tools-release.aar
database-release.aar
Run Code Online (Sandbox Code Playgroud)

没有core-release.aar

生成它的唯一方法是打开右侧的 Gradle 滑块,然后手动运行 assembleRelease。

我比较了所有 gradle 文件和我能找到的所有其他文件,它们在三个库之间都是相同的。任何想法,将不胜感激

release gradle android-studio android-gradle-plugin

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

在C#/ .NET中上传和下载二进制文件到/从FTP服务器下载

我正在使用.NET 4 C#.我正在尝试上传然后将ZIP文件下载到(我的)服务器.

上传我有

using (WebClient client = new WebClient())
{
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(MyUrl);
    request.Method = WebRequestMethods.Ftp.UploadFile;
    request.EnableSsl = false;
    request.Credentials = new NetworkCredential(MyLogin, MyPassword);
    byte[] fileContents = null;
    using (StreamReader sourceStream = new StreamReader(LocalFilePath))
    {
        fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
    }
    request.ContentLength = fileContents.Length;
    using (Stream requestStream = request.GetRequestStream())
    {
        requestStream.Write(fileContents, 0, fileContents.Length);
    }
    FtpWebResponse response = null;
    response = (FtpWebResponse)request.GetResponse();
    response.Close();
}
Run Code Online (Sandbox Code Playgroud)

这似乎有效,因为我在正确大小的服务器上获得了一个文件.

1)如何流式传输,而不是先将其加载到内存中?我将上传非常大的文件.

我下载了

using (WebClient client = new WebClient())
{
    string HtmlResult = String.Empty;
    FtpWebRequest request = …
Run Code Online (Sandbox Code Playgroud)

.net c# ftp webclient ftpwebrequest

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

C#中Monitor.Exit的异常

这是我正在修复的大型多线程项目(我没有写过)。该应用程序挂在我正在跟踪的一些锁上。

我仔细检查了一下,并用所有的“ lock”语句替换了它,Monitor.TryEnter以便设置等待时间。我偶尔会遇到例外Monitor.Exit

原来的风格是

private List<myClass> _myVar= new List<myClass>();

if (_myVar != null)
{
    lock (_myVar)
    {
        _myVar = newMyVar; // Where newMyVar is another List<myClass>
    }
}
Run Code Online (Sandbox Code Playgroud)

我将上述所有锁替换为:

if (_myVar != null)
{
    bool lockTaken = false;
    try
    {
        Monitor.TryEnter(_myVar, new TimeSpan(0, 0, 5), ref lockTaken);
        if (lockTaken)
        {
            _myVar = newMyVar; // Where newMyVar is another List<myClass>
        }
    }
    finally
    {
        if (lockTaken) Monitor.Exit(_myVar);
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的例外是

从一个未同步的代码块中调用了SynchronizationLockException对象同步方法

。如果是这样,为什么原始的锁语句也不会引发异常?

Monitor.Exittry 放入catch并在出现异常时将其忽略就可以安全吗?

c# synchronization

0
推荐指数
1
解决办法
649
查看次数