Android Studio相关笔记

1.build.gradle配置

http://blog.csdn.net/zwx_lucky/article/details/52263395

2.ApplicationId(App/build.gradle)和packageName(AndroidManifest/package)的区别

总结来说,packageName影响的是代码中的包名路径,ApplicationId影响的是App的唯一标示,这样可以在保持代码不变的情况下,发布多个不同版本的应用(譬如free和pro)

http://blog.csdn.net/maosidiaoxian/article/details/41719357

3.在Project模式下可以显示所有的项目,但是在android模式下无法显示app

在setting.gradle里面直接添加include ':app',会报错,

Error: Configuration with name 'default' not found

通过Project Stucture界面将app的项目添加进去,报错说:app项目已经存在

....最终发现,手动添加的code-push的路径写错了

project(':react-native-code-push').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-code-push/android/app')  

4.一直引用的是React Native 0.19.1版本,然后某些库找不到类

https://github.com/marcshilling/react-native-image-picker/issues/311

一定要将android/build.gradle中的

url "$projectDir/../../node_modules/react-native/android"
改为
url "$rootDir/../node_modules/react-native/android"

 不知道为什么,但绝对是个大坑

5.添加jar包和so文件

直接在app/libs放入所有的jar和so文件

app/build.gradle里面的第一句,默认是自动生成的

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:23.4.0'
    testCompile 'junit:junit:4.12'
}

然后在app/build.gralde的android子节点添加

sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

6.INSTALL_FAILED_NO_MATCHING_ABIS

INSTALL_FAILED_NO_MATCHING_ABIS is when you are trying to install an app that has native libraries and it doesn't have a native library for your cpu architecture. For example if you compiled an app for armv7 and are trying to install it on an emulator that uses the Intel architecture instead it will not work.

该问题主要发生在模拟器调试的时候,因为引入的so文件没有模拟器cpu对应的版本

7.Duplicate files copied in APK META-INF/LICENSE.txt

dependencies {
    compile 'com.android.support:support-v4:+'
    compile files('libs/apache-mime4j-0.6.jar')
    compile files('libs/httpmime-4.0.jar')
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 10
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-    rules.txt'
    }


    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LGPL2.1'
    }
}

8.finished with non-zero exit value 3

When your Android project contains too many class, Android Studio will throw non-zero exit value 3during dex apk period.

Error:org.gradle.process.internal.ExecException: Process 'command 'C:Program FilesJavajdk1.7.0_67injava.exe'' finished with non-zero exit value 3

方法:

dexOptions {
    javaMaxHeapSize "4g"
}

 9.MultiDex

场景:将ArcGIS的库放入项目中的时候,出现了java.lang.NoClassDefFoundError的问题,找原因,发现错误对应的文件在第二个dex中,最终发现是设置了multiDexEnabled true,但是其他的地方未配置好

MultiDex配置教程:http://www.cnblogs.com/wingyip/p/4496028.html

10.修改本项目名 包名

http://blog.csdn.net/hangeqq685042/article/details/48626581

11.adb devices能找到设备,但是react-native run-android提示找不到设备

修改gradlew的权限,chmod 555 gradlew

12.添加.so文件

在android studio 中添加jar和so时,将jar文件直接拷贝到 项目目录applibs下即可,将so文件按照平台分类目录放到 项目目录appsrcmainjniLibs平台类别目录 下

通过下面的代码,可以重新制定.so文件的存放目录(相对于项目根目录)

sourceSet{

     main{

           jinLibs.srcDirs = ['newDir'}

           }

   }

http://www.cnblogs.com/htsky/p/6127238.html

13.打包的apk安装后有两个图标

因为引用的第三方库的AndroidManifest.xml文件里面没有删除对入口Activity的设置

原文地址:https://www.cnblogs.com/yz1311/p/6072562.html