我正在尝试使用Robolectric 2.1.1运行单元测试,我无法让它膨胀自定义布局(例如ViewPagerIndicator类).假设这是我的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="test"
android:id="@+id/test_test"/>
<com.viewpagerindicator.CirclePageIndicator
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
考虑一下我的测试类:
@RunWith(RobolectricTestRunner.class)
public class TestRoboActivityTest {
private TestRoboActivity mActivity;
@Before
public void setUp() throws Exception {
mActivity = Robolectric.buildActivity(TestRoboActivity.class).create().get();
}
@After
public void tearDown() throws Exception {
mActivity = null;
}
@Test
public void testSanity() throws Exception {
Assert.assertNotNull(mActivity);
}
}
Run Code Online (Sandbox Code Playgroud)
执行'mvn clean test'会导致
Tests in error: testSanity(TestRoboActivityTest): XML file .\res\layout\test.xml line #-1 (sorry, not yet implemented): Error inflating class com.viewpagerindicator.CirclePageIndicator
很酷,所以似乎还不支持自定义视图.在他们的网站上检查示例Robolectric项目,一个解决方案可能是从LayoutInflater扩展布局: …
我有Android HTC Amaze和Android HTC Desire.由PhoneGap包装的我的Sencha Touch 2应用程序非常适合Desire,但他们拒绝加载HTC Amaze 4.0.3.我在日志中遇到这种错误 -
08-24 17:08:37.577: E/chromium(16106): external/chromium/net/disk_cache/stat_hub.cc:190: [0824/170837:ERROR:stat_hub.cc(190)] StatHub::Init - App "appname" isn't supported.
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
从v4.1 Jelly Bean开始,Google为Google Play引入了一项新的应用程序资产加密功能.似乎在升级包含持久性数据的应用程序时出现了一些问题,这些问题是由apk目录中的更改引起的(旧的/data/app
,现在是/mnt/asec
).
因此,在Google Play上发布(或更新已发布的应用)时,对于OS 2.3+,
除了这个问题,提供额外的防盗版保护的想法似乎没问题,但是在文档的任何地方都有一些我无法解释的额外注意事项:
提前致谢
更新:
修改以包含指向Google代码问题的链接.
问题34880(关闭,但有些开发者仍抱怨;状态:未来发布)
问题35962(已关闭;状态:已发布)
更新#2:由第一期中的一位开发人员链接的此博客文章的
有趣信息.同样在这里,在德国.
用户和开发人员报告说,在最近几天,使用最新版Google Play(3.7.15)安装的应用程序的问题似乎已经消失.以前安装有问题的应用程序的用户需要卸载,然后免费重新下载.根据一份报告,新版Google Play现在再次将付费应用程序保存到/ data/app,这意味着Google暂时停用了复制保护功能.谷歌没有公开评论这个问题.该错误被标记为中等优先级,状态为"FutureRelease"以进行可能的修复.
我正在将一个代码库从本机Holo(Theme.Holo
等)移植到appcompat-v7
(Theme.AppCompat
等等).如果您不想阅读详细信息,最后一部分包含tl; dr.
一切正常,但我有问题复制一个很容易使用旧ActionBar的行为.我有一个视频播放器,在风景中我希望它的行为像YouTube:隐藏(动画)播放器控件,应用栏和状态栏.在用户交互时,UI控件应该保持"熄灯"模式并返回正常状态.如果用户没有触摸屏幕X秒,则计时器将返回到熄灯模式.使用ActionBar的相同代码不能用Toolbar
.
所以,我使用的是:
setSystemUiVisibility()
使用以下组合之一:
View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
minSdkVersion
是16岁show()
和hide()
它Toolbar
并添加了一个show()
和一个hide()
方法来做同样的事情(首先简单地使用setVisibility()
,然后使用动画 - 得到相同的结果)在LAYOUT_STABLE
做这样的appbar最终会在状态栏的背后,当然是(因为这意味着fitSystemWindows
,由于appbar是视图层次结构中的普通视图和喜欢的动作条中,它是由该标志的影响是不是在装修这就是我在屏幕上看到的:
不能立即清楚工具栏界限是什么,因为应用栏在黑暗中是黑暗的,但是你可以看到标题被剪切并且"未对齐".这是因为工具栏的大小正确但位于状态栏后面.我的主要问题是,此时没有公共API来获取状态栏高度,矩形或其他任何内容以垂直移动我的应用栏以显示状态栏下方.
测试主要是在LPX13D上的N5上进行的(在撰写本文时最新的Lollipop公共版本),但在Android 4.4上也可以看到相同的情况.
也就是说,经过相当长的一段时间和一些失败的尝试使其以一种不太苛刻的方式工作(包括我自己试图将其置于装饰中的相当绝望的尝试),我采取了这种令人讨厌的方式使其工作:
在onResume
:
a.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE)
即使我通常不这样做也会打电话(风景)
b.注册一个OnPreDrawListener
在OnPreDrawListener
:
a.使用View root = getRootView().findViewById(R.id.my_root)
b 获取根视图.获取根视图高度:( int rootTop = getAbsoluteViewTop(root) …
android media-player android-appcompat android-support-library android-toolbar
在Android的Photo Collage应用程序中,我使用Volley来加载图像.我正在使用具有50 mb存储空间的DiskBasedCache(包含在volley中),以防止多次重新下载相同的图像.
上次我检查DiskBasedCache包含大约1000个缓存条目.
当我的应用程序启动时,Volley调用mCache.initialize(),它将在我的Galaxy S4上花费大约10秒钟(!)来执行以下操作:
我发现在启动时读取1000多个文件并不是加载缓存索引的有效方法!:-)
从volley/toolbox/DiskBasedCache.java:
@Override
public synchronized void initialize() {
if (!mRootDirectory.exists()) {
if (!mRootDirectory.mkdirs()) {
VolleyLog.e("Unable to create cache dir %s", mRootDirectory.getAbsolutePath());
}
return;
}
File[] files = mRootDirectory.listFiles();
if (files == null) {
return;
}
for (File file : files) {
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
CacheHeader entry = CacheHeader.readHeader(fis);
entry.size = file.length();
putEntry(entry.key, entry);
} catch (IOException e) {
if (file != null) { …
Run Code Online (Sandbox Code Playgroud) 使用适用于Android的FB SDK有时会在Logcat中引发错误.
谁知道原因?我的应用正在运行并获得批准(不在Google Play上).我也使用散列的东西,并在FB应用页面上列出我的主要活动和包名称.
有没有办法将jar中提供的javadoc附加到aar库?没有可用的源代码,并且这两个文件都存在于本地(不在存储库中).
通过以下方式添加aar:
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile(name:'library', ext:'aar')
}
Run Code Online (Sandbox Code Playgroud)
并且工作正常(除了无法添加文档).
我尝试了什么(并没有奏效):
环境:
Android-Studio 0.8.2
gradle插件0.12
它可能不可能是ATM(请参阅此错误:https://code.google.com/p/android/issues/detail?id = 73087),但任何解决方法都将不胜感激.
例外情况是:
"无法解析L android/support/v4/app/FragmentTransitionCompat21 $ 1的超类;"
我正在尝试使用以下函数从片段管理器的片段返回堆栈中弹出最后一个片段转换:
getSupportFragmentManager().popBackStack();
,
当我这样做时,函数调用抛出错误.只有当我使用New Android API Version 21作为Build目标时才会发生这种情况.
相同的代码适用于旧版API 20.
错误:找不到'android.support.v4.app.FragmentTransitionCompat21 $ 1'的超类
它似乎是'FragmentTransitionCompat21'基类中的内部类.
错误:
W/dalvikvm(1356): Unable to resolve superclass of Landroid/support/v4/app/FragmentTransitionCompat21$1; (1082)
W/dalvikvm(1356): Link of class 'Landroid/support/v4/app/FragmentTransitionCompat21$1;' failed
E/dalvikvm(1356): Could not find class 'android.support.v4.app.FragmentTransitionCompat21$1', referenced from method android.support.v4.app.FragmentTransitionCompat21.setEpicenter
W/dalvikvm(1356): VFY: unable to resolve new-instance 358 (Landroid/support/v4/app/FragmentTransitionCompat21$1;) in Landroid/support/v4/app/FragmentTransitionCompat21;
Run Code Online (Sandbox Code Playgroud)
有人发现类似错误吗?请帮忙解决这个问题,谢谢.
在Android设备(包括4.4.2)上,默认的浏览器和Chrome支持HTML5缓存清单.但是,在这些相同的设备上,WebView组件似乎不支持HTML5缓存清单.有谁知道如何让WebView组件支持HTML5清单?
我刚刚决定在几天前休息时,我已经在这个应用程序上工作了近一年(高级项目).我的应用程序是使用我的Windows 7 64位PC使用Eclipse版3.7.2 64bit定位Froyo Android 2.2开发的.到目前为止,我尝试过:
可能更多......
我的代码如下:gmap.xml
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="0xMbgnc-el963gCdpl547hdkgXUILTskZr-T5uvg" // random key posted here
/>
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml中
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.PubMe"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-sdk android:minSdkVersion="8"/>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<uses-library android:name="com.google.android.maps" />
<activity android:name=".PubMeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MappingActivity"
android:label="@string/app_name">
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
我非常感谢任何提前帮助.
android ×10
caching ×2
java ×2
aar ×1
android-xml ×1
apk ×1
chromium ×1
cordova ×1
eclipse ×1
encryption ×1
facebook ×1
google-maps ×1
google-play ×1
javadoc ×1
media-player ×1
robolectric ×1
web-based ×1
webview ×1