我在使用-dontobfuscate标志时收到错误"转换为Dalvik格式失败,错误1".否则我的应用程序导出正常 我不想混淆,因为我使用BugSense进行错误跟踪,如果你需要对堆栈跟踪进行去混淆,他们每月收费99美元.我仍然希望获得proguard的文件大小和优化优势.
如果我评论出--dontobfuscate,每件事都很有效.除了不可读的堆栈跟踪.
我的progaurd.cfg文件:
-dontobfuscate
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, …Run Code Online (Sandbox Code Playgroud) 我在市场上约有70%的设备遭遇此次崩溃.但是在测试过程中从未出现过.
public class MyApp extends Application{
public void onCreate() {
super.onCreate();
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
FirebaseAuth.getInstance().signInAnonymously();
}
}
Run Code Online (Sandbox Code Playgroud)
这是错误.
Fatal Exception: java.lang.RuntimeException: Unable to create application com.mycompany.myapp.activities.MyApp: java.lang.ClassCastException: com.google.android.gms.internal.hc cannot be cast to com.google.firebase.auth.c
com.google.android.gms.internal.hc cannot be cast to com.google.firebase.auth.c
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4927)
at android.app.ActivityThread.access$1500(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1412)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5633)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:896)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassCastException: com.google.android.gms.internal.hc cannot be cast to com.google.firebase.auth.c
at com.google.android.gms.internal.aa.a(Unknown Source)
at com.google.firebase.auth.FirebaseAuth.a(Unknown Source)
at com.google.firebase.auth.FirebaseAuth.d(Unknown Source)
at …Run Code Online (Sandbox Code Playgroud) 我在Google Play商店中有一款游戏可以选择将得分系统从积分改为$.显然,这是韩国赌博和非法的模拟.我得到了谷歌的官方谴责,他们将我的应用程序从韩国市场上撤下,并将我的成熟度评级提高到"成熟".虽然许多用户喜欢这种额外功能,但对于游戏来说完全没有必要.我想只在韩国禁用它.但是我需要一些可靠的方法.
我虽然关于使用语言环境,但用户可以改变它.
context.getResources().getConfiguration().locale.getDisplayCountry(Locale locale);
Run Code Online (Sandbox Code Playgroud)
我找到了这个:
android.telephony.TelephonyManager.getNetworkCountryIso()
Run Code Online (Sandbox Code Playgroud)
国家ISO是否会保证是正确的?我有一种不同的方法可以忽略吗?
此外,我的应用程序没有GPS权限.我认为仅针对此用例启用它是错误的.另外我想过多个APK.这将是最后的手段.我相信他们会被视为两个独立的应用程序.我不会得到我所有的好评和下载.
希望如果我开始工作,我可以让Google重新考虑他们的决定.
编辑:@Nobu Games提出了一个很好的观点.这确实需要适用于平板电脑.
这个结构是允许的吗?
MyProject/
| settings.gradle
+ app/
| build.gradle
+ libraries/
+ lib1/
| settings.gradle
| build.gradle
+ libraries/
+ sublib1/
| build.gradle
+ sublib2/
| build.gradle
+ lib2/
| build.gradle
Run Code Online (Sandbox Code Playgroud)
我有这个使用Ant但是使用Gradle我的项目找不到sublib1或sublib2.
当我运行gradle时,我收到此错误:
* What went wrong:
A problem occurred evaluating project ':libraries:lib1'.
> Project with path ':libraries:sublib1' could not be found in project ':libraries:lib1'.
Run Code Online (Sandbox Code Playgroud)
这是来自MyProject的settings.gradle:
include ':libraries:lib1'
include ':libraries:lib2'
Run Code Online (Sandbox Code Playgroud)
这是来自MyProject的build.gradle:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: …Run Code Online (Sandbox Code Playgroud) 我在许多Android三星手机上的动画速度有问题.我已经追踪了这个问题,垃圾收集太多了.但是,我的代码没有直接创建任何对象.
这是来自DDMS中的分配跟踪器的堆栈跟踪.
at com.samsung.android.multiwindow.MultiWindowStyle$1.createFromParcel(MultiWindowStyle.java:493)
at com.samsung.android.multiwindow.MultiWindowStyle$1.createFromParcel(MultiWindowStyle.java:491)
at com.samsung.android.multiwindow.IMultiWindowFacade$Stub$Proxy.getMultiWindowStyle(IMultiWindowFacade.java:499)
at com.samsung.android.multiwindow.MultiWindowFacade.getMultiWindowStyle(MultiWindowFacade.java:81)
at android.app.Activity.getMultiWindowStyle(Activity.java:4681)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1688)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1264)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6614)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:813)
at android.view.Choreographer.doCallbacks(Choreographer.java:613)
at android.view.Choreographer.doFrame(Choreographer.java:583)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:799)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5678)
Run Code Online (Sandbox Code Playgroud)
当用户触摸屏幕时,这会创建数千个Rect和Point对象.
有没有人知道一个解决方法?
我不是针对三星手机或使用他们的sdks或库.
我正在尝试使用 Jetpack Compose Material 3 制作 Cradled FAB。基于本网站文档中的图像:https ://m3.material.io/components/bottom-app-bar/implementation

