标签: aar

如何从android studio创建一个jar文件

我有一个相当最新版本的android studio,我在一个项目下创建了一个模块,基本上应该是一个库,当我构建它时,它会创建一个".aar"文件,我想要的是.jar文件,因为这个库也应该与eclipse一起使用.

该库还包含活动,有没有什么方法可以创建一个.jar文件,我可以在Eclipse和Android Studio上使用它?

我已经创建了这个模块并尝试构建,因此它生成了.aar文件,而不是.jar文件.

java android jar aar

9
推荐指数
2
解决办法
8913
查看次数

在运行时验证 android 库的 (aar) 签名

我正在开发一个 Android 库,我将把它分发给我的业务合作伙伴。我已经用我的密钥库对其进行了签名,并且我想在运行时验证签名以查看我的库是否是使用不同的签名重新编译的。但是验证签名的正常方式

PackageManager pm = ctx.getPackageManager();
(PackageInfo packageInfo = pm.getPackageInfo(ctx.getPackageName(), 
PackageManager.GET_SIGNATURES);)
Run Code Online (Sandbox Code Playgroud)

如果 APK 不工作,因为它只返回应用程序的签名,而不是我为我的库签名的签名。有没有办法做到这一点?

android signing aar

9
推荐指数
0
解决办法
200
查看次数

Android动态加载模块

我想写一个可以用模块扩展的android应用程序(android库).模块应在运行时加载.因此,它们将从URL下载并存储在目录中.这些模块是aar文件.

有没有办法在运行时动态加载aar文件?

我知道可以使用URLClassLoader加载包含的classes.jar.但比我无法加载布局,字符串,...资源.HM

有谁知道如何解决这个问题?

编辑:

我找到了一些相关的主题:

由于第一个链接的答案,它似乎不起作用.我希望我的想法是错的.

android module aar

8
推荐指数
1
解决办法
3309
查看次数

来自库的Android外部服务(AAR,不是共享服务)

我正在尝试创建一个包含简单服务的Android库.例如:

public class BasicService extends Service {
    public BasicService() {
        Log.d("I", "work");
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

我按以下方式启动服务:

startService(new Intent(this, BasicService.class));
Run Code Online (Sandbox Code Playgroud)

该服务被编译成一个AAR文件,在将其添加到应用程序后,我得到一个ClassNotFoundException.

 Caused by: java.lang.ClassNotFoundException: Didn't find class "nl.company.example.library.Services.BasicService" on path: DexPathList[[zip file "/data/app/nl.example.aartest-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
Run Code Online (Sandbox Code Playgroud)

我不需要绑定服务,因为应用程序不必与服务通信.我也不需要aidl接口,因为我不想与其他应用程序共享该服务.我知道我需要在应用程序端(而不是库)声明服务,所以我按照以下方式执行:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="nl.company.example.exampleApp"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="17"
    android:targetSdkVersion="19" />

<application
    android:settings... >
    <service
        android:name="nl.company.example.library.Services.BasicService"
        android:enabled="true"
        android:exported="true" />
</application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

这是我的图书馆的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="nl.company.example.library" >
    <application/>
</manifest>
Run Code Online (Sandbox Code Playgroud)

我在Stackoverflow/Google上做了一些研究,但我无法找到问题的答案.

库中的Android服务

还尝试了不同的启动服务的方式(在行动等)但到目前为止没有好处.

欢迎所有的帮助,如果我提出了一个邪恶的重复问题,我会道歉.

service dependencies android aar

8
推荐指数
1
解决办法
2428
查看次数

Android中的play-services-base与-basement依赖关系(AAR)

我找到了一个xml文件GoogleDependencyFlurryPlugin.xml

<dependencies>
<dependency><groupId>com.google.android.gms</groupId><artifactId>play-services-base</artifactId><version>8.4+</version></dependency>
<dependency><groupId>com.google.android.gms</groupId><artifactId>play-services-basement</artifactId><version>8.4+</version></dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

确实是一个xml文件GoogleDependencyPlayGameServicesPlugin.xml

<dependencies>
<dependency><groupId>com.google.android.gms</groupId><artifactId>play-services-games</artifactId><version>8.4+</version></dependency>
<dependency><groupId>com.google.android.gms</groupId><artifactId>play-services-plus</artifactId><version>8.4+</version></dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

现在,前一个文件只有一个点

play-services-base>或<play-services-basement

这似乎造成了一个巨大的问题.AndroidJavaException:java.lang.NoSuchMethodError:一旦在设备上运行.

Android专家,如果你有"基地",你必须有 "地下室"......或者反之亦然

事实上,WRT游戏服务 - 游戏或游戏服务 - 加上,或许其中一个/两个在某种程度上(或相反?)基地/地下室?

android unity-game-engine maven prime31 aar

8
推荐指数
1
解决办法
4698
查看次数

在aar找不到的类

当调用GoogleApiAvailability时,我的Android库(aar)中的类未找到异常.

    Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.GoogleApiAvailability" on path: DexPathList[[zip file "/data/app/com.myunityplugin.PushNotifications-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myunityplugin.PushNotifications-1/lib/arm, /vendor/lib, /system/lib]]
Run Code Online (Sandbox Code Playgroud)

错误是不言自明的,但我不确定我做错了什么.我很擅长gradle和AndroidStudio.

我的gradle.build中有以下依赖项:

    compile 'com.google.android.gms:play-services:8.4.0'
    compile 'com.google.android.gms:play-services-gcm:8.4.0'
Run Code Online (Sandbox Code Playgroud)

