我有一个使用外部引用库的应用程序(也就是说,库的目录与应用程序处于同一级别 - 它不会复制到应用程序的文件夹中).该库由应用程序引用,库和应用程序都包含proguard文件.在构建应用程序之前,一切正常.当我构建应用程序时,找不到引用库中定义的类的所有内容 - 我在所有库类导入中找到'找不到符号类...)错误.正如我发现的那样,这是因为在重建应用程序时,proguard会混淆所有类和变量,因此应用程序无法引用它们.我已将以下内容添加到build.gradle文件中,
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
}
debug {
minifyEnabled false
}
}
Run Code Online (Sandbox Code Playgroud)
但似乎在构建应用程序时,不考虑上述内容(或者在发布模式下完成构建).如果我将以上内容更改为以下内容(即,在发布模式下禁用proguard),
buildTypes {
release {
**minifyEnabled false**
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
}
debug {
minifyEnabled false
}
}
Run Code Online (Sandbox Code Playgroud)
申请编译好.
这个问题有方法解决吗?我是否只能在创建签名应用程序时启用proguard?
这是库proguard文件:
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-optimizations !method/marking/static
-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 …Run Code Online (Sandbox Code Playgroud) 我有一个针对Android 9的应用程序,我在Google Play的发布前报告中注意到一个名为Android兼容性的新部分。此新部分列出了与使用不受支持的API有关的警告或错误。以下是问题之一,并被列为灰名单API。有人可以在这种情况下解释不支持的API吗?用法似乎来自Android支持库,而不是我的代码。
StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V
at android.os.StrictMode.lambda$static$1(StrictMode.java:428)
at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2)
at java.lang.Class.getDeclaredMethodInternal(Native Method)
at java.lang.Class.getPublicMethodRecursive(Class.java:2075)
at java.lang.Class.getMethod(Class.java:2063)
at java.lang.Class.getMethod(Class.java:1690)
at android.support.v7.widget.ViewUtils.makeOptionalFitsSystemWindows(ViewUtils.java:84)
at android.support.v7.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:685)
at android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:518)
at android.support.v7.app.AppCompatDelegateImpl.onPostCreate(AppCompatDelegateImpl.java:299)
at android.support.v7.app.AppCompatActivity.onPostCreate(AppCompatActivity.java:98)
at android.app.Instrumentation.callActivityOnPostCreate(Instrumentation.java:1342)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3002)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6718)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Run Code Online (Sandbox Code Playgroud) 我有一个支持葡萄牙语的应用程序,包括葡萄牙和巴西地区.我创建了一个values-pt(包含葡萄牙语翻译)和values-pt-rBR(包含巴西语翻译).然后我尝试将应用程序语言更改为Potuguese(Portugal),并且应用程序语言正确更改.当我把它设置为葡萄牙语(巴西)时,它没有.我尝试将手机默认语言更改为葡萄牙语(巴西语),但仍然无效.它适用于葡萄牙语(葡萄牙)两种情况(编程和系统).有谁知道问题是什么?以编程方式更改应用程序的语言环境的代码如下:
Locale locale = new Locale(strLocale);
Locale.setDefault(locale);
config.locale = locale;
context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
Run Code Online (Sandbox Code Playgroud)
对于葡萄牙语和巴西语,strLocale分别设置为"pt"或"pt_BR".
我有一个android xml布局,main.xml.我想在运行时向这个布局添加控件(我想添加一系列包含按钮控件的附加线性布局).我可以这样做,如果是的话,怎么样?
谢谢
我最近在Market上发布了一个应用程序,直到现在我收到了7个错误,如下所示:
java.lang.IllegalArgumentException:错误的状态类,期望View State但是收到了类android.widget.ProgressBar $ SavedState.当两个不同类型的视图在同一层次结构中具有相同的id时,通常会发生这种情况.该视图的id是id/0x2.确保其他视图不使用相同的ID.
有人能告诉我如何调试问题吗?Viewid为0x2是什么- 有没有办法找到答案?
我最近检查了我在运行棒棒糖和从右到左的语言环境(希伯来语)的设备上开发的应用程序的小部件.问题是Android 5(棒棒糖)自动镜像小部件上的所有内容(甚至是图像),因此左侧调整的文本或图像将被正确调整.这打破了小部件设计.有没有办法告诉Android不要为小部件执行此操作?是否有可以防止这种情况发生的布局设置?
我有一个带有小部件的Android应用程序,它使用融合的位置提供程序API来跟踪用户的位置.该窗口小部件在大多数情况下都能正常工作,但有时,用户会报告窗口小部件在很远的地方报告错误的位置.
我已经确认此问题是由错误的网络连接(无线或单元)引起的,因为如果用户从其他位置连接或使用不同的方法(例如wifi到单元),则会正确检测到该位置.
但是,在所有情况下,用户都会报告Google地图显示正确的位置,即使我的应用程序显示错误的位置也是如此.有没有办法防止显示错误的位置,例如过滤掉错误的位置?谷歌是如何做到的?
我正在使用的代码来自https://developer.android.com/training/location/receive-location-updates.html.
谢谢
我有一个小部件,显示当前时间和一些其他信息,因此它必须每分钟更新一次.我正在使用每分钟触发的AlarmManager并调用更新小部件的IntentService.此解决方案在Oreo之前的Android版本中运行良好.在Oreo上,这个解决方案不起作用 - 看起来AlarmManager没有触发.我已经读过现在有一个TextClock控件可以自动将文本更新为当前时间,但不幸的是,这不是一个解决方案,因为我需要在窗口小部件上绘制其他非文本信息.
警报设置如下:
if (android.os.Build.VERSION.SDK_INT >= 19) {
alarmManager.setExact(AlarmManager.RTC, timeInMillis(), intent);
} else {
alarmManager.setRepeating(AlarmManager.RTC, timeInMillis(), 1000 * 60, intent);
}
Run Code Online (Sandbox Code Playgroud)
请注意,每次在Android 19+上触发警报时都会重新安排警报,因为它不是重复警报.
是否有替代解决方案可以在Android O及更高版本中使用?
使用Android Studio在设备或模拟器上运行或调试应用程序时遇到以下问题。该应用程序已安装,但未在设备(或仿真器)上启动。在“运行”窗口中,可以看到以下内容:
在设备上启动应用。等待过程上线...
一段时间后,我看到以下内容:超时,等待进程出现在“设备”上...
我已附上显示问题的屏幕截图。
该问题是最近开始的。我正在使用最新版本的Android Studio(3.5.1)和运行Android 10的Google Pixel设备,但是问题发生在模拟器和其他运行Android早期版本的设备上。该问题也发生在两台不同的计算机上,它们具有不同的Android应用程序和设备-共同因素是Android Studio。最后,我将Android Studio更新到3.5后,问题似乎已经开始。
有谁知道如何解决这个问题?我尝试了很多事情(清除缓存,重建,失效和重启等),但均未成功。
有任何想法吗?
我正在编写一个android活动,显示有关联系人的信息(联系人姓名,上次联系等)我试图显示使用ContactsContract.Contacts.TIMES_CONTACTED列联系联系人的次数,但我总是得到0值对于所有联系人.我正在使用三星galaxy S设备,我在互联网上的其他地方看到这是一些特定于某些设备(包括三星GS)的问题.有没有其他方法来获取此信息?
谢谢