然而,在代码中我找不到任何关于在哪里指定锚点位置或将 fab 设置为停靠的信息。示例代码是 XML,我使用的是 Compose。这是怎么做到的?我现在正在使用 Scafold 和 BottomAppBar,但它们似乎没有任何选项来停靠、支撑或锚定浮动操作按钮。
android android-layout material-design android-jetpack-compose
我有一个简单的纸牌游戏,用户可以在屏幕上拖放卡片.在一些2.2 Android手机上,如Droid和EVO,卡片绘图非常慢.这很奇怪,因为它发生在一些更快的手机上.然而,并不是我在Droid和Droid X上测试的所有手机和程序运行良好也在G1等较慢的手机上运行良好.在Motorolla发布了针对Droid的2.2更新后,我开始收到关于此的报告.
这是我提出的解决方案,但它确实降低了我的图形质量.渐变看起来很可怕.
我换了这个
Bitmap.createBitmap(newBmp.getWidth(), newBmp.getHeight(), Bitmap.Config.ARGB_8888);
Run Code Online (Sandbox Code Playgroud)
对此
Bitmap.createBitmap(newBmp.getWidth(), newBmp.getHeight(), Bitmap.Config.ARGB_4444);
Run Code Online (Sandbox Code Playgroud)
问题消失但看起来很痛苦.我需要保留alpha通道,所以我不能使用RGB_565.有没有办法保持我的高质量图像,而不是让它运行得那么慢?
我希望这不是通用的,但我正在为Sony SmartWatch开发一个应用程序.什么时候我犯了一个错误,比如允许空指针异常.我无法让我的应用重启.就像它永远处于坠毁状态一样.为了使问题更严重,我也停止通过与该应用程序相关的Logcat接收消息.当我卸载并重新安装应用程序时,它未在手机上的SmartWatch应用程序中列出.喜欢它不会注册.由于此时我没有收到任何日志消息,因此很难解决问题.我唯一能做的就是卸载应用程序.重启我的手机.然后重新安装该应用程序.那时它恢复正常,我可以再次开始编写代码.这让我想到了我的问题.有没有更好的方法来重新注册控件?这会发生在最终用户身上吗?如果应用程序崩溃他们需要卸载,重新启动并安装以恢复?
一些细节(名称已被更改以保护无辜者):
我创建了一个广播接收器,并在我的主要节目中设置它来收听这些广播.
<receiver android:name=".MyExtensionReceiver" >
<intent-filter>
<!-- Receiver intents -->
<action android:name="com.sonyericsson.extras.liveware.aef.registration.EXTENSION_REGISTER_REQUEST" />
<action android:name="com.sonyericsson.extras.liveware.aef.registration.ACCESSORY_CONNECTION" />
<!-- Control intents -->
<action android:name="com.sonyericsson.extras.aef.control.START" />
<action android:name="com.sonyericsson.extras.aef.control.STOP" />
<action android:name="com.sonyericsson.extras.aef.control.PAUSE" />
<action android:name="com.sonyericsson.extras.aef.control.RESUME" />
<action android:name="com.sonyericsson.extras.aef.control.ERROR" />
<action android:name="com.sonyericsson.extras.aef.control.TOUCH_EVENT" />
<action android:name="com.sonyericsson.extras.aef.control.SWIPE_EVENT" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
MyExtensionReceiver的代码:
public class MyExtensionReceiver extends BroadcastReceiver {
public MyExtensionReceiver() {
super();
Log.d("mytag", "MyExtensionReceiver Loaded");
Dbg.setLogTag("mytag");
}
@Override
public void onReceive(Context context, Intent intent) {
Log.d("mytag", "onReceive: " + intent.getAction());
intent.setClass(context, MyExtensionReceiver.class);
context.startService(intent);
}
Run Code Online (Sandbox Code Playgroud)
}
即使我的应用程序崩溃,我仍应在调用onReceive时收到日志消息.就像EXTENSION_REGISTER_REQUEST广播永远不会被发送一样.我只是一直在卸载重新启动并重新安装.最终SmartConnect应用程序找到了应用程序.
我已经设置了 App Check,几乎没有出现任何问题,并且它适用于我的应用程序的生产版本。但是,对于通过 Firebase 应用程序分发分发的应用程序的内部测试版本的所有 Firebase 请求,我都被拒绝。我已将 AAB 的 SHA-256 测试证书从“应用程序分发”页面复制到“应用程序检查”的“播放完整性”部分。我们的测试用户正在通过 Firebase App Distribution 应用中的链接从 Play 商店下载内部测试版本。我还在我的个人手机上安装了内部测试版本,但出现了权限被拒绝的错误。发布版本对每个人(包括测试人员)都运行良好,但内部测试版本则不然。此外,我在 Play 商店控制台上查看了内部测试版本的 SHA-256 密钥。它与应用程序分发密钥完全相同。发布版本和测试版本是相同的,一旦测试完成,测试版本就会升级为测试版本。然后将 beta 升级到生产环境。同样,Beta 版和 Production 都运行良好。关于为什么测试密钥不起作用有什么想法吗?
android firebase firebase-app-check google-play-integrity-api
我发现在SurfaceView中更改像素格式会对帧速率产生很大影响.但是我似乎找不到基于每个设备选择最佳格式的方法.
例:
@Override
public void surfaceCreated(final SurfaceHolder holder) {
//This line seems to fix speed issue with his res devices
holder.setFormat(PixelFormat.RGBA_8888);
androidGame.setSurfaceHolder(holder);
}
Run Code Online (Sandbox Code Playgroud)
这使我的游戏在Galaxy Nexus(ICS 4.0)上运行得更快,但在摩托罗拉Xoom(3.2.1)上运行速度慢.
如果我改为PixelFormat.OPAQUE,情况就会逆转.Nexus很慢,而Xoom现在很快.所以我需要能够确定每台设备的最佳格式.我尝试过使用getWindow().getAttributes().format但这总是返回-1(OPAQUE).
android ×10
firebase ×2
animation ×1
bitmap ×1
dalvik ×1
google-play ×1
gradle ×1
iso ×1
java ×1
localization ×1
obfuscation ×1
performance ×1
proguard ×1
sony ×1
surfaceview ×1