在不运行ProGuard的情况下在Android上构建和部署可执行文件时,最终可执行文件中是否包含未引用的方法?
是否包括来自外部图书馆罐子的未引用方法?
这种行为是否依赖于Java编译器,或dex是否进行了所有修剪(如果有的话)?
可能重复:
如何处理Android中已弃用的类以保持兼容性
我遇到了已弃用的Display.getWidth()方法,发现它已被替换为android.view.getSize().但是getSize()自API 13以来才可用,并且View似乎不包含在V4 Android支持库中.
因此,如果我想避免不推荐使用的调用,那么如何在不为各种API级别维护不同的项目/构建的情况下执行此操作.
我正在运行Windows 7 x64 cygwin.
在大约一年前安装了以前的版本之后,我刚安装了Martin Odersky的Coursera Scala类的最新版本.首先,我尝试删除旧版本并使用msi安装程序.它sbt从空目录运行时返回以下错误.
后来我尝试卸载msi版本并手动安装(最新)sbt-launch.jar文件并从旧脚本中调用它.我得到了同样的错误.
有什么想法有什么不对吗?是否有某个sbt插件目录可能导致此问题?
~/dummy > sbt
[info] Loading global plugins from C:\Users\Jeff\.sbt\plugins
[info] Updating {file:/C:/Users/Jeff/.sbt/plugins/}default-46e191...
[info] Resolving com.typesafe.sbteclipse#sbteclipse;1.4.0 ...
[warn] module not found: com.typesafe.sbteclipse#sbteclipse;1.4.0
[warn] ==== typesafe-ivy-releases: tried
[warn] http://repo.typesafe.com/typesafe/ivy-releases/com.typesafe.sbteclipse/sbteclipse/scala_2.9.2/sbt_0.12/1.4.0/ivys/ivy.xml
[warn] ==== sbt-plugin-releases: tried
[warn] http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases/com.typesafe.sbteclipse/sbteclipse/scala_2.9.2/sbt_0.12/1.4.0/ivys/ivy.xml
[warn] ==== local: tried
[warn] C:\Users\Jeff\.ivy2\local\com.typesafe.sbteclipse\sbteclipse\scala_2.9.2\sbt_0.12\1.4.0\ivys\ivy.xml
[warn] ==== typesafe-ivy-releases: tried
[warn] http://repo.typesafe.com/typesafe/ivy-releases/com.typesafe.sbteclipse/sbteclipse/scala_2.9.2/sbt_0.12/1.4.0/ivys/ivy.xml
[warn] ==== public: tried
[warn] http://repo1.maven.org/maven2/com/typesafe/sbteclipse/sbteclipse_2.9.2_0.12/1.4.0/sbteclipse-1.4.0.pom
[info] Resolving org.scala-sbt#sbt;0.12.0 ...
[info] Resolving org.scala-sbt#main;0.12.0 ...
[info] Resolving org.scala-sbt#actions;0.12.0 ...
[info] Resolving org.scala-sbt#classpath;0.12.0 ... …Run Code Online (Sandbox Code Playgroud) 我正在参加Martin Odersky Coursera课程并且作业使用ScalaTest.Eclipse无法在双击时找到测试方法或右键单击JUnit运行器中的"转到文件",这非常令人讨厌.
双击后,找不到"方法' xxx '.打开测试类." 弹出对话框.
是否存在配置问题或者这是ScalaTest错误/限制?
这是来自班级的示例ScalaTest:
package recfun
import org.scalatest.FunSuite
import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
@RunWith(classOf[JUnitRunner])
class CountChangeSuite extends FunSuite {
import Main.countChange
test("manual") {
assert(countChange(4,List(1,2)) === 3)
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个接口A,该类B实现.
以下通用方法有效
public static <T, U extends T> List<T> listFactory(Collection<U> source) {
return new ArrayList<T>(source);
}
Run Code Online (Sandbox Code Playgroud)
但
public static <T> List<T> listFactory(Collection<? extends T> source) {
return new ArrayList<T>(source);
}
Run Code Online (Sandbox Code Playgroud)
当我将输出定向到时,不会(编译错误,类型不匹配)
List<A> tester = listFactory(B.defaultCollectionFactory(3));
Run Code Online (Sandbox Code Playgroud)
defaultCollectionFactory(int count)静态地提供Bs 的集合,具有默认标签方案.
关于为什么会这样的任何见解?看起来普通的U和通配符正在做同样的事情.
这不是功课.
是否可以编写泛型方法,如下所示:
<T extends Number> T plusOne(T num) {
return num + 1; // DOESN'T COMPILE! How to fix???
}
Run Code Online (Sandbox Code Playgroud)
没有使用一堆instanceof和演员,这可能吗?
以下3种方法编译:
Integer plusOne(Integer num) {
return num + 1;
}
Double plusOne(Double num) {
return num + 1;
}
Long plusOne(Long num) {
return num + 1;
}
Run Code Online (Sandbox Code Playgroud)
是否有可能编写约束仿制药T只Integer,Double或Long?
我在向以下代码实现异步图像加载器时遇到问题.我在网上看了一些关于它的帖子,我想我理解它背后的逻辑,但我似乎没有实现它.
下面的代码是我用来简单地加载listview中的图像.
public class MyCustomAdapter extends ArrayAdapter<RSSItem> {
Bitmap bm;
public MyCustomAdapter(Context context, int textViewResourceId, List<RSSItem> list) {
super(context, textViewResourceId, list);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
BitmapFactory.Options bmOptions;
bmOptions = new BitmapFactory.Options();
bmOptions.inSampleSize = 1;
bm = LoadImage(myRssFeed.getList().get(position).getDescription(), bmOptions);
View row = convertView;
if(row == null) {
LayoutInflater inflater = getLayoutInflater();
row = inflater.inflate(R.layout.rsslist, parent, false);
}
TextView listTitle = (TextView)row.findViewById(R.id.listtitle);
listTitle.setText(myRssFeed.getList().get(position).getTitle());
ImageView listDescription = (ImageView)row.findViewById(R.id.listdescription);
listDescription.setImageBitmap(bm);
TextView listPubdate …Run Code Online (Sandbox Code Playgroud) 我正在编写一个Android JUnit测试,想要复制/重置测试夹具文件(它是一个SQLite数据库文件.)如果我在主应用程序中,我知道我可以将文件放在assets目录中并使用 getResources().getAssets().open(sourceFile)
但是,此API似乎在ActivityInstrumentationTestCase2课程中不可用.
有没有一种简单的方法可以从测试PC上复制文件,或者我应该在设备上保留一个测试夹具的新副本并将其复制到临时文件中?
谢谢!
我知道之前已经问过“无法在没有调用 Looper.prepare() 的线程内创建处理程序”的一般问题,但我很难理解它在这种情况下如何应用。
我正在尝试在非 UI 线程中构造一个新的 CountDownTimer,我猜这是导致此错误的原因,但我真的不明白为什么需要在主线程中使用计时器。从我所见,它似乎有一个回调处理程序,需要在具有循环程序的线程中运行,非 UI 线程默认情况下没有。看来我的选择是:1)让这个非 UI 线程有一个 Looper 或 2)在我的 UI 线程上做一些奇怪的方法来构造这个计时器,这两种方法对我来说都很愚蠢。有人可以帮助我理解其中的含义吗?
另外,有没有人知道任何有用的链接可以阐明 Looper 和 MessageQueue?我没有很好地掌握它们,正如我确信我已经展示的那样。谢谢!
我对在设备上调试感到有点困惑.当我使用模拟器时,在调试会话之后,我只需关闭模拟器窗口......但是在我的设备上调试时,如何关闭会话?只需断开USB电缆连接?
应该手动删除已安装的.apk(由Eclipse安装)?