}

allprojects { // 这里最好好上面的repositories保持一致 repositories { google() jcenter()

} }

task clean(type: Delete) { delete rootProject.buildDir }

点开app目录下的build.gradle大致如下

// 声明是Android应用程序还是库模块 apply plugin: ‘com.android.application’

android { // 用于指定项目的编译SDK版本 compileSdkVersion 29 // 指定项目构建工具的版本 buildToolsVersion “29.0.2” defaultConfig { // 应用程序包名 applicationId “com.example.creditsystem” // 最小 sdk 版本 minSdkVersion 15 // 目标 sdk 版本 targetSdkVersion 29 // 版本号 versionCode 1 // 版本名 versionName “1.0” testInstrumentationRunner “androidx.test.runner.AndroidJUnitRunner” } // 指定生成安装文件的配置 buildTypes { release { // 是否对代码进行混淆 minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android-optimize.txt’), ‘proguard-rules.pro’ } } }

// 指定当前项目的所有依赖关系:本地依赖、库依赖、远程依赖 dependencies { // 本地依赖:可以对本地Jar包或目录添加依赖关系 implementation fileTree(dir: ‘libs’, include: [‘*.jar’]) implementation ‘androidx.appcompat:appcompat:1.1.0’ implementation ‘androidx.constraintlayout:constraintlayout:1.1.3’ testImplementation ‘junit:junit:4.12’ androidTestImplementation ‘androidx.test1.2.0’ androidTestImplementation ‘androidx.test.espresso:espresso-core:3.2.0’ }

可以理解为:根目录下build.gradle的repositories是用来声明依赖了哪些远程库,app目录下的build.gradle的dependencies 是用来声明具体使用了哪些代码库,在Sycn的时候会从远程库中遍历查找并下载依赖的代码库。

使用nexus搭建maven私服

下载nexus

brew install nexus

注意: nexus有可能已经被墙了,需要在命令行配置代理才能下载成功。

运行nexus

brew services start nexus

在浏览器中输入nexus管理地址为127.0.0.1:8081/nexus点击右上角登录按钮,默认管理员帐号密码分别为admin和admin123关闭nexus

brew services stop nexus

上传到maven私库

如图选中Repositories

点击Add按钮

填写 Repository ID 和 Repository Name

选中Artifact UploadGAV Definition 选择 From POM点击 select POM 上传POM文件

选择 /node_modules/react-native/android/com/facebook/react/react-native/0.54.0 路径下的 react-native-0.54.0.pom

选择 Select Artifact(s)Upload

选择 /node_modules/react-native/android/com/facebook/react/react-native/0.54.0 路径下的 react-native-0.54.0.aar

点击add Artifact 会发现aar出现在Artifacts列表中点击 Upload Artifact就完成上传了。

点击 Browse Index点击刷新会看到有com文件夹

回到项目区 找到我们创建的项目点击项目右侧的仓库地址

依次往下级目录点击直到最里面的目录下查看aar和pom文件是否存在,都存在说明上传成功了。

测试我们上传的RN环境库

在根目录下的 build.gradle中添加我的私有maven库的地址,app中的build.gradle无需修改。

allprojects { repositories { maven{ url’http://maven.aliyun.com/nexus/content/repositories/google’} maven{ url’http://maven.aliyun.com/nexus/content/repositories/jcenter’} maven{ url’http://127.0.0.1:8081/nexus/content/repositories/RNEnvironment_0.54.0/‘} maven{ url’http://127.0.0.1:8081/nexus/content/repositories/RNCreditSystem/’} // 将本地的maven库注释 // mavenLocal() // maven { // // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm // url “$rootDir/…/node_modules/react-native/android” // } } }

然后点击同步一下,点击运行,如果一切OK说明替换成功。

将RN代码打包

在 ./android/app/src/main 路径下创建 assets 文件夹。执行命令

react-native bundle --entry-file index.js --platform android --dev false --bundle-output ./android/app/src/main/assets/index.android.bundle --assets-dest ./android/app/src/main/res/

–entry-file: ios 或者 android 入口的 js 名称,比如 index.ios.js index.ios.js 在高版本0.48之后已经统一变成 index.js 了. –platform: 平台名称( ios 或者 android ) –dev: 设置为 false 的时候将会对 JavaScript 代码进行优化处理 –bundle-output: 生成的 jsbundle 文件的名称,比如 ./ios/bundle/index.ios.jsbundle –assets-dest: 图片以及其他资源存放的目录,比如 ./ios/bundle

在../android/app/src/main/assets地址里你会看到 index.android.bundle文件,这个bundle就是我们RN离线包

使用Maven管理RN组件代码

打开安卓项目,在app的同级新建一个module

操作:File -> New -> New Module -> Android Libraey -> 填写名字 rnmodule

在rnmodule中创建一个RNMainActivity来加载RN,

操作:双指击rnmodule 然后 New -> Activety -> Empty Activety -> 填写名字 RNMainActivity

我的RNMainActivity代码如下:

// 这里是为了导入 rnmodule 这个包 import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactRootView; import com.facebook.react.common.LifecycleState; import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; import com.facebook.react.shell.MainReactPackage;

public class RNMainActivity extends AppCompatActivity implements DefaultHardwareBackBtnHandler { private ReactRootView mReactRootView; private ReactInstanceManager mReactInstanceManager;

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

mReactRootView = new ReactRootView(this); mReactInstanceManager = ReactInstanceManager.builder() .setApplication(getApplication()) .setBundleAssetName(“index.android.bundle”) .setJSMainModulePath(“index”) .addPackage(new MainReactPackage()) .setUseDeveloperSupport(BuildConfig.DEBUG) .setInitialLifecycleState(LifecycleState.RESUMED) .build();

// 注意这里的MyReactNativeApp必须对应“index.js”中的 // “AppRegistry.registerComponent()”的第一个参数 mReactRootView.startReactApplication(mReactInstanceManager, “creditSystem”, null);

setContentView(mReactRootView); }

@Override public void invokeDefaultOnBackPressed() { super.onBackPressed(); } }

在主工程app中的MainActivity中调用 RNMainActivity,添加一个按钮点击跳转RN页面,代码如下:

MainActivity位置src -> main -> java -> com.example.creditSystem -> MainActivity

package com.example.creditsystem;

import androidx.appcompat.app.AppCompatActivity; import android.widget.Button; import android.view.View; import android.os.Bundle; import android.content.Intent;

// 引用我们新建rnmodule中加载RN的 RNMainActivity import com.example.rnmodule.RNMainActivity;

public class MainActivity extends AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

Button mButton = (Button)findViewById(R.id.button); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(); intent.setClass(view.getContext(), RNMainActivity.class);//指明要跳转的Activity类 startActivity(intent); } }); }

}

对应的xml位置src -> main -> res -> layout -> activity_main.xml

// activity_main.xml

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)

文末

面试:如果不准备充分的面试,完全是浪费时间,更是对自己的不负责!

不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

文末

面试:如果不准备充分的面试,完全是浪费时间,更是对自己的不负责!

不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: