小编a.p*_*.p.的帖子

在多库项目中处理Android Studio proguard

我有一个使用外部引用库的应用程序(也就是说,库的目录与应用程序处于同一级别 - 它不会复制到应用程序的文件夹中).该库由应用程序引用,库和应用程序都包含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 proguard gradle

29
推荐指数
1
解决办法
1万
查看次数

如何修复Android兼容性警告

我有一个针对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)

android

14
推荐指数
1
解决办法
2317
查看次数

以编程方式将应用程序区域设置设置为pt_BR

我有一个支持葡萄牙语的应用程序,包括葡萄牙和巴西地区.我创建了一个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".

resources android locale

10
推荐指数
1
解决办法
2万
查看次数

如何在运行时向android xml视图添加按钮控件?

我有一个android xml布局,main.xml.我想在运行时向这个布局添加控件(我想添加一系列包含按钮控件的附加线性布局).我可以这样做,如果是的话,怎么样?

谢谢

layout android

8
推荐指数
1
解决办法
2万
查看次数

应用程序中的奇怪异常

我最近在Market上发布了一个应用程序,直到现在我收到了7个错误,如下所示:

java.lang.IllegalArgumentException:错误的状态类,期望View State但是收到了类android.widget.ProgressBar $ SavedState.当两个不同类型的视图在同一层次结构中具有相同的id时,通常会发生这种情况.该视图的id是id/0x2.确保其他视图不使用相同的ID.

有人能告诉我如何调试问题吗?Viewid为0x2是什么- 有没有办法找到答案?

android exception

8
推荐指数
1
解决办法
1522
查看次数

使用棒棒糖从右到左的语言环境自动布局镜像

我最近检查了我在运行棒棒糖和从右到左的语言环境(希伯来语)的设备上开发的应用程序的小部件.问题是Android 5(棒棒糖)自动镜像小部件上的所有内容(甚至是图像),因此左侧调整的文本或图像将被正确调整.这打破了小部件设计.有没有办法告诉Android不要为小部件执行此操作?是否有可以防止这种情况发生的布局设置?

android android-layout right-to-left android-5.0-lollipop

8
推荐指数
2
解决办法
5537
查看次数

防止网络提供商检测到错误的位置

我有一个带有小部件的Android应用程序,它使用融合的位置提供程序API来跟踪用户的位置.该窗口小部件在大多数情况下都能正常工作,但有时,用户会报告窗口小部件在很远的地方报告错误的位置.

我已经确认此问题是由错误的网络连接(无线或单元)引起的,因为如果用户从其他位置连接或使用不同的方法(例如wifi到单元),则会正确检测到该位置.

但是,在所有情况下,用户都会报告Google地图显示正确的位置,即使我的应用程序显示错误的位置也是如此.有没有办法防止显示错误的位置,例如过滤掉错误的位置?谷歌是如何做到的?

我正在使用的代码来自https://developer.android.com/training/location/receive-location-updates.html.

谢谢

android location fusedlocationproviderapi

5
推荐指数
0
解决办法
564
查看次数

在Android Oreo中每分钟更新一个小部件

我有一个小部件,显示当前时间和一些其他信息,因此它必须每分钟更新一次.我正在使用每分钟触发的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 widget

5
推荐指数
1
解决办法
661
查看次数

超时等待进程出现在设备上

使用Android Studio在设备或模拟器上运行或调试应用程序时遇到以下问题。该应用程序已安装,但未在设备(或仿真器)上启动。在“运行”窗口中,可以看到以下内容:

在设备上启动应用。等待过程上线...

一段时间后,我看到以下内容:超时,等待进程出现在“设备”上...

我已附上显示问题的屏幕截图。

在此处输入图片说明

该问题是最近开始的。我正在使用最新版本的Android Studio(3.5.1)和运行Android 10的Google Pixel设备,但是问题发生在模拟器和其他运行Android早期版本的设备上。该问题也发生在两台不同的计算机上,它们具有不同的Android应用程序和设备-共同因素是Android Studio。最后,我将Android Studio更新到3.5后,问题似乎已经开始。

有谁知道如何解决这个问题?我尝试了很多事情(清除缓存,重建,失效和重启等),但均未成功。

有任何想法吗?

android android-studio

5
推荐指数
4
解决办法
331
查看次数

android联系人数据中TIMES_CONTACTED值的问题

我正在编写一个android活动,显示有关联系人的信息(联系人姓名,上次联系等)我试图显示使用ContactsContract.Contacts.TIMES_CONTACTED列联系联系人的次数,但我总是得到0值对于所有联系人.我正在使用三星galaxy S设备,我在互联网上的其他地方看到这是一些特定于某些设备(包括三星GS)的问题.有没有其他方法来获取此信息?

谢谢

android contacts

3
推荐指数
1
解决办法
1268
查看次数