GVKun编程网logo

proguard-rules.pro文件上的FileNotFoundException(progran files)

16

在这篇文章中,我们将带领您了解proguard-rules.pro文件上的FileNotFoundException的全貌,包括progranfiles的相关情况。同时,我们还将为您介绍有关.cspr

在这篇文章中,我们将带领您了解proguard-rules.pro文件上的FileNotFoundException的全貌,包括progran files的相关情况。同时,我们还将为您介绍有关.csproj称为Nuget包时,FileNotFoundException、.NET Standard库引用导致的FileNotFoundException探究、@PropertySource绝对路径(java.io.FileNotFoundException问题解决)、android – FileNotFoundException将文件写入SD卡的知识,以帮助您更好地理解这个主题。

本文目录一览:

proguard-rules.pro文件上的FileNotFoundException(progran files)

proguard-rules.pro文件上的FileNotFoundException(progran files)

我正在使用Android Studio v.1.0我的构建文件:

  buildTypes {    debug {        minifyEnabled false        proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''    }    release {        minifyEnabled true        proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''    }}

但是,当我尝试进行发行版本构建时,出现错误:错误:任务’:app:proguardRelease’的执行失败。

java.io.FileNotFoundException:F:.... \ app \ proguard-rules.pro(未找到文件)

我认为,proguard-android.txt是Android SDK的一部分,对吗?

为什么Android Studio无法找到它?

我也尝试过proguard-android.pro-相同的结果

答案1

小编典典

我已经创建了自己的proguard-android.pro文件,并且对我来说可以正常使用:

-dontwarn org.apache.commons.**-dontwarn com.google.**-dontwarn com.j256.ormlite**-dontwarn org.apache.http**-keepattributes SourceFile,LineNumberTable-keep class com.j256.**-keepclassmembers class com.j256.** { *; }-keep enum com.j256.**-keepclassmembers enum com.j256.** { *; }-keep interface com.j256.**-keepclassmembers interface com.j256.** { *; }-keepattributes Signature# GSON Library# For using GSON @Expose annotation-keepattributes *Annotation*# Gson specific classes-keep class sun.misc.Unsafe { *; }#-keep class com.google.gson.stream.** { *; }# Application classes that will be serialized/deserialized over Gson-keep class com.google.gson.examples.android.model.** { *; }# Google Map-keep class com.google.android.gms.maps.** { *; }-keep interface com.google.android.gms.maps.** { *; }

.csproj称为Nuget包时,FileNotFoundException

.csproj称为Nuget包时,FileNotFoundException

我通过在.csproj中添加以下内容来解决此问题,

  <ItemGroup>
    <Content Include="ContentFiles\**" PackagePath="contentFiles\any\any;content" CopyToOutputDirectory="Always" PackageCopyToOutput="true" />
  </ItemGroup>

.NET Standard库引用导致的FileNotFoundException探究

.NET Standard库引用导致的FileNotFoundException探究

微软近几年推出.NET Standard,将.NET Framework,.NET Core,Xamarin等目标平台的api进行标准化和统一化,极大地方便了类库编写人员的工作。简单的说,类库编写人员在发布库的时候,只需要基于.NET Standard进行发布,那么编写的程序可以在各个目标平台上都能到运行。

.NET Standard是一种标准,只要符合这个标准的平台都可以运行基于此标准api构建的程序。

感觉挺好用的,但是实际上用起来就有一些坑了。比如说这个常见的FileNotFoundException,当有这个情况的时候,经常出现:

主程序的目标平台是某个具体平台(不是.NET Standard,比如说是.NET Framework 4.0),随后为了引入新的特性,升级了Framework为4.6.1,它并且引用了一个.NET Standard类库,恰好,这个类库还引用了其他的package。(即传递引用A->B->C的形式,其中A是.NET Framework程序,B是nuget包,C是B引用的nuget包。)在此情况下,如果F5启动程序,就会报FileNotFoundException。

测试条件 Visual Studio 2015 Community 测试用包:UnifiedConfig v1.1.6

提示未找到System.IO.FileSystem。乍看感觉是一个简单的引用错误,但unifiedconfig包里面已经正常引用了这个项目,按道理vs能够正常帮我们处理引用问题。到文件输出路径中查看,发现对应的包没有正确复制过来。手动从package文件夹中复制过来,问题解决。

