我在AndroidStudio 1.2.1.1中使用ProGuard和Gradle 1.2.3.
My Gradle的发布版本配置如下:
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
shrinkResources true
Run Code Online (Sandbox Code Playgroud)
我希望类的私有字段被混淆.
这是我的proguard配置文件(经过多次尝试)截至目前:
-allowaccessmodification
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
-repackageclasses ''
-verbose
[...]
Run Code Online (Sandbox Code Playgroud)
但是在使用androddAndroidGuard 反编译后,我最终得到:
private com.google.android.gms.common.api.GoogleApiClient googleApiClient;
Run Code Online (Sandbox Code Playgroud)
我知道这种混淆的使用是有限的,但我想googleApiClient由ProGuard重命名.怎么办?
这是refcard.
有没有办法做相反的事情-keepclassmembernames?
我正在使用带有ActivityTestRule的Espresso 2.1,我正在寻找一种方法来设置一些静态标志,然后onCreate()才会调用我的应用程序.
我有一些我不希望在仪器测试期间调用的初始化代码.
我正在尝试简化我的代码:我想存储键和值(所有字符串).
我实际上是用它Map<String, Object>来存储它.hat方式Object可以是value(String)或新节点(Map<String, Object>).
我怎么能简化这段代码?递归函数会很好.
try {
JsonParser jsonParser = new JsonFactory().createJsonParser(content);
jsonParser.nextToken();
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
jsonParser.nextToken();
if (jsonParser.getCurrentToken() == JsonToken.START_OBJECT) {
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
String key = jsonParser.getCurrentName();
jsonParser.nextToken();
if (jsonParser.getCurrentToken() == JsonToken.START_OBJECT) {
mData.put(key, new HashMap<String, Object>());
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
String subkey = jsonParser.getCurrentName();
jsonParser.nextToken();
if (jsonParser.getCurrentToken() == JsonToken.START_OBJECT) {
Map<String, Object> subdata = (Map<String, Object>) mData.get(key);
subdata.put(subkey, new HashMap<String, Object>());
while (jsonParser.nextToken() != …Run Code Online (Sandbox Code Playgroud) 我需要在android中使用背景颜色变化做圆形角落按钮.
我怎么能这样做?
示例链接/代码非常感谢.
最近我将我的android项目从Eclipse迁移到了Android Studio.目前我的项目具有以下Gradle脚本结构:
我的主gradle构建文件的内容:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
mavenCentral()
maven { url 'http://download.crashlytics.com/maven' }
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.1'
classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
mavenCentral()
}
}
Run Code Online (Sandbox Code Playgroud)
我想确保整个项目都有崩解剂.我最初尝试添加
apply plugin: 'crashlytics'
Run Code Online (Sandbox Code Playgroud)
到主项目gradle文件,但我遇到以下错误:
错误:(2,0)Crashlytics应用于没有Android插件的项目.请确保在适合您项目的Android插件之后应用Crashlytics插件.
然后我移动apply plugin: …
我使用ps ef并ps rf不少.
以下是一个示例输出ps rf:
PID TTY STAT TIME COMMAND
3476 pts/0 S 0:00 su ...
3477 pts/0 S 0:02 \_ bash
8062 pts/0 T 1:16 \_ emacs -nw ...
15733 pts/0 R+ 0:00 \_ ps xf
15237 ? S 0:00 uwsgi ...
15293 ? S 0:00 \_ uwsgi ...
15294 ? S 0:00 \_ uwsgi ...
Run Code Online (Sandbox Code Playgroud)
而今天我只需要在脚本中检索uwsgi 的主进程(所以我只需要15237但不需要15293也不需要15294).
截至今天,我尝试了一些ps rf | grep -v ' \\_ '......但我想要一个更清洁的方式.
我也来自unix.com论坛的另一个解决方案: …
我有一个应用程序,其中一些片段只包含ListViews.我的一些低端设备用户会遇到一种现象,即片段根本无法显示数据.当他们进入片段时,我会显示一个ProgressBar,而这个ProgressBar似乎永远旋转.
所以我买了一台低端设备,面临同样的问题.我通过网络请求获取ListView的数据到我的后端API,但答案永远不会返回.我到目前为止唯一的警告是
W/ResourceType? Too many attribute references, stopped at: 0x01010034
Run Code Online (Sandbox Code Playgroud)
我在网上找不到这个错误,但似乎这个警告记录在这里https://github.com/SciAps/android-frameworks-base/blob/c693209edc3696884c1fcd59790dda0b9811d017/libs/utils/ResourceTypes.cpp#L1573 ,但我不明白Android代码在那里做什么.
任何人都知道这里发生了什么,问题是什么以及我如何解决这个问题?
顺便说一句,我使用RoboSpice和Retrofit来做网络请求.在此警告之后停止负责获取数据的后台服务,这就是我永远不会收回数据的原因.
编辑据我所知,没有看到数据与警告无关.无论如何,这个警告意味着什么,我该如何预防呢?
我做了一个无意中命名为"0.2"的git分支,它也是一个标签.
所以我试图从原点删除它:
$ git branch -rD origin/0.2
Deleted remote branch origin/0.2
Run Code Online (Sandbox Code Playgroud)
但是之后:
$ git fetch origin
* [new branch] 0.2 -> origin/0.2
Run Code Online (Sandbox Code Playgroud)
这是我推动时的错误:
$ git push --force origin :0.2
error: dst refspec 0.2 matches more than one.
Run Code Online (Sandbox Code Playgroud)
所以我删除了远程标签:
$ git tag -d 0.2
$ git push origin :refs/tags/0.2
Run Code Online (Sandbox Code Playgroud)
仍然没有去:
$ git branch -rD origin/0.2
* [new branch] 0.2 -> origin/0.2
Run Code Online (Sandbox Code Playgroud)
我在Android应用上加载Camera对象时出现了Camera"Error 5001"错误.
E/Camera: Error 5001
Run Code Online (Sandbox Code Playgroud)
我甚至无法使用"主页"按钮退出应用程序,它会冻结90秒.我找不到有关该错误的任何文档.
5001是什么意思?
90秒后,logcat记录:
W/CameraBase: Camera service died!
Run Code Online (Sandbox Code Playgroud)
现在我无法正常运行应用程序.屏幕为绿色,无法加载相机.
重新启动修复了相机问题,但我想知道:
该设备是一款带有Android 4.4.2的Moto X.
感谢您提供任何信息.
编辑
public final class BarcodePreview extends SurfaceView implements SurfaceHolder.Callback {
private Activity mActivity;
private SurfaceHolder mSurfaceHolder;
private Camera mCamera;
private PreviewCallback mPreviewCallback;
private AutoFocusCallback mAutoFocusCallback;
public BarcodePreview(final Activity activity, final Camera camera, final PreviewCallback previewCallback, final AutoFocusCallback autoFocusCallback) throws Exception {
super(activity);
mActivity = activity;
mCamera = camera;
mPreviewCallback = previewCallback;
mAutoFocusCallback = autoFocusCallback;
mSurfaceHolder = getHolder();
if (mSurfaceHolder == …Run Code Online (Sandbox Code Playgroud) 使用DrawerLayout具有NavigationView和FrameLayout我想改用Fragment秒.这很好用.但是,如果我切换太快,那么Fragments重叠......
这就像executePendingTransactions()不起作用.
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/toolbar" />
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigationView"
android:layout_width="@240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@color/transparent"
android:dividerHeight="0dp"
app:menu="@menu/navigationdrawer" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
如果我Fragment快速切换s(太快)(手动或通过我的Nexus 5延迟750ms的代码),我得到两个Fragments重叠,第二个Fragment启用触摸但是第一个Fragment在顶部...
第一个Fragment包含an ImageView和TextViews.第二个Fragment包含a TabLayout和a ViewPager(如果我的问题可以解决这个问题).是的我正在使用AppCompat 22.2.0和Design 22.2.0库.
如果我为两者设置背景颜色,那么我只能看到第一个颜色Fragment,它永远不会改变.
我试过popBackStackImmediate(),executePendingTransactions(),remove(fragment), …
android android-fragments fragmentmanager android-design-library
android ×7
java ×2
android-xml ×1
bash ×1
command-line ×1
crashlytics ×1
git ×1
git-branch ×1
git-remote ×1
git-tag ×1
gradle ×1
jackson ×1
json ×1
linux ×1
obfuscation ×1
parsing ×1
plugins ×1
proguard ×1
ps ×1
shell ×1
unit-testing ×1