• (原创)开发使用Android studio所遇到的一些问题总结


    1.Android studio下载链接地址(无需翻墙):包括先行版和正式版(推荐使用正式版bug少)

       http://www.androiddevtools.cn/

    2.第一次安装避免成功先不要急着打开应用,先取消打开。到安装文件夹下/bin/idea.properties文件打开在最后面加入

      disable.android.first.run=true  并后面多一行回车就可以。再又一次打开AS就可以避免第一次去联网请求更新



    3.导入eclipse项目:比如本人须要导入D:workspaceeclipse est一个test项目方式


    选择须要导入的项目:(要是有依赖jar也是直接选中导入主项目就可以)。点击OK进入下一步


    选择存放的project项目文件夹位置:


    下一步:默认就可以


    finish就可以完毕导入,是不是so easy!

    导入成功后:须要类似eclipse视图方式须要切换


    选择project就可以


    看到手机图标么有,这就说明你项目能够正常执行了



    以下解说下关于gradle编译相关出错地方和怎么选择你自己本地的gradle编译版本号

    首先:普通情况下都要将gradle设置为离线不去更新。这可能涉及到须要翻墙去寻找就会导致项目卡住在那里一直编译;改动例如以下设置

    1.点击扳手图标---setting


    搜索gradle按例如以下设置


    怎样选择本地gradle:上面图的第一个红圈选项既是选择本地gradle点击后面的...弹出框选择AS安装文件夹下/gradle对应版本号就可以如图



    2.关于导入别人项目导致本地的gradle与其不一致无法编译通过(也就是编译报错问题)解决

    首先:须要改动编译gradle下的压缩包路径。查看本地版本号方式:D:Programandroid-studiogradle



    3.关于项目总体gradle编译工具版本号改动,查看方式:D:Programandroid-studiogradlem2repositorycomandroid oolsuildgradle


    相应项目中的版本号:注意是最外层gradle


    4.对于单个项目或者jar依赖包的节点下的各个gradle创建工具版本,查看方式:


    基本改动完这些项目都是能够正常执行了!!


    下面为开发过程的其它AS报错的整理:

    1.出现非法字符:将全部报错的文件找到该文件将其格式设置为UTF-8无BOM
    如:
    D:workspacestudiojobDadaDriverdadaDriversrcmainjavacom ewdadadriverutilsChannelUtil.java
    Error:(1, 1) 错误: 非法字符: 65279
    Error:(1, 10) 错误: 须要class, interface或enum

    2.Project Sync
             The project 'DadaDriver' is not a Gradle-based project
             More Information about migrating to Gradle
      gradle源文件缺失问题;又一次importproject就可以

    3.AssertionError: platform-tools doesn't match platform-tools-preview
    编译问题;刷新就可以

    4.最低版本号报错:更改更高版本号号 
         Error:(5, 5) uses-sdk:minSdkVersion 5 cannot be smaller than version 8 declared in library 
    D:workspacestudiojobDadaDriverslidingMenu_libraryuildintermediatesexploded-aarDadaDriverandroidSupportLibunspecifiedAndroidManifest.xml

    5.执行项目出现:按提示加入对应的代码到build.gradle的Android下就可以
    Error:duplicate files during packaging of APK D:workspacestudiojobDadaDriverdadaDriveruildoutputsapkdadaDriver-debug-unaligned.apk
    Path in archive: META-INF/LICENSE.txt
    Origin 1: D:workspacestudiojobDadaDriverdadaDriverlibshttpmime-4.2.4.jar
    Origin 2: D:workspacestudiojobDadaDriverdadaDriverlibsfastjson.jar
    You can ignore those files in your build.gradle:
    android {
      packagingOptions {
      exclude 'META-INF/LICENSE.txt'
                exclude 'META-INF/NOTICE.txt'
      }
    }


    6.模拟器出现空白。无法正常显示。原因:没有相应能够显示布局版本号。调低就可以org.jetbrains.android.uipreview.RenderingException:Failed to load the LayoutLib: com/android/layoutlib/bridge/Bridge : Unsupportedmajor.minor version 52.0

    at org.jetbrains.android.uipreview.LayoutLibraryLoader.load(LayoutLibraryLoader.java:90)

    atorg.jetbrains.android.sdk.AndroidTargetData.getLayoutLibrary(AndroidTargetData.java:180)

    atcom.android.tools.idea.rendering.RenderService.createTask(RenderService.java:164)



    以上是本人临时遇到整理的问题。兴许有发现其它还会加入。


    7. Apk的签名混淆打包

    7-1. 创建签名文件keystore



    7-2. 签名apk




    能够代码直接在build.gradle里面编写

    android {
        signingConfigs {// 签名
            config {
                keyAlias 'test'
                keyPassword '123456'
                storeFile file('H:/zhou/keystore.jks')
                storePassword '123456'
            }
        }
        compileSdkVersion 24
        buildToolsVersion "24.0.1"
        defaultConfig {
            applicationId "com.vsoontech.p2p.sample"
            minSdkVersion 15
            targetSdkVersion 24
            versionCode 1
            versionName "1.0"
        }
        //运行lint检查,有不论什么的错误或者警告提示。都会终止构建
        lintOptions {
            abortOnError false
        }
        buildTypes {
            debug {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
            release {
                minifyEnabled true // 混淆
                zipAlignEnabled true
                shrinkResources true
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                signingConfig signingConfigs.config // 使用签名
            }
        }
        productFlavors {
        }
    }
    

    7-2. 混淆

    仅仅要是proguard-rules.pro文件配置


    # 指定代码的压缩级别
    -optimizationpasses 5
    
    # 包名不混合大写和小写
    -dontusemixedcaseclassnames
    
    # 不去忽略非公共的库类
    -dontskipnonpubliclibraryclasses
    
    # 优化  不优化输入的类文件
    -dontoptimize
    
    # 预校验
    -dontpreverify
    
    # 混淆时是否记录日志
    -verbose
    
    # 混淆时所採用的算法
    -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
    
    # 保护注解
    -keepattributes *Annotation*
    
    # 保持哪些类不被混淆
    -keep class com.vsoontech.p2p.** {*;}
    -keep class com.linkin.base.** {*;}
    
    # 假设有引用v4包能够加入以下这行
    -keep public class * extends android.support.v4.app.Fragment
    
    # 忽略警告
    -ignorewarning
    
    # 假设引用了v4或者v7包
    -dontwarn android.support.**
    
    # 保持 native 方法不被混淆
    -keepclasseswithmembernames class * {
        native <methods>;
    }
    
    # 保持自己定义控件类不被混淆
    -keepclasseswithmembers class * {
        public <init>(android.content.Context, android.util.AttributeSet);
    }
    
    # 保持 Parcelable 不被混淆
    -keep class * implements android.os.Parcelable {
      public static final android.os.Parcelable$Creator *;
    }
    
    # 保持枚举 enum 类不被混淆
    -keepclassmembers enum * {
      public static **[] values();
      public static ** valueOf(java.lang.String);
    }
    


  • 相关阅读:
    51nod1179【思维】
    网络时间校准
    获取网络时间,减轻自己服务器的请求压力
    C# async/await异步编程深入理解
    C#中的异步编程--探索await与async关键字的奥妙之处,原来理解和使用异步编程可以这么简单
    "",string.Empty和null三者的区别
    三万字把SQL数据库的所有命令,函数,运算符讲得明明白白讲解,内容实在丰富
    C# await async Task
    C#异步编程 Task await的理解
    idea中更改下载源
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7294171.html
Copyright © 2020-2023  润新知