小编Lae*_*tan的帖子

隐藏库源代码

我正在开发一个 android 库,我想隐藏它的代码。我正在使用其他库,对于其中一些库,当尝试使用 Android Studio 访问他们的代码时,您只能获得类的方法列表和“/ * 编译代码* /”。我正在使用 pro-guard,但我仍然可以访问我的库的源代码。即使修改了方法和成员名称,代码仍然是可读的,并且可以读取每个硬编码的字符串。

如何以与这些库相同的方式隐藏我的代码?

security android android-proguard

7
推荐指数
1
解决办法
4286
查看次数

半径在 SeekBar 的拇指上必须 > 0

我正在使用带有 Seekbar 的自定义拇指。拇指是一个白色圆圈,背后有一个使用渐变创建的阴影。它在大多数情况下按预期工作,但对于某些设备,我收到错误java.lang.IllegalArgumentException: radius must be > 0当布局加载时:

java.lang.IllegalArgumentException: radius must be > 0
                at android.graphics.RadialGradient.<init>(RadialGradient.java:53)
                at android.graphics.drawable.GradientDrawable.ensureValidRect(GradientDrawable.java:757)
                at android.graphics.drawable.GradientDrawable.draw(GradientDrawable.java:426)
                at android.graphics.drawable.LayerDrawable.draw(LayerDrawable.java:349)
                at android.widget.AbsSeekBar.onDraw(AbsSeekBar.java:337)
                at android.view.View.draw(View.java:14757)
                at android.view.View.getDisplayList(View.java:13617)
                at android.view.View.getDisplayList(View.java:13664)
                at android.view.View.draw(View.java:14459)
                at android.view.ViewGroup.drawChild(ViewGroup.java:3273)
                at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3091)
                at android.view.View.draw(View.java:14768)
                at android.view.View.getDisplayList(View.java:13617)
                at android.view.View.getDisplayList(View.java:13664)
                at android.view.View.draw(View.java:14459)
                at android.view.ViewGroup.drawChild(ViewGroup.java:3273)
                at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3091)
                at android.view.View.getDisplayList(View.java:13609)
                at android.view.View.getDisplayList(View.java:13664)
                at android.view.View.draw(View.java:14459)
                [...]
Run Code Online (Sandbox Code Playgroud)

这似乎只发生在一些罕见的设备上,并且由于 flurry 无法报告它们是什么(身份不明),我认为它们是根深蒂固的。

在用于创建拇指的 xml 下方:

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:drawable="@drawable/lockscreen_thumb_shadow"/>
 <item android:drawable="@drawable/lockscreen_thumb_round"
    android:bottom="10dp"
    android:top="10dp"
    android:left="10dp"
    android:right="10dp"/>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

lockcreen_thumb_shadow :

            <?xml …
Run Code Online (Sandbox Code Playgroud)

android gradient

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

textwatcher上的IndexOutOfBoundsException

我正在使用textwatcher来检查用户输入的有效性.我的一些用户遇到了这个textwacher引起的崩溃.这是google给出的堆栈跟踪:

java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1

at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at android.widget.TextView.sendAfterTextChanged(TextView.java:7997)
at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:10043)
at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:970)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:497)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:435)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:30)
at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:679)
at android.view.inputmethod.BaseInputConnection.setComposingText(BaseInputConnection.java:437)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:333)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5584)
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:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

我的代码:

        Zipcode.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            } …
Run Code Online (Sandbox Code Playgroud)

android textwatcher

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