原因出在这个跨平台上。由于存在引用传递,B不能确定需要复制哪个目标平台的package到A的输出路径。当程序是从旧的Framework升级而来的时候,旧版的项目文件不能很好地处理.NET Standard的这个问题。但我们手动一个一个复制也不是办法,以下给出解决方案。

解决方案:

  1. 最直接的方案,修改主项目的.csproj文件,将<RestoreProjectStyle>PackageReference</RestoreProjectStyle>添加到第一个PropertyGroup
  2. 如果还不行,加上<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> 或者
  • 在工具->nuget包管理器->程序包管理->默认包管理格式,从Packages.config改成PackageReference。

后记

我记得在visual studio 2017早期版本还存在这个bug,升级之后visual studio 2017 15.6.4这个版本测试新建项目,已经没有这个问题。并且默认生成的基于4.5.2以上Framework的.csproj文件已经添加<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>这个配置。但是当老版本的项目引用.NET Standard类库的时候,还是经常会出现这个问题,这时候,就需要我们手动添加配置项目了。

@PropertySource绝对路径(java.io.FileNotFoundException问题解决)

@PropertySource绝对路径(java.io.FileNotFoundException问题解决)

经常使用@PropertySource 来指定配置文件,然后@value获取配置参数:

1 @Component
2 @PropertySource(value= {"classpath:rules.yml"})
3 @ConfigurationProperties(prefix = "busi-udid-mapper")

 

默认,配置文件都是指定classpath下的文件路径,如果使用绝对路径(操作系统下某个配置文件路径),请使用如下方式:

1 @Component
2 @PropertySource(value= {"file:${rule.fullpath}"})
3 @ConfigurationProperties(prefix = "busi-udid-mapper")

这里的rule.funnpath是在系统配置文件中变量化的参数

 

 

参考:

http://www.voidcn.com/article/p-scladotq-bva.html

 

android – FileNotFoundException将文件写入SD卡

android – FileNotFoundException将文件写入SD卡

我正在尝试从网上下载文件并将其写入SD卡.我启用了WRITE_EXTERNAL_STORAGE权限.代码在这里失败:

OutputStream output = new FileOutputStream(filePath);

09-15 19:40:31.630: WARN/System.err(7933): java.io.FileNotFoundException: /sdcard/artoo/Customerv08.apk
09-15 19:40:31.630: WARN/System.err(7933):     at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:231)
09-15 19:40:31.630: WARN/System.err(7933):     at java.io.FileOutputStream.<init>(FileOutputStream.java:96)
09-15 19:40:31.630: WARN/System.err(7933):     at java.io.FileOutputStream.<init>(FileOutputStream.java:169)
09-15 19:40:31.630: WARN/System.err(7933):     at java.io.FileOutputStream.<init>(FileOutputStream.java:147)
09-15 19:40:31.640: WARN/System.err(7933):     at com.artoo.settings.InstallerActivity$ProgressDialogAsyncTask.doInBackground(InstallerActivity.java:148)
09-15 19:40:31.640: WARN/System.err(7933):     at com.artoo.settings.InstallerActivity$ProgressDialogAsyncTask.doInBackground(InstallerActivity.java:1)
09-15 19:40:31.640: WARN/System.err(7933):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
09-15 19:40:31.640: WARN/System.err(7933):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:256)
09-15 19:40:31.640: WARN/System.err(7933):     at java.util.concurrent.FutureTask.run(FutureTask.java:122)
09-15 19:40:31.640: WARN/System.err(7933):     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:648)
09-15 19:40:31.640: WARN/System.err(7933):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:673)
09-15 19:40:31.651: WARN/System.err(7933):     at java.lang.Thread.run(Thread.java:1060)
09-15 19:40:31.670: WARN/InputManagerService(53): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@43868480

我正在尝试编写该文件,它从以前不存在.关于如何做到这一点的任何想法?

解决方法:

您收到该错误,因为指定的文件无法打开或不存在.这很简单.

我总是先创建一个文件并使用bufferedstream写入它,例如:

File file = new File(path, name);
file.createNewFile();
bufferedoutputstream out = new bufferedoutputstream(new FileOutputStream(file), BUFFER);

关于proguard-rules.pro文件上的FileNotFoundExceptionprogran files的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于.csproj称为Nuget包时,FileNotFoundException、.NET Standard库引用导致的FileNotFoundException探究、@PropertySource绝对路径(java.io.FileNotFoundException问题解决)、android – FileNotFoundException将文件写入SD卡等相关内容,可以在本站寻找。

本文标签: