编辑:在下面的链接中发布了基于此讨论的后续问题。
Android:如何在同一应用程序使用的多个库中管理公共代码库
我有两个android aar库项目:使用ClassA的LibA和使用ClassB的LibB。这两个库具有相同的基本软件包。这两个库都使用名为BaseClass的相同类,当前分别位于程序包名称“ common”中的每个库中。BaseClass包含一个名为baseMethod的方法。
这将使用具有相同名称和不同实现的类创建两个库。
这是类的样子:
A类:
package mybasepackage.a;
import mybasepackage.common.BaseClass;
public class ClassA {
BaseClass baseClass;
public ClassA() {
this.baseClass= new BaseClass();
}
public String myPublicMethod(){
return this.baseClass.baseMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
B类:
package mybasepackage.b;
import mybasepackage.common.BaseClass;
public class ClassB {
BaseClass baseClass;
public ClassB() {
this.baseClass = new BaseClass();
}
public String myPublicMethod(){
return this.baseClass.baseMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
LibA中的BaseClass:
package mybasepackage.common;
public class BaseClass{
public String baseMethod() {
return "Called from ClassA";
}
}
Run Code Online (Sandbox Code Playgroud)
LibB中的BaseClass:
package mybasepackage.common;
public class …Run Code Online (Sandbox Code Playgroud) 你好,
我在一个包含大量C++文件的项目中使用带有NDK和JNI的Android Studio.当我在做一个C++改变文件 也不会在代码适用,除非我重建整个项目,并刷新整个C++文件,所以他们必须重新编译.编译过程每次小变化需要3分钟以上,每天20次,你已经失去了一个小时.
根据今天,我改变文件后,我去了
构建>>刷新链接的C++项目,
然后运行该项目,导致所有文件的完整,冗余编译.
我正在寻找编译器只刷新更改文件的方法,因此缩短了构建过程.
注意:此问题仅发生在Windows中,当我在Mac上运行Android Studio时,编译器仅重新编译相关文件.
这是我的CMakeLists.txt文件:
cmake_minimum_required(VERSION 3.4.1)
FILE(GLOB CPP_SRC
"src/main/cpp/*.c"
"src/main/cpp/*.h"
"src/main/cpp/*.cpp"
"src/main/cpp/*.hpp"
)
add_library(MyLib
SHARED
${CPP_SRC} )
find_library(
log-lib
log )
target_link_libraries(
MyLib
${log-lib} )
target_link_libraries(MyLib
android
log
EGL
GLESv2)
Run Code Online (Sandbox Code Playgroud)
和我的gradle.build文件:
apply plugin: 'com.android.library'
android {
signingConfigs {
config {
keyAlias '*****'
keyPassword '*****'
storeFile file(*****)
storePassword '*****'
}
}
compileSdkVersion 27
buildToolsVersion '27.0.3'
defaultConfig {
minSdkVersion 16
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
arguments …Run Code Online (Sandbox Code Playgroud)