Android遇到的一些问题

2018-04-19  本文已影响0人  夏_Leon

【AS构建】

进入setting-plugins,取消红色插件选择,重启,再重新选择刚才的红色插件。详见 https://stackoverflow.com/questions/17710739/problems-found-loading-plugins-in-android-studio

待编辑...
在terminal中输入命令 gradlew processDebugManifest --debug 打开了gradle的debug信息打印,才发现到了具体错误信息。

buildscript {
    ext.kotlin_version = '1.3.10'
    repositories {
        google()
        mavenCentral()
        maven { url 'https://maven.google.com' }
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://maven.google.com' }
        jcenter()
    }
}

相应的module中也尽量按这个去设置,包括适配版本这个也要和app的一致。
其他可能的原因:
1、不要用安全连接


搜狗截图20181125021621.png

2、需要FQ

【Git管理】

【界面UI相关】

android:lines="1"
android:maxEms="20"
android:ellipsize="end"

最外层的框架里添加 android:fitsSystemWindows="true"

在参数设置时,把背景重设就好 dialogWindow.setBackgroundDrawableResource(android.R.color.transparent);

bitmap.xml
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"     
    android:src="@drawable/icon_filter_pressed" 
    android:gravity="center">
</bitmap>

引用属性时用 app:item_count="2"
在布局文件头部引入 xmlns:app="http://schemas.android.com/apk/res-auto"
这里的两个app可以必须相同,或者替换为其他的,比如xyz,要一起替换。

查询AS是否下载了ConstraintLayout的支持。
Setting -> Android SDK -> SDK Tools 找到ConstraintLayout for Android等勾选下载

public class MyEditText extends android.support.v7.widget.AppCompatEditText {
  
    public MyEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);  
    }  
  
    public MyEditText(Context context, AttributeSet attrs) {  
        super(context, attrs);  
    }  
  
    public MyEditText(Context context) {  
        super(context);  
    }  
      
    @Override  
    protected void onSelectionChanged(int selStart, int selEnd) {  
        super.onSelectionChanged(selStart, selEnd);  
        //保证光标始终在最后面  
        if(selStart==selEnd){//防止不能多选  
            setSelection(getText().length());  
        }  
          
    }  
}  
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/arrow_right_white" />
</selector>

但是到了这一步还不一定能完成,因为在最新版本中需要手动开启支持矢量图,在你的Application里添加这句:

    static {
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
    }
  style="?android:attr/borderlessButtonStyle"

或者干脆用TextView。

在项目中使用了butterknife,也就是说butterknife中没有转Androidx;
问题解决很简单:升级butterknife到最新的版本(新版本已经兼容Androidx)就可以了。
此时我更新的版本是(butterknife:9.0.0-rc2)

【开发中】

    if(isFullDisplay()) {
            Log.d(TAG, "isFull");
            requestWindowFeature(Window.FEATURE_NO_TITLE); //设置无标题
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//取消状态栏
            //上两行代码无效时,手动隐藏标题栏
            if(getSupportActionBar() != null) {
                getSupportActionBar().hide();
            }
        }
        setContentView(getViewId());

1.你的Activity被finish()掉了,看看你的Activity有没有在哪里finish()掉。
2.startActivityForResult(intent, -1)函数,第二个参数小于0,应该要大于0
3.启动模式为android:launchMode=”singleTask”和android:launchMode=”singleInstance”都会导致无效,修改为默认的android:launchMode=”standard”
4.TabHost的子Activity中startActivityForResult调用其他Activity时候遭遇到onActivityResult方法不响应的问题...
5.Fragment里面调用startActivityForResult的时候...

添加结束后再执行:mFragmentManager.executePendingTransactions();

这里有一些解决方案,应该是一些包重复导致的混淆错误:app:transformClassesAndResourcesWithProguardForRelease
然而我遇到的情况是,混淆规则被注释掉了未加入,注意在release{}中加入“proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'”

注意是混淆问题,引入第三方库时没有写响应的混淆规则。需要修改proguard-rules.pro(app),常用的有:

#定位
 -keep class com.amap.api.location.**{*;}
 -keep class com.amap.api.fence.**{*;}
 -keep class com.autonavi.aps.amapapi.model.**{*;}

#3D地图 V5.0.0之后:
 -keep class com.amap.api.maps.**{*;}
 -keep class com.autonavi.**{*;}
 -keep class com.amap.api.trace.**{*;}

#greendao
-keep class org.greenrobot.greendao.**{*;}
-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
    public static java.lang.String TABLENAME;
}
-keep class **$Properties

#eventbus
-keepattributes *Annotation*
-keepclassmembers class ** {
    @org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
    <init>(java.lang.Throwable);
}
java.lang.RuntimeException: Manifest merger failed with multiple errors, see logs

然而什么地方see logs,却不得而知,这里要打开报错日志来看详细错误:
进入Terminal栏
Windonws输入命令行

gradlew processDebugManifest --stacktrace

Mac输入命令行

./gradlew processDebugManifest --stacktrace

即可查看详细错误,有时候Mac会遇到 Permission denied
那在输入上述命令行前,先获取权限,输入

chmod +x gradlew

再按上述操作即可。

上一篇 下一篇

猜你喜欢

热点阅读