我有一些相当大的应用程序二进制大小的本机库.我调查了APK拆分,但维护和QAing多个APK不是我想做的事情.
因此,我想使用ndk.abiFilters Gradle属性在我的发布版本风格中排除未使用的体系结构.(调试版本我想单独留下,以便我可以在x86上运行HAXM加速仿真器).
我想在我的发布版本中只有armeabi-v7a和arm64-v8a,但我不确定是否值得担心我正在放弃的其他架构的市场份额.经过大量的回顾,我找不到任何ARMv6(armeabi),MIPS,x86或x86_64的市场份额参考.我的直觉告诉我,后三者几乎不存在,但我不确定ARMv6.
我在一个论坛上找到了这个链接,该论坛上有一系列使用各种架构的手机.某处有更可靠的东西吗?也许有%的用户类似于Android版本的仪表板?
如果我只是为armeabi-v7a和arm64-v8a(或者armeabi,armeabi-v7a和arm64-v8a)构建我的原生库,那么我还有什么别的想念?
我在生产应用程序中看到很多异常,因为它们来自Android 6用户的指纹,我无法在我的任何本地三星设备上重现.堆栈跟踪是:
Message: SecurityException: Permission Denial: getCurrentUser() from pid=24365, uid=10229 requires android.permission.INTERACT_ACROSS_USERS
android.os.Parcel.readException in Parcel.java::1620
android.os.Parcel.readException in Parcel.java::1573
android.hardware.fingerprint.IFingerprintService$Stub$Proxy.hasEnrolledFingerprints in IFingerprintService.java::503
android.hardware.fingerprint.FingerprintManager.hasEnrolledFingerprints in FingerprintManager.java::762
android.support.v4.hardware.fingerprint.FingerprintManagerCompatApi23.a in SourceFile::39
android.support.v4.hardware.fingerprint.FingerprintManagerCompat$Api23FingerprintManagerCompatImpl.a in SourceFile::239
android.support.v4.hardware.fingerprint.FingerprintManagerCompat.a in SourceFile::66
Run Code Online (Sandbox Code Playgroud)
这只是使用FingerprintManagerCompat支持库中的标准类,并且检查在其他设备上正常工作.
我不想将此权限添加到我的应用程序 - 它似乎与指纹无关.
有人遇到过这样的事吗?
我的应用程序中有一个摄像头,我希望它能够以与手机摄像头相同的方式连续自动对焦.我发现模式FOCUS_MODE_CONTINUOUS_VIDEO和FOCUS_MODE_CONTINUOUS_PICTURE,但他们不会被一些HTC手机姜饼我测试上的支持.
我正在做的是确定是否可以使用这些模式:
Camera.Parameters parameters = mCamera.getParameters();
List<String> supportedFocusModes = parameters.getSupportedFocusModes();
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH &&
supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) {
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
}
else if (supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) {
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
}
else if (supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
// auto focus on request only
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
}
Run Code Online (Sandbox Code Playgroud)
在几种不同的姜饼HTC手机上运行我没有得到连续模式,但我得到"自动".这让我可以根据需要自动对焦(当我打电话时mCamera.autoFocus(null),如果用户移动相机,相机将不会重新聚焦.
我无法将对焦模式设置为相机不支持的任何内容,如果我这样做,则会显示空白.
我试过的一个解决方案是调用mCamera.autoFocus(null)计时器.这会使相机连续重新对焦,即使它已经对焦.
有没有办法在这些手机上实现持续的自动对焦体验?当我在这些手机上查看HTC相机应用时,它确实具有连续自动对焦 - 当您在相机周围移动时重新聚焦并且在图像聚焦后不会保持重新对焦.
我已将第三方自定义ListView库插入到我的Android Gradle项目中.我最初将项目添加为jcenter repo中的gradle库依赖项.但现在我分叉了GitHub项目,我正在对它进行更改.
原始项目不再维护,因此提交拉取请求不起作用,我真的需要自己的fork.
使用Gradle设置此依赖关系的好方法是什么?
我想把ListView库放在与我的项目相同的GitHub仓库下,但这看起来很乱,我确实想把我的fork作为一个单独的库.
我想到的另一件事是在同一级别检查它们,并在我的Gradle配置中使用".."从我的应用程序进入库.这意味着,如果我有一个合作者(我可能很快),他们要么需要调整配置以适应它们,要么像我一样检查事情.
或者我可以发布像mavenCentral或jcenter这样的回购,但我还在努力,所以听起来也不好.
我缺少一个更清洁的选择吗?
有没有关于三星的Marshmallow更新是否会使用谷歌的新指纹API或继续使用他们的自定义SDK或两者的信息?
我看到他们已经开始滚动更新测试版测试人员,但这些在我的国家/地区不可用,我找不到其他信息.
android samsung-mobile android-6.0-marshmallow android-fingerprint-api
我在Android上使用RxJava和Retrofit 2.0进行网络请求.
当我创建observable时,我将以下内容添加到它:
observable = observable
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
Run Code Online (Sandbox Code Playgroud)
然后,如果我添加一个:
observable = observable.doOnTerminate(new Action0() {
@Override
public void call() {
Log.d("OBS", "[" + Thread.currentThread().getName() + "] onTerminate");
}
});
Run Code Online (Sandbox Code Playgroud)
或类似的,doOnError并且doOnCompleted在IO线程上执行回调,同时doOnNext在主线程上执行.
但是,我真正想要的是所有回调都转到主线程,但执行应该保留在IO线程上.
是否有一个优雅的解决方案,而不必手动包装我的实现与块发布到主线程的东西?
我正在从支持库中尝试PercentRelativeLayout,文档只是要求我指定一个app:layout_widthPercent属性.但是,当我这样做时,Android Studio会给我一个红色警告,说layout_width未指定.
除了抑制警告之外,还有办法解决这个问题吗?
例如:
<android.support.percent.PercentRelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.TextInputLayout
android:id="@+id/expiry_month_wrapper"
app:layout_widthPercent="25%"
android:layout_height="wrap_content">
<EditText
android:id="@+id/expiry_month_editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLength="2"
android:hint="@string/month"
android:focusable="true"
android:inputType="number"/>
</android.support.design.widget.TextInputLayout>
<!-- more TextInputLayout fields -->
</android.support.percent.PercentRelativeLayout>
Run Code Online (Sandbox Code Playgroud)
TextInputLayout上给出的警告.
我们设置了CodePipeline,以进行构建,部署到QA ECS环境,然后进行手动批准步骤以部署到Prod。
但是,令人困惑的是,当有多个构建相互运行时。多个版本已按顺序部署到质量检查中,但是“批准”按钮似乎一次批准了一个版本,单击时不清楚要批准的版本。
我想做的是批准最新的版本,以防早期版本的问题由更高版本解决。做到这一点的最佳方法是什么?
我有一个功能可以在旧应用版本中弹出应用更新提示对话框(该版本通过 Firebase 远程配置控制)。
然而,事实证明我的很多(但不是大多数)客户使用 MDM 来锁定他们的手机,在这种情况下,最终用户无法直接更新应用程序。
我正在使用 intent.resolveActivity(packageManager) 的正常检测来检查是否可以在显示对话框之前启动 Play 商店活动。但是该检查通过了 - Play 商店在那里,但更新被阻止。
我想为这些最终用户禁用更新提示。
有没有办法检测 MDM?或者至少是一种检测应用程序更新已被阻止的方法?
当我运行快速启动示例时:https://github.com/googlesamples/android-credentials/
在运行Marshmallow的Nexus 6上,凭据已成功保存.
但是,在带有棒棒糖(5.1.1)的三星Note 5上,我得到:
11-25 14:45:27.581 11428-11428/com.google.example.credentialsbasic D/MainActivity: Save Failed:Status{statusCode=No eligible accounts on this device for the credentials API., resolution=null}
Run Code Online (Sandbox Code Playgroud)
据Google Smart Lock for Password默认启用,我在三星设置中找不到它的设置.这是否意味着三星手机不支持Smart Lock for Passwords?这是一个真正只适用于Nexuses的功能吗?
我在设备支持或我提供的错误消息方面找不到任何相关文档.
android ×9
android-ndk ×1
arm ×1
autofocus ×1
github ×1
gradle ×1
mdm ×1
retrofit ×1
rx-android ×1
rx-java ×1