我试图删除所有重复项以使其保持在 64K 限制以下(现在我有 65239,这不好,因为在这种情况下,我需要使用 multidex,这需要另一个依赖项),但我找不到有关如何从子组中删除模块的任何信息。
例如,几乎每个子依赖项都有com.android.support:support-v4:26.1.0,com.android.support:support-compat:26.1.0我需要删除它,因为com.android.support:support-v4:26.1.0根目录中已经有一个,而我需要保留这个。
// 更新:以下线程gradle - 依赖项中的库重复讨论了涉及不同版本依赖项的不同问题。我没有这个问题,我使用的所有依赖项都有我需要的版本。
我需要删除所有标记为的模块(*)
+--- com.android.support:appcompat-v7:26.1.0
| +--- com.android.support:support-annotations:26.1.0
| +--- com.android.support:support-v4:26.1.0
| | +--- com.android.support:support-compat:26.1.0
| | | +--- com.android.support:support-annotations:26.1.0
| | | \--- android.arch.lifecycle:runtime:1.0.0 -> 1.0.3
| | | +--- android.arch.lifecycle:common:1.0.3
| | | | \--- com.android.support:support-annotations:26.1.0
| | | +--- android.arch.core:common:1.0.0
| | | | \--- com.android.support:support-annotations:26.1.0
| | | \--- com.android.support:support-annotations:26.1.0
| | +--- com.android.support:support-media-compat:26.1.0
| | | +--- com.android.support:support-annotations:26.1.0 …Run Code Online (Sandbox Code Playgroud) 我想知道是否有办法在带有 Kotlin 的 Android 项目中使用 NPM 包。我知道有一个 Gradle 插件kotlin.js,它似乎可以与JetBrains 提供的演示等独立项目一起使用,但是当我尝试将它与 Android 一起使用时,出现此错误:
Cannot add extension with name 'kotlin', as there is an extension already registered with that name.
Run Code Online (Sandbox Code Playgroud)
甚至还有一个关于如何设置 kotlin/js的小教程,同样由 JetBrains 提供,但没有什么新东西。
我问是因为我想开始一个小的多平台项目,但它的核心部分是一个库,我前段时间写过,但它是用 Java 编写的,它严重依赖于BouncyCastle其他一些处理XML 序列化,所以没有运气。但是我在 JavaScript 中发现了一个类似的库。而且由于我不能使用任何 Java 依赖项,kotlin/multiplatform因此我有两个选择,要么找到一种方法让 Kotlin/JS 与 Android 项目一起工作,要么继续使用我喜欢的 React-Native,但我更喜欢 Kotlin。
这很尴尬,但我不知道还能做什么。我想将我的小型 React Native 项目移植到 TypeScript,因此我使用 TypeScript 模板创建了一个空的 React Native 项目,并进行了调整tsconfig.json以使用自定义路径,例如@app,我尝试运行它。事实并非如此。这是昨天的事,我做了一些谷歌搜索,但是那些有同样问题的人建议清理打包程序,删除node_modules并重新安装所有软件包,例如这个,所以我这样做了,但它不起作用。
这些是我重新安装的步骤react-native-cli(起初我以为问题出在过时的软件包上,但事实并非如此):
npm uninstall -g react-native-cliyarn global add @react-native-community/cli下面这些我已经关注过很多次了,我不记得确切的数字了:
\n\nnpx react-native init MyApp --template react-native-template-typescriptyarn add redux redux-logger redux-thunk react-reduxyarn add --dev @types/react @types/react-redux @types/redux-logger然后进行更改tsconfig.json,所以它看起来像这样(我的更改标记为->):
{\n "compilerOptions": {\n /* Basic Options */\n "target": "esnext", /* Specify ECMAScript target version: …Run Code Online (Sandbox Code Playgroud) 如果有两个独立的项目,但其中一个(比如项目A,这是一个Android应用程序)依赖于另一个(比如项目B,一个简单的java应用程序/库),没有它就无法工作.另一方面,项目B被视为一个独立的应用程序,并且自行构建和工作.每个项目都有settings.gradle一个根目录中的文件,该目录指向源目录.
这些项目的结构是相同的,如下所示:
project_name_root
project_name
src
build.gradle
build.gradle
settings.gradle
Run Code Online (Sandbox Code Playgroud)
settings.gradle 有一条线 include :project_name'
问题是当我将Project Ause Project B作为模块构建时,它会抛出以下错误:
A problem occurred configuring project ':project-a'.
Could not resolve all dependencies for configuration ':project-a:_debugApk'.
Project :project-a declares a dependency from configuration 'compile' to configuration 'default' which is not declared in the descriptor for project :project-b.
Run Code Online (Sandbox Code Playgroud)
项目A settings.gradle包含:
include ':project-a', ':project-b'
project(':project-b').projectDir = new File(settingsDir, '../project-b-java')
Run Code Online (Sandbox Code Playgroud)
注意
如果项目B具有稍微不同的结构(下图),项目A将以项目B作为模块正常工作.但我更愿意坚持以前的结构.
project_name_root
src
build.gradle
Run Code Online (Sandbox Code Playgroud) 标题可能不准确,但我会尝试在这里解释一下。我一直在模式下使用SwitchTransitionin-out,但由于我的动画主要是使用包中的钩子 useSpring 完成的react-spring,所以我宁愿React Transition Group完全放弃。但我不太确定如何达到同样的效果。当发生转换(对于路由)时,我需要旧组件保持可见(例如 2000 毫秒),而新组件已经可见。useTransition看看中的钩子,react-spring我看不出有什么办法可以为 引入延迟leave。
const transition = useTransition(show, null, {
from: { opacity: 0 },
enter: { opacity: 1 },
leave: { opacity: 0 },
config: {
duration: 200, // duration for the whole animation form start to end
},
})
Run Code Online (Sandbox Code Playgroud)
里面SwitchTransition会是这样的:
<SwitchTransition mode='in-out'>
<CSSTransition
key={location.pathname}
timeout={{ enter: 2000, exit: 400 }}
unmountOnExit
onEnter={()=>{callback}}
>
/* here go routes */
</CSSTransition> …Run Code Online (Sandbox Code Playgroud) android ×2
gradle ×2
java ×2
javascript ×1
kotlin ×1
react-native ×1
react-spring ×1
reactjs ×1
typescript ×1