Android Studio是否签署调试版本?如果是这样,它用于执行此操作的密钥库在哪里?
我在iOS应用程序中有一个功能,用于dispatch_group对多个休息请求进行分组:
static func fetchCommentsAndTheirReplies(articleId: String, failure: ((NSError)->Void)?, success: (comments: [[String: AnyObject]], replies: [[[String: AnyObject]]], userIds: Set<String>)->Void) {
var retComments = [[String: AnyObject]]()
var retReplies = [[[String: AnyObject]]]()
var retUserIds = Set<String>()
let queue = dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0)
Alamofire.request(.GET, API.baseUrl + API.article.listCreateComment, parameters: [API.article.articleId: articleId]).responseJSON {
response in
dispatch_async(queue) {
guard let comments = response.result.value as? [[String: AnyObject]] else {
failure?(Helper.error())
return
}
print(comments)
retComments = comments
let group = dispatch_group_create()
for (commentIndex, comment) in comments.enumerate() {
guard let id …Run Code Online (Sandbox Code Playgroud) 根据AAR文件规范,Android库包含'proguard.txt'文件.我的理解是这个文件声明了如何正确地对库进行模糊处理和缩小.在我的情况下,我需要保留一些API类.
如何在库的build.gradle中声明库的proguard.txt文件?在创建使用我的库的应用程序(APK)时,是否会自动读取此文件?
我没有在Android的Gradle Plugin用户指南中找到此信息.
我正在构建一个Cordova Android插件.我想使用第三方View内的Intent是由插件创建(特别是剪刀).通常(在非Cordova项目中)我会转到我的项目build.gradle文件并添加如下:
dependencies {
compile 'com.lyft:scissors:1.0.1' }
Run Code Online (Sandbox Code Playgroud)
但似乎build.gradle我的插件项目中的文件并不意味着被触及?向插件项目添加依赖项的正确方法是什么,通过Cordova支持构建并通过Android Studio构建?同样的问题,但对于本地项目(不在GitHub上托管).
android gradle cordova android-gradle-plugin cordova-plugins
我想用Material Design Support库实现一个向导.
我正在使用ViewPager,Tablayout但我在动态添加新标签时遇到问题.
首先,我在onCreate方法中设置我的小部件:
viewPager = (ViewPager) findViewById(R.id.tab_viewpager);
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFrag(new DummyFragment(), "1");
adapter.addFrag(new DummyFragment(), "2");
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
Run Code Online (Sandbox Code Playgroud)
然后我想在单击列表中的元素时添加另一张卡片:
adapter.addFrag(new DummyFragment(), "3");
adapter.notifyDataSetChanged();
tabLayout.setTabsFromPagerAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
问题是:添加后,所选卡首先重置.
如何防止这种行为?
我正在研究一个Android TV应用程序,我面临一个与项目点击监听器相关的奇怪问题:一切正常,但有时点击不会传播,很可能没有设置监听器.
我有子类RowsFragment,我用6个元素的行显示我的图像:这意味着网格的每一行实际上都是适配器中的一行,即使视觉上照片的月份相同.请查看图片以便更好地理解.
现在的问题是:当我启动应用程序并向下滚动时,上面图像中看不到的第一行(所以第四行,因为这里有3行被渲染),没有得到我的"点击",没有任何反应.对于第5行,第6行......也可能是这样但是然后(我没有识别出模式)行再次开始可点击(即第8,第9,......)前3行也总是可点击的.
如果我再次向上滚动并且那些不可点击的行再次出现在屏幕上,现在它们是可点击的.
在onCreate片段中,我调用:
setOnItemViewClickedListener(new ItemViewClickedListener());
并且根据文档,这应该覆盖单项视图设置的侦听器.它还建议设置一个监听器,而不是两个:实际上我只是为片段设置了一个监听器.
在Presenter单行项的类中,我尝试onCreateViewHolder在视图中添加一个单击侦听器,并且我发现问题发生时,将调用此侦听器.
因此,在某些情况下,整个片段侦听器似乎不会覆盖视图侦听器,或者根本不设置它.
这个问题让我担心的是,当我设置断点并停止滚动动画时,我无法在调试模式下重现它.
我正在使用最新的Leanback版本:
compile 'com.android.support:leanback-v17:25.3.1'
Run Code Online (Sandbox Code Playgroud)
这个问题在Nvidia Shield TV(Android 7.0)上是可重现的,在其他设备上并不确定.
更新:有趣的是,当一个项目在一行中无法点击时,我希望同一行中的所有项目都不可点击.相反,事实并非如此,有些是可点击的,有些则不是.
更新2:似乎ListRowPresenterItemBridgeAdapter方法onBind,在某些情况下,发现getOnItemViewClickedListener返回null,因此没有设置项目单击侦听器.这很奇怪,因为监听器是为主RowsFragment类设置的,它适用于大多数项目,也适用于那些不起作用的项目.
作为一种解决方法,我找到了这个解决方案:子类化ListRowPresenter并设置一个虚拟点击监听器.
private class GroupedListRowPresenter extends ListRowPresenter {
GroupedListRowPresenter(int focusZoomFactor) {
super(focusZoomFactor);
}
@Override
protected void onBindRowViewHolder(RowPresenter.ViewHolder holder, Object item) {
super.onBindRowViewHolder(holder, item);
holder.setOnItemViewClickedListener(new BaseOnItemViewClickedListener() {
@Override
public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, RowPresenter.ViewHolder
rowViewHolder, Object row) {
Timber.d("item click …Run Code Online (Sandbox Code Playgroud) 我目前正在将我的Android项目迁移到最新版本的Android Gradle插件,以便与Android Studio 3.0一起使用.
一切似乎工作得很好,除了我在本地AAR文件中的.so本机库文件没有打包到最终的APK.lib里面没有文件夹.
我的项目已经定义了两个风味维度,我没有看到任何关于它的错误或警告,所以我认为这不是问题.
Android Gradle插件:
classpath 'com.android.tools.build:gradle:3.0.0-alpha4'
Run Code Online (Sandbox Code Playgroud)
Gradle版本是4.0.
使用New Module...Android Studio中的选项添加本地AAR ,它始终有效.
这是build.gradle生成的:
configurations.maybeCreate("default")
artifacts.add("default", file('FILENAME.aar'))
Run Code Online (Sandbox Code Playgroud)
在应用程序中,build.gradle我像往常一样声明它:
implementation project(':NAME_OF_THE_MODULE')
Run Code Online (Sandbox Code Playgroud)
我错过了一个突破性的变化吗?以下已知问题与我的问题有关吗?
While using this plugin with Android Studio, dependencies on local AAR files are not yet supported.
更新:旧flatDir技巧仍然可以正常工作:
flatDir {
dirs 'libs'
}
Run Code Online (Sandbox Code Playgroud)
然后将AA复制到该文件夹(即app/libs)中,并以这种方式将其声明为依赖项:
implementation(name: 'libvlc', ext: 'aar')
Run Code Online (Sandbox Code Playgroud) 我想用动画替换片段,但每次都必须是动态的,即它将从我点击屏幕的点开始,但fragmentTransaction.setCustomAnimations方法使用anim文件夹中定义的预定义动画,如下所示:
fragmentTransaction.setCustomAnimations(R.anim.bounce, R.anim.bounce);
Run Code Online (Sandbox Code Playgroud)
我创建ScaleAnimation了满足我需要的对象:
ScaleAnimation animation = new ScaleAnimation(fromX,ToX,fromY,toY,pivitX,pivotY);
animation.setDuration(500);
Run Code Online (Sandbox Code Playgroud)
fragmentTransaction.setCustomAnimations方法不接受scaleAnimation它只接受int.那么如何在替换片段时获得动态动画.
我目前在尝试使用适用于 Android 的 VLC 播放网络流时遇到问题。
我基本上遵循了这个指南,https://wiki.videolan.org/AndroidCompile/,克隆了 repo 并构建了:一切正常,我可以运行我的应用程序并播放视频(本地或来自网络)。
然后我libvlc AAR从头开始创建了一个新的 Android 项目:我可以播放本地视频,但是当我传入一个 URL 时,流没有打开。
相关代码:
// Create LibVLC
ArrayList<String> options = new ArrayList<String>();
options.add("--aout=opensles");
options.add("--audio-time-stretch"); // time stretching
options.add("-vvv"); // verbosity
libvlc = new LibVLC(options);
holder.setKeepScreenOn(true);
// Create media player
mMediaPlayer = new MediaPlayer(libvlc);
mMediaPlayer.setEventListener(mPlayerListener);
// Set up video output
final IVLCVout vout = mMediaPlayer.getVLCVout();
vout.setVideoView(mSurface);
vout.addCallback(this);
vout.attachViews();
Media m = new Media(libvlc, Uri.parse(media));
mMediaPlayer.setMedia(m);
mMediaPlayer.play();
Run Code Online (Sandbox Code Playgroud)
URL 中的mediaa在哪里String。
我的配置(即模块)中是否缺少某些东西?
这是我得到的日志:
D/LibVLCAndroidSample: Playing …Run Code Online (Sandbox Code Playgroud) 我在 Android TV 项目中面临子类化问题VerticalGridFragment:一切正常,但如果一行中的项目少于最大列数,则项目将从中心开始水平对齐。
奇怪的是,只有当元素总数小于最大列数时才会发生这种情况。例如,假设这个数字是 6,如果我有 1 个项目,它将被放置在该行的中心。相反,如果我有 14 个项目,则第三行的 2 个项目将从左侧开始放置。
有没有办法将一行中的项目与left或对齐start?难道我做错了什么?
我已经尝试过这种方式,但没有任何反应,项目从中心开始对齐。
<style name="AppTheme.Widget.Leanback.GridItems.VerticalGridView"
parent="Widget.Leanback.GridItems.VerticalGridView">
<item name="android:gravity">left|start</item>
</style>
Run Code Online (Sandbox Code Playgroud)
然后在我的主题中像这样设置它,该主题扩展自Theme.Leanback:
<item name="itemsVerticalGridStyle">@style/AppTheme.Widget.Leanback.GridItems.VerticalGridView</item>
Run Code Online (Sandbox Code Playgroud) 我正在开发一个 Android TV 应用程序,但我对 渲染的标准阴影不太满意VerticalGridFragment,我想让它更小、更暗一些。
我搜索了代码,但没有找到任何完整的工作解决方案。在我的VerticalGridPresenter子类中,我可以重写的唯一方法是createShadowOverlayOptions但我无法获得我想要的结果。
我想出的唯一解决方法是定义以下维度,以便覆盖支持库中声明的维度:
<dimen name="lb_material_shadow_details_z">3dp</dimen>
<dimen name="lb_material_shadow_focused_z">4dp</dimen>
<dimen name="lb_material_shadow_normal_z">3dp</dimen>
Run Code Online (Sandbox Code Playgroud)
但这更多的是一种黑客行为,而不是一个正确的解决方案。
这是标准阴影:
这是我通过当前的 hack 得到的结果:
正如你所看到的,它更小,但我无法改变颜色。
是否有正确的方法来设置VerticalGridFragment和RowsFragment类的阴影颜色和尺寸?
我正在使用最新的 Leanback 版本:
compile 'com.android.support:leanback-v17:25.2.0'
Run Code Online (Sandbox Code Playgroud)
由于自定义 Android TV 播放器,我的minSdkVersion年龄是 17 岁,但从 21 岁开始就可以正常工作。
android android-layout android-support-library android-tv leanback
我注意到我的发布版本,我在eclipse中通过以下方式制作:
Android工具 - >导出已签名的应用程序包...
我的proguard-project.txt包含:
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}
Run Code Online (Sandbox Code Playgroud)
然而,如果我在设备上运行应用程序并使用CatLog查看日志,我会看到所有Log.d(),Log.v()消息都不应该存在.还有别的东西我应该设置吗?我花了很多时间在谷歌搜索,但没有关于该主题的明确指示.我找到的大多数事情都是有类似问题但没有解决方案的人.
我在使用Google提供的Google Fit运行示例应用时遇到问题.
我想通了,到目前为止,那resultCode我得到的onActivityResult是0我选择了后Account.
我现在使用的示例应用程序BasicRecordingApi可以在这里找到.但我也尝试过其他人.
我为该应用创建了一个API密钥,并且我已经启用了Google Fit API.
什么都没有帮助.
有任何想法吗?
android ×13
android-tv ×3
leanback ×3
gradle ×2
aar ×1
certificate ×1
cordova ×1
fragment ×1
google-fit ×1
ios ×1
java ×1
libvlc ×1
proguard ×1
swift ×1
vlc-android ×1