Giter Site home page Giter Site logo

react-native-android-config's Introduction

#React Native Android的配置说明-2015-09-17修改

###如果文档中有错误的地方,可以提交issues或者联系QQ70343281进行修改

##1 关于Android SDK

由于现在官网被墙,可以去AndroidDevtools下载相关资料 下载解压的目录一般是android/sdk/**,如果缺少 不同sdk版本的build-tools之类的可以从下面子目录单独配置

比较重要的目录

  • 【build-tools】里面是不同版本(例如21.1.1)的build工具,这些工具包括了aapt打包工具、dx.bat、aidl.exe等等

  • 【platform】是存放不同API-level版本SDK目录的地方

  • 【platform-tools】是一些android平台相关的工具,adb、fastboot等

  • 【tools】是指的安卓开发相关的工具,例如android.bat、ddms.bat(Dalvik debug Monitor Service)、draw9patch.bat等等

##2 关于Gradle配置 在React Native Android 中打包是有Gradle来实现,主要配置文件《build.gradle》,在执行react-native run-android时 会根据这个配置来打包apk并安装。 参考文档

在执行run-android 时需要用的配置参数

Gradle中配置的API Level 必须在sdk目录中是已安装的版本

  • compileSdkVersion

    SDK的版本号,也就是API Level,例如API-19、API-20、API-21等等

  • buildToolsVersion

    构建工具的版本,其中包括了打包工具aapt、dx等等。这个工具的目录位于..your_sdk_path/build-tools/XX.XX.XX

  • targetSdkVersion

    在编译程序是指定一个API Level,我一般配置为跟 compileSdkVersion一致。

##3 打包真机运行的APK文件

1.执行react-native init androiddemo(根据实际情况来创建)项目。
2.在androiddemo目录中找到路径/android/app/src/main,并在该目录下新建《assets》文件夹,这个文件夹存放android app的资源文件。
3.在/androiddemo/路径下执行react-native start命令,待执行完毕以后再执行以下命令
curl -k 'http://localhost:8081/index.android.bundle' > android/app/src/main/assets/index.android.bundle
该命令的意思是将index.android.bundle下载并保存到assets资源文件夹中
这句命令是重点,如果assets目录中不存在该文件,则打包的apk在执行时显示空白。
4.打包的apk在未签名的情况下,在手机中(非root)是不允许安装的,所以需要添加gradle的android keystore配置,在build.gradle文件中,具体配置如下
  //签名
signingConfigs{
    release {
        storeFile file("/Volumes/Android.KeyStore/AndroidDebug.keystore")
        storePassword "密码"
        keyAlias "keyAlias的名字"
        keyPassword "密码"
    }
}
 buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release //添加这句话引用签名配置
    }
}
注意一下配置顺序
5.在androiddemo/android/目录中执行gradle assembleRelease命令,打包后的文件在	androiddemoi/android/app/build/outputs/apk目录中,例如app-release.apk。如果打包碰到	问题可以先执行 gradle clean 清理一下。
6.将apk复制到手机中安装运行 
  • 2015-09-17添加

    在打包文件时需要注意curl 下载的Bundle文件要与Activity中配置的一致,而不是统一的index.android.bundle 例如 Movies项目中,在Activity的OnCreate中

       mReactInstanceManager = ReactInstanceManager.builder()
       	.setApplication(getApplication())
       	.setBundleAssetName("[MoviesApp.android.bundle]()")
       	.setJSMainModuleName("MoviesApp.android")
       	.addPackage(new MainReactPackage())
       	.setUseDeveloperSupport(true)
       	.setInitialLifecycleState(LifecycleState.RESUMED)
       	.build();
    

    这个BundleAssetName的名字为MoviesApp.android.bundle,所以在添加bundle到assets目录时,需要改为 curl -k 'http://localhost:8081/MoviesApp.android.bundle' > android/app/src/main/assets/MoviesApp.android.bundle

##附 执行run-android时碰到的问题

第一次执行run-android是一个漫长的过程,主要是需要下载gradle之类的执行文件,如果没有安装sdk或者配置ANDROID_HOME有可能会碰到一下问题。
  • A problem occurred configuring project ':app'. failed to find target with hash string 'android-23' in: /Users/zbmobi/DevelopTools/Android/sdk

    在sdk/platforms目录中找不到gradle配置中compiletargetSdkVersion对应的androidsdk版本号 解决:修改compileSdkVersion和targetSdkVersion的对应版本号 如图

  • A problem occurred configuring project ':app'. failed to find Build Tools revision 23.0.1

在sdk/build-tools目录中找不到gradle配置的buildToolsVersion对应的版本号 解决:查看build-tools目录,然后修改为已存在的版本号

  • A problem occurred configuring project ':app'. Could not resolve all dependencies for configuration ':app:_debugCompile'. Could not find com.android.support:appcompat-v7:23.0.0.

在build.gralde文件里 dependencies{ compile '' } 这个的作用主要是导入在android程序所用的类库 上面的错误是build.gradle文件中配置的com.android.support:appcompat-V7版本号找不到导致的 解决:查看/Android/sdk/extras/android/m2repository/com/android/support/appcompat-v7/目录修改为已存在的版本号,具体下载可以在AndroidDevtools中下载『Android SDK Extras』和『Support Library』

  • Execution failed for task ':app:installDebug'. com.android.builder.testing.api.DeviceException: No connected devices

    找不到连接电脑的设备 解决:连接真机或者模拟器,这里推荐模拟器,在调试的时候方便一些,这里推荐genymotion

  • *** SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.在run-android过程中有时配置了ANDOIRD_HOME会碰到依然提示 sdk目录找不到或者不存在的问题。***

    解决:可以在目录/android/中添加local.properties配置文件,文件内容为:sdk.dir=你的sdk路径,例如sdk.dir=/Users/****/DevelopTools/Android/sdk

    一般解决上面问题,程序应该执行成功了,碰到后续问题再补充。

react-native-android-config's People

Contributors

ggchxx avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.