Articles of aidl

GREF在multithreading服务中增加/减less(aidl) – 这意味着什么?

我有一个android活动和使用aidl实现的服务。 就像一个冠军,我有一个callback设置传递一些线程通知回到用户界面,似乎工作正常,除了很多 GREF已增至101,201,301,401,501等,而GREF则下降。 我做了一些在线search,发现它必须做全球参考。 08-17 02:31:19.735: DEBUG/dalvikvm(2558): GREF has increased to 301 … 08-17 02:31:25.823: DEBUG/dalvikvm(2558): GREF has increased to 401 … 08-17 02:31:36.772: DEBUG/dalvikvm(2558): GREF has increased to 501 … 08-17 02:31:42.694: DEBUG/dalvikvm(2558): GREF has increased to 601 … 08-17 02:31:48.695: DEBUG/dalvikvm(2558): GREF has increased to 701 … 08-17 02:31:59.883: DEBUG/dalvikvm(2558): GREF has decreased […]

pipe理远程服务callback

我有一种情况,我觉得我要重新发明轮子,或者绕着房子去处理那些已经有了“devise”的东西,所以在我之前,我希望能够得到第二个意见。 。 我有一个远程服务。 由于应用程序本身的exception性质/function,它是一个永久的前台服务。 我正在编写一个库,以便第三方应用程序可以绑定到服务,并使用我公开的API。 由于我自己处理线程,并且大多数callback将是asynchronous的,所以我使用了AIDL方法,并使用“Parceled”自定义类为服务提供必要的参数。 到目前为止,一切正常, 我的服务代码的构造与RemoteService API示例非常相似,所以我将引用这一点,因为发布特定的代码不会改变问题。 就像这个例子一样 ,我将每个请求的接口保存到一个RemoteCallbackList中 ,这似乎是一些其他基础知识的方便的解决scheme。 但是,我的服务并不提供相同的信息给一组“等待接收者”,因为使用下面的代码片段表明: int i = callbacks.beginBroadcast(); while (i > 0) { i–; try { callbacks.getBroadcastItem(i).somethingHappened(); } catch (RemoteException e) { // The RemoteCallbackList will take care of removing // the dead object for us. } } callbacks.finishBroadcast(); 相反,这些请求有许多不同的types,因此我需要跟踪哪个确切的接口对象我要发回结果。 每个单独的请求可能涉及进一步的asynchronousWeb请求和/或处理,并且必须将callback对象交给每个(通过构造函数或只是一个方法参数)是我感觉我要做一些非常乏味的事情,啰嗦解决一个问题,我可以简单地实现另一种方式? 如果我可以保证第一个请求是第一个结果,那么这个任务将会变得简单,因此在删除对它们的引用之前就简单地使用RemoteCallbackList中的顺序,但事实并非如此,因为处理时间不同不同的请求types。 编辑 – 看起来RemoteCallbackList是由一个ArrayMap支持,所以我认为不是有序吗? 我可以find没有logging的方式来缩小RemoteCallbackList中的callback起源,虽然即使我可以,我当然仍然需要某种持久的标识符来知道我在找什么…. […]

maven build android项目:指定aidl文件的位置

我的android项目只有aidl文件,项目结构如下图所示: MyProject/ src/ main/ com.my.aidl/ IMyService.aidl pom.xml 我正在用maven构build我的android项目。 我的pom使用了dexguard-maven-plugin ,它是android-maven-plugin的扩展。 在插件configuration中,我明确指定了source aidl文件的目录和生成的java文件的目录。 <build> <plugins> <plugin> <groupId>com.saikoa.dexguard.maven</groupId> <artifactId>dexguard-maven-plugin</artifactId> <configuration> <aidlSourceDirectory> ${project.basedir}/src/main/com/my/aidl </aidlSourceDirectory> <genDirectoryAidl> ${project.build.directory}/generated-sources/aidl/main/com/my/aidl </genDirectoryAidl> </configuration> <extensions>true</extensions> </plugin> </plugins> </build> 但是,我运行mvn clean install -e我得到了以下错误跟踪: [ERROR] Failed to execute goal com.saikoa.dexguard.maven:dexguard-maven-plugin:6.1.18:generate-sources (default-generate-sources) on project MyProject: Execution default-generate-sources of goal com.saikoa.dexguard.maven:dexguard-maven-plugin:6.1.18:generate-sources failed. NullPointerException -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed […]

Android Aidl编译错误:无法find类的导入

( 我知道有关于stackoverflow和其他地方(如谷歌组)有关添加可交付NetworkInfo的多个问题,但这不是关于这一点。 ) 我的工作在$(AOSP_ROOT)/ device /下,涉及多个aidl文件。 其中之一就是, package com.example; parcelable SomeRequest; 另一个援助就是, package com.example; import com.example.SomeRequest; interface SomeService { SomeRequest getRequest(); } 我会得到编译错误, device/somedevice/sdk/libs/aidl/com/example/SomeService.aidl:9: couldn't find import for class com.example.SomeRequest 我想知道这是处理aidl文件的顺序。 我的Android.mk看起来像, LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, aidl) LOCAL_AIDL_INCLUDES := $(call all-Iaidl-files-under, aidl) 这个构build错误是在我将aidl文件从src /文件夹移动到aidl /文件夹(出于某种原因我必须这么做)之后引入的。 它工作之前,但现在即使我把它移回到src /文件夹,它不再工作。 我试图清理$(AOSP_ROOT)/ out / device / […]

如何做一个内部类Parcelable

我需要知道如何创build一个内部类Parcelable,以便它的types的对象可以通过AIDL传递给远程服务。 我找不到任何有关这方面的信息。 下面是我正在尝试完成的示例代码,但是它不能编译,因为Bar类中的CREATOR不能是静态的(即因为它在内部类中)。 我不能让Bar成为一个静态的内部类,我不能把Bar移到Foo类之外(系统中的其他依赖)。 我也需要知道如何从AIDL文件中引用Bar类。 任何帮助是极大的赞赏。 public class Foo implements Parcelable { private int a; public Foo() { } public Foo(Parcel source) { this.a = source.readInt(); } public int describeContents() { return 0; } public void writeToParcel(Parcel dest, int flags) { dest.writeInt(this.a); } public static final Parcelable.Creator<Foo> CREATOR = new Parcelable.Creator<Foo>() { … } public […]

Android远程服务callback

(我有一个远程服务,有一个AIDL接口,由几个客户端应用程序使用,我想添加一个asynchronous方法到接口,需要一些时间的调用,但我需要的解决scheme是安全的 ,这意味着只有我的应用程序可以与服务进行通信,客户端应用程序的签名与服务应用程序的签名相同,目前应用程序只是绑定到服务上,调用单一的接口方法来执行各种操作。 一种select是在操作完成时在服务中广播一个Intent,并在客户端应用程序中使用BroadcastReceiver,但是( 问题#1 )可以确保只有我的应用程序能够接收Intent? setPackage()似乎这样做,但我需要支持姜饼设备,这似乎排除根据这里的答案: setPackage姜饼意图 所以看来我需要添加第二个.aidl接口与服务的callback接口使用,由客户端实现。 我已经看到了在这里使用监听器的例子,但我不确定与仅仅传入第二个接口对象作为参数的客户端有什么不同(在IScript / IScriptResult例子中用到了这个答案: 服务调用回到活动android ) 问题2 ,在这里使用监听器和callback方法有什么好处?

Android应用帐单SecurityException“绑定器调用到不正确的接口”

我试图让谷歌在应用程序结算服务工作。 我到目前为止服务是绑定和连接,但是一旦我尝试从服务中获取一些数据,它会崩溃的日志: 04-02 10:36:32.795 10569-10651 / my.app.package E / IAP:java.lang.SecurityException:Binder调用到不正确的接口 在android.os.Parcel.readException(Parcel.java:1425) 在android.os.Parcel.readException(Parcel.java:1379) 在billing.IInAppBillingService $存根$ Proxy.getSkuDetails(IInAppBillingService.java:251) 在my.app.package.libs.clientbackend.iap.IAPHelper $ FetchItemsCallable.call(IAPHelper.java:102) 在my.app.package.libs.clientbackend.iap.IAPHelper $ FetchItemsCallable.call(IAPHelper.java:89) 在java.util.concurrent.FutureTask.run(FutureTask.java:234) 在java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:390) 在java.util.concurrent.FutureTask.run(FutureTask.java:234) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:573) 在java.lang.Thread.run(Thread.java:856) 这是我的代码到目前为止: 显示购买的活动: Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND"); serviceIntent.setPackage("com.android.vending"); bindService(serviceIntent, this, Context.BIND_AUTO_CREATE); 一旦服务连接,IAB就会呼叫: Bundle itemBundle = new Bundle(); itemBundle.putStringArrayList("ITEM_ID_LIST", new ArrayList<>(Arrays.asList(itemIds))); Bundle detailsBundle = service […]

编译AIDL时出错

我试图编译.aidl并生成.java但是: Error:Execution failed for task ':library:compileReleaseAidl'. > java.lang.RuntimeException: com.android.ide.common.process.ProcessException: Error while executing 'C:\Users\Michele\AppData\Local\Android\sdk\build-tools\25.0.0\aidl.exe' with arguments {-pC:\Users\Michele\AppData\Local\Android\sdk\platforms\android-25\framework.aidl -oC:\Users\Michele\workspace\AndroidLib\library\build\generated\source\aidl\release -IC:\Users\Michele\workspace\AndroidLib\library\src -IC:\Users\Michele\workspace\AndroidLib\library\src\release\aidl -IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\appcompat-v7\25.0.1\aidl -IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\support-v4\25.0.1\aidl -IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\support-fragment\25.0.1\aidl -IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\support-media-compat\25.0.1\aidl -IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\support-core-ui\25.0.1\aidl -IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\support-core-utils\25.0.1\aidl -IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\animated-vector-drawable\25.0.1\aidl -IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\support-vector-drawable\25.0.1\aidl -IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\support-compat\25.0.1\aidl -dC:\Users\Michele\AppData\Local\Temp\aidl3070615992051288022.d C:\Users\Michele\workspace\AndroidLib\library\src\IRemoteShortcutService.aidl} 我使用这个build.gradle apply plugin: 'com.android.library' apply plugin: 'com.github.dcendents.android-maven' group='com.github.michelelacorte' android { compileSdkVersion 25 buildToolsVersion '25.0.0' defaultConfig { minSdkVersion 14 targetSdkVersion 25 versionCode 2 versionName "0.2.0" testInstrumentationRunner […]

需要AIDL教程

我正在AIDL上工作,并考虑APIDemo。 但如果有人有更多的知识,请分享。

Android N无法在应用程序结算AIDL中编译

我只是试图用Android Studio 2.1 Preview 1中的新预览SDK 24 Android N编译我的应用程序。 我在应用程序中的应用程序结算。 当试图构build应用程序时,我得到以下exception aidl.exe E 6416 3312 io_delegate.cpp:102] Error while creating directories: Invalid argument Error:Execution failed for task ':app:compileDebugAidl'. > java.lang.RuntimeException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Users\Gebruiker\AppData\Local\Android\Sdk\build-tools\24.0.0-preview\aidl.exe'' finished with non-zero exit value 1 我已经尝试使用最新的IInAppBillingService.aidl,但我仍然得到相同的错误。 当我删除I​​InAppBillingService.aidl文件项目编译罚款。 这是我的构buildgradle的一部分 compileSdkVersion 'android-N' buildToolsVersion "24.0.0 rc1" defaultConfig { applicationId "xxx.myapp" minSdkVersion 14 targetSdkVersion 'N' […]