标签: aar

排除发布版本类型的资产

我正在使用gradle构建的应用程序中导入一个android库,如下所示:

dependencies {
    compile 'com.example:great-lib:0.1-SNAPSHOT'
}
Run Code Online (Sandbox Code Playgroud)

此库仅包含要在webview中使用的资源,js,css和图像,其布局如下:

assets/
|-> great.css
|-> great.min.js
|-> great.min.js.map
|-> js/
|   |-> plop.js
|   |-> foo.js
|   ...
|-> img/
|   ...
Run Code Online (Sandbox Code Playgroud)

js文件夹包含源文件(与源映射一起使用).我想包含它和.map调试版本的文件,并且在发布版本中只有缩小的js,但我找不到这样做的方法.

到目前为止,我已经尝试过: 

android {
    // this doesn't exclude anything
    packageOptions {
        exclude 'assets/js'
    }
    buildTypes {
        release {
            // this does exclude the js folder, but in both release and debug
            aaptOptions {
                ignoreAssetsPattern "!js"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

任何想法是否有可能实现,如果是,如何?

(我也想过发布两个版本的库(great-libgreat-lib-debug),并且依赖于debugCompilereleaseCompile …

android android-gradle-plugin aar

16
推荐指数
3
解决办法
8581
查看次数

如何显式启动另一个模块中的活动

我创建了一个aar,并将其作为模块添加到我的项目中.在这个模块中,我有一个我想要运行的HelloWorldActivity.

我的模块清单看起来像这样.

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="ir.sibvas.testlibary1.HelloWorldActivity"
        android:label="@string/app_name" >

        <intent-filter>
            <action android:name="ir.sibvas.testlibary1.HelloWorldActivity" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>


    </activity>
</application>
Run Code Online (Sandbox Code Playgroud)

现在我可以使用此代码从我的项目开始此活动

 Intent intent = new Intent("ir.sibvas.testlibary1.HelloWorldActivity");
 startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

但正如你可以看到这个代码是隐含的,隐式调用的问题是,如果我在多个应用程序中使用此模块,两者都安装在用户设备上,它将向用户显示应用程序选择器对话框.那么如何才能使这个调用显式化,阻止用户切换应用?

此代码将无法运行,因为HelloWorldActivity与调用活动不在同一个包中

Intent intent = new Intent(this, HelloWorldActivity.class);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

我真的不想为每个使用它的项目更改我的模块.

android android-intent android-library aar

15
推荐指数
2
解决办法
1万
查看次数

Maven拒绝从远程存储库下载aar打包的依赖项

我想在我的java程序中使用这个android依赖项:

http://jcenter.bintray.com/com/o3dr/android/dronekit-android/2.9.0/
Run Code Online (Sandbox Code Playgroud)

所以我将所有插件和存储库添加到我的maven pom文件中:

<repositories>
    <repository>
        <id>central</id>
        <name>bintray</name>
        <url>http://jcenter.bintray.com</url>
        <!--<snapshots>-->
            <!--<enabled>false</enabled>-->
        <!--</snapshots>-->
    </repository>
</repositories>

<pluginRepositories>
    <pluginRepository>
        <!--<snapshots>-->
            <!--<enabled>false</enabled>-->
        <!--</snapshots>-->
        <id>central</id>
        <name>bintray-plugins</name>
        <url>http://jcenter.bintray.com</url>
    </pluginRepository>
</pluginRepositories>

<build>
    <plugins>
        <plugin>
            <groupId>com.simpligility.maven.plugins</groupId>
            <artifactId>android-maven-plugin</artifactId>
            <version>4.1.0</version>

            <extensions>true</extensions>
            <configuration>
                <sign>
                    <debug>false</debug>
                </sign>
            </configuration>
        </plugin>
        ...
Run Code Online (Sandbox Code Playgroud)

然后我将依赖项添加到同一个文件中:

    <dependency>
        <groupId>com.o3dr.android</groupId>
        <artifactId>dronekit-android</artifactId>
        <version>2.9.0</version>
        <type>aar</type>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

但没有任何反应,maven忽略它就好像它不存在,如果我在scala文件中导入它的主包并用它构建它mvn clear install -U,我得到这个错误:

[ERROR] /home/peng/git-drone/dronespike/src/main/scala/Main.scala:1:object o3dr不是包com
[ERROR] import com.o3dr.android._
[ERROR] ^的成员

问题:我该怎么做才能解决这个问题?

java android dependency-management maven aar

15
推荐指数
2
解决办法
3025
查看次数

在AAR文件java.lang.NoClassDefFoundError中找不到活动类

我创建了一个安卓库,它包含一个用于打开相机意图的活动类,该库可以完美地用于调用活动显示在屏幕上的部分,并且应用程序崩溃时抛出以下错误

Suppressed: java.lang.ClassNotFoundException: com.me.scanner.ScannerViewActivity
            at java.lang.Class.classForName(Native Method)
            at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
            at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
                    ... 14 more
         Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
Run Code Online (Sandbox Code Playgroud)

以下是我build.gradle将使用此库的其他项目的文件

repositories {
    flatDir {
        dirs 'libs'
    }
}
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:25.3.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.me.app:gpio_lib@aar'
    compile ('com.me.app:scanner@aar'){ transitive = true; }
    testCompile 'junit:junit:4.12'
}
Run Code Online (Sandbox Code Playgroud)

请注意:

java android android-activity aar

15
推荐指数
3
解决办法
4642
查看次数

如何解决此错误 Task 'assembleAarRelease' not found in root project 'flutter_plugin_android_lifecycle'.?

当我尝试运行该应用程序时,我收到此错误 Task 'assembleAarRelease' not found in root project 'flutter_plugin_android_lifecycle'。如何解决这个问题?

dart aar flutter flutter-test flutter-dependencies

15
推荐指数
3
解决办法
2万
查看次数

如何发送具有远程依赖项(gradle)的Android库(aar)?

我正在尝试使用具有远程依赖关系的gradle构建aar文件.下面是一个示例构建脚本.如您所见,我有两个依赖项.我遇到的问题是当我发布时,aar文件不包含远程依赖项,所以当我在其他项目中包含aar文件时,我得到NoClassDefFound错误.

我发现如果我将jar从我当地的maven repo复制到我项目中的libs文件夹,那么jar确实会包含在发布版本中.如何在aar文件中包含远程依赖项?我还在其他地方读到,这样运送依赖关系是不好的做法,所以如果有更好的方法来做我想做的事情,我就是为了它.

buildscript {

    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
    }
}

apply plugin: 'android-library'

repositories {
    mavenCentral()
    mavenLocal()
}

android {
... omitted for brevity
}

dependencies {
    compile 'com.somepackage:someartifact:1.0'
    compile 'com.anotherpackage:artifact:2.0'
}
Run Code Online (Sandbox Code Playgroud)

android gradle maven aar

14
推荐指数
1
解决办法
1980
查看次数

如何使用gradle从.AAR Android库存档中排除文件

我正在尝试使用Android Studio和gradle为库Android项目创建AAR文件.

我想从此存档中排除特定的文件夹和文件,但我找不到有效的解决方案.

该项目有两种口味.

app/
|--libs/
|--src/
   |--flavour1/
   |  |--java/
   |     |--a1/
   |     |  |--class_File1.java
   |--flavour2/
   |  |--java/
   |     |--a1/
   |     |  |--class_File1.java
   |--main/
      |--java/
      |  |--...
      |--res/
      |  |--raw/
      |  |  |--comments.txt
      |  |--...
      |--AndroidManifest.xml
Run Code Online (Sandbox Code Playgroud)

我使用像这样的build.gradle文件

apply plugin: 'com.android.library'

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
    minSdkVersion 10
    targetSdkVersion 21
}
packagingOptions {
    exclude 'assets'
    exclude '**/comments.txt'
}


sourceSets {

        flavour1 {
            resources {
                exclude '**/comments.txt'
            }
        }
        flavour2 {

        }

}

buildTypes {
    release {
        minifyEnabled true …
Run Code Online (Sandbox Code Playgroud)

android gradle android-gradle-plugin aar

14
推荐指数
1
解决办法
6352
查看次数

如何在aar库中指定依赖项?

我创建了一个Android库(称为MyLib中),这取决于其他图书馆可在Maven的回购协议(如GSON,翻新等).

MyLib
 |
 |-- Retrofit
 |-- Gson
 |-- ...
Run Code Online (Sandbox Code Playgroud)

MyLib打包到一个aar文件中.

目标是发布一个aar库,该库可以包含在Android应用程序(称为MyApp)中,而无需第二次指定MyLib使用的依赖项.

MyApp
 |
 |-- MyLib
 |    |-- Retrofit
 |    |-- gson
 |    |-- ...
Run Code Online (Sandbox Code Playgroud)

这是MyLib的build.gradle文件

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.google.code.gson:gson:2.3.1'
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我想建立和运行MyApp的不依赖问题,我不得不使用以下的build.gradle MyApp的(如果我不指定改装GSON作为DEPS,运行时异常被抛出,因为DEPS不可用) .

dependencies {
    compile('MyLib@aar')

    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.google.code.gson:gson:2.3.1'
}
Run Code Online (Sandbox Code Playgroud)

我不想在MyApp中指定MyLib中使用的依赖项,我应该如何编写build.gradle文件?

Thansk提前

dependencies pom.xml android-gradle-plugin aar

14
推荐指数
1
解决办法
2973
查看次数

是否可以使用方法通道在 Android 应用程序和构建并包含为“aar”的 flutter 模块之间进行通信?

本指南讨论flutter和原生android之间对话的方法通道。

https://flutter.dev/docs/development/platform-integration/platform-channels

我已经为我的 flutter 模块生成了“aar”文件,并将该 aar 文件包含在我的本机 android 应用程序中。现在,当我单击 Android 应用程序中的按钮时,我将通过 Android 中的 FlutterActivity 类启动我的 flutter 模块。

现在我的问题是,如何在本机 android 代码和生成的 aar 代码之间进一步通信?

如何编写我的 flutter 模块,以便当我生成“aar”文件并包含在我的 android 应用程序中时,我能够在它们之间建立通信?

android aar flutter flutter-dependencies

14
推荐指数
1
解决办法
988
查看次数

在Android库中使用Kotlin作为AAR分发

甚至可以使用Kotlin编写一个库吗?

我看到的问题是,这将取决于specyfic版本kotlin-stdlibkotlin-runtime并迫使图书馆的用户使用相同的版本.

我正在考虑使用jarjar重新包装那些但是那么,如何将它们包括在胖子型分发中?在解压缩的内部我看到/libs目录 - 有没有办法使用它?

android kotlin aar

13
推荐指数
1
解决办法
2042
查看次数