我认为问题是播放服务库需要包含在aar中,而编译不会这样做.我尝试使用'运行时',但我得到"找不到gradle dsl运行时".

问题:

  1. 这是一个我需要在我的网站中包含播放服务库的问题,我该如何实现?(如果没有,我该如何解决这个问题)
  2. 我是否需要指定播放服务或播放服务-gcm是否足够?

错误信息/设置

导致错误的行

GoogleApiAvailability ServiceAvailability = GoogleApiAvailability.getInstance();
Run Code Online (Sandbox Code Playgroud)

例外:

05-23 05:38:48.221 28055-28055/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.myunityplugin.PushNotifications, PID: 28055
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/GoogleApiAvailability;
   at com.myplugin.unitynotification.GCM.GCM.checkPlayServices(GCM.java:33)
   at com.myplugin.unitynotification.GCM.MainActivity.onCreate(MainActivity.java:80)
   at android.app.Activity.performCreate(Activity.java:6550)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3108)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3263)
   at android.app.ActivityThread.access$1000(ActivityThread.java:197)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1687)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:145)
   at android.app.ActivityThread.main(ActivityThread.java:6897)
   at java.lang.reflect.Method.invoke(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) …
Run Code Online (Sandbox Code Playgroud)

android gradle google-play-services android-gradle-plugin aar

8
推荐指数
1
解决办法
5712
查看次数

Android - @aar包中的Desugar类

我正在尝试从我的库中构建一个@aar包,用作客户端项目中的依赖项.

在我的库模块中,我正在使用:

compileOptions{
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
Run Code Online (Sandbox Code Playgroud)

在达到客户端依赖关系之前,我想要解决代码并使Java 7兼容.这意味着我需要实际提供一个@aar包,其中Lambda函数和所有其他Java 8相关功能已经移植到Java 7字节码.

我面临的问题是在库模块上使用:

apply plugin: 'com.android.library'
Run Code Online (Sandbox Code Playgroud)

没有执行desugaring任务,这意味着字节码包含Java 8相关的导入,如:

java.lang.invoke.LambdaMetafactory
Run Code Online (Sandbox Code Playgroud)

这将迫使我的客户端将他的编译选项更新为JavaVersion.VERSION_1_8,这是我想要避免的事情.

所以作为最后一个问题:'com.android.library'插件执行的desugaring任务是仅在'com.android.application'插件中可用?如果是这种情况,请你帮我提一些关于如何将这一步也包含在库插件中的提示?

android android-library java-8 aar

8
推荐指数
1
解决办法
467
查看次数

将lib上传到bintray.com时,无法在电子邮件中获取gpg密钥

我正在使用教程将我的android lib上传到bintray.com

我按照以下步骤上传lib:

  1. gpg --gen-key
  2. gpg --list-keys
  3. gpg --keyserver hkp://pool.sks-keyservers.net --send-keys PUBLIC_KEY_ID
  4. gpg -a --export yourmail@email.com> public_key_sender.asc
  5. gpg -a --export-secret-key yourmail@email.com> private_key_sender.asc

我已将PUBLIC_KEY_ID替换为我的密钥ID,对于电子邮件也是如此.

我不知道为什么我没有收到电子邮件?

android gnupg bintray aar

8
推荐指数
1
解决办法
135
查看次数

错误:“无法找到 UnityARCore”和“DllNotFoundException”

我已经使用 ARFoundation 包在 Unity 中构建了一个 ARCore 应用程序。然后,我按照以下链接中的说明将 Unity 应用程序嵌入到原生 Android 应用程序中:Embedded Unity inside Android App

AR 应用程序作为独立应用程序运行良好。但是我在将其嵌入本机 Android 应用程序时遇到错误:

E/Unity: Unable to find UnityARCore
E/Unity: DllNotFoundException: UnityARCore
at (wrapper managed-to-native) UnityEngine.XR.ARCore.Api:UnityARCore_setCameraPermissionProvider (UnityEngine.XR.ARCore.Api/CameraPermissionRequestProvider)
at UnityEngine.XR.ARCore.ARCoreCameraExtension.Register () [0x00000] in <filename unknown>:0
Run Code Online (Sandbox Code Playgroud)

android unity-game-engine aar arcore

8
推荐指数
1
解决办法
570
查看次数

我无法使用自定义 Kotlin 库中的顶级函数

我想为 android 创建一个包含一些顶级函数的 kotlin 库。

我创建了一个 android 库项目。

我添加了一些顶级函数和一些类

// filename TestMethodFirst.kt
fun testMethodFirst() {}
Run Code Online (Sandbox Code Playgroud)
// filename TestClass.kt
class TestClass() {}
Run Code Online (Sandbox Code Playgroud)

我已经使用 ./gradlew build 构建了库

我已将此库作为 aar 库包含到另一个项目中

库中的类已顺利解析并导入。顶级函数尚未解析,因此无法使用。我尝试过手动添加导入,但它也不起作用。当我尝试使用 java 中的顶级函数作为静态方法执行时,它就可以工作了。

这不起作用

// filename Test1.kt
fun test1() {
    testMethodFirst()
}
Run Code Online (Sandbox Code Playgroud)

这有效

// filename Test2.kt
fun test1() {
    TestClass()
}
Run Code Online (Sandbox Code Playgroud)

这有效

// filename Test3.java
class Test {
    void test() {
        TestMethodFirstKt.testMethodFirst();
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用 AS 4.1 Canary 7 和 AS 3.6.2

附件包含库项目和aar库

项目

生成的aar

java android kotlin aar

8
推荐指数
1
解决办法
790
查看次数