草庐IT

android - AdvertisingIdClient.getAdvertisingIdInfo(context) 正在抛出 NoClassDefFoundError

coder 2023-12-22 原文

我正在尝试使用 AdvertisingIdClient 获取我的 AIR 应用程序的广告 ID。所以我喜欢 AdvertisingIdClient.Info adInfo = AdvertisingIdClient.getAdvertisingIdInfo(context)。 我没有收到任何编译时错误。我从中生成了 ANE。当控件遇到此语句时,它会立即抛出 NoClassDefFoundError。我不知道到底发生了什么。 这是我的扩展代码

public class GetAdvertismentID implements FREFunction
{
    @Override
    public FREObject call(FREContext arg0, FREObject[] arg1)
    {
        Activity activity = arg0.getActivity();
        Context context = activity.getApplicationContext();

        String advertId = "initializeByGet\n";

        try
        {
            AdvertisingIdClient.Info adInfo = AdvertisingIdClient.getAdvertisingIdInfo(context);
            //if (!adInfo.isLimitAdTrackingEnabled())
                    //advertId = advertId + adInfo.getId();
        } catch(Error e) {

            String stackTrace = "";
            StackTraceElement[] stackArray = e.getStackTrace();
            for(int i = 0; i < stackArray.length; i++)
                stackTrace += stackArray[i].toString() + "\n";

            advertId += "Error::::::::::::::::";
            advertId += "\nLocalized Message : " + e.getLocalizedMessage();
            advertId += "\nMessage : " + e.getMessage();
            advertId += "\ntoString() : " + e.toString();
            advertId += "\nCause : " + e.getCause();
            advertId += "\nStack Trace : " + stackTrace;

        } catch (Throwable t) {

            advertId += "\nThrowable::::::::::::";
            advertId += "\nLocalized Message : " + t.getLocalizedMessage();
            advertId += "\nMessage : " + t.getMessage();
            advertId += "\ntoString() : " + t.toString();
        }


        try
        {
            return FREObject.newObject(advertId);
        }
        catch(Exception e)
        {
            return null;
        }
    }
}

当我在生成 ANE 后执行它时,我将得到这个输出:

initializeByGet
Error::::::::::::::::
Localized Message : com.google.android.gms.ads.identifier.AdvertisingIdClient
Message : com.google.android.gms.ads.identifier.AdvertisingIdClient
toString() : java.lang.NoClassDefFoundError: com.google.android.gms.ads.identifier.AdvertisingIdClient
Cause : null
Stack Trace : com.games24x7.extension.GetAdvertismentID.call(GetAdvertismentID.java:28)
com.adobe.air.Entrypoints.EntryMainWrapper(Native Method)
com.adobe.air.Entrypoints.EntryMainWrapper(Native Method)
com.adobe.air.Entrypoints.EntryMain(Entrypoints.java:139)
com.adobe.air.AndroidActivityWrapper.LaunchApplication(AndroidActivityWrapper.java:997)
com.adobe.air.AndroidActivityWrapper.onSurfaceInitialized(AndroidActivityWrapper.java:1196)
com.adobe.air.AIRWindowSurfaceView.surfaceChanged(AIRWindowSurfaceView.java:746)
android.view.SurfaceView.updateWindow(SurfaceView.java:554)
android.view.SurfaceView.access$000(SurfaceView.java:81)
android.view.SurfaceView$3.onPreDraw(SurfaceView.java:169)
android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:590)
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1793)
android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2695)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:156)
android.app.ActivityThread.main(ActivityThread.java:4987)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:511)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
dalvik.system.NativeStart.main(Native Method)

我觉得这里的问题是,它无法在运行时找到某个类的路径。所以我尝试了所有选项,例如: Using the new Android Advertiser id inside an SDK , How do I disable proguard for building my Android app? , http://jmsliu.com/2143/add-admob-ads-in-flash-based-android-apps.html 不幸的是,它们都不起作用。如果你们中有人这样做过,请帮助我。 我使用的是 Flash Builder 4.7 和 AIR SDK 14.0。

最佳答案

创建 ANE 时,最好从 JAR 中提取 google-play-services 类并将它们包含在 ANE 的 JAR 中。参见 this .

如果最终 APK 本身仍然缺少这些类,请查看 my question (以及随后我的回答)类似的问题。我试图将最新的 Google Play 服务 SDK 集成到我们的游戏中,我注意到 AIR SDK 中的 dx 工具正在剥离 Google Play 类。您可以使用 this tool 确认这一点以验证最终的 APK 中是否确实缺少这些类。

更新:

我之前使用上述相同的 dex2jar 工具将所需的类注入(inject)到 APK 中。但这不是必需的。您可以简单地更新 AIR SDK 中的 dx 工具。

关于android - AdvertisingIdClient.getAdvertisingIdInfo(context) 正在抛出 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25258049/

有关android - AdvertisingIdClient.getAdvertisingIdInfo(context) 正在抛出 NoClassDefFoundError的更多相关文章

  1. ruby - 在 Ruby 中重新分配常量时抛出异常? - 2

    我早就知道Ruby中的“常量”(即大写的变量名)不是真正常量。与其他编程语言一样,对对象的引用是唯一存储在变量/常量中的东西。(侧边栏:Ruby确实具有“卡住”引用对象不被修改的功能,据我所知,许多其他语言都没有提供这种功能。)所以这是我的问题:当您将一个值重新分配给常量时,您会收到如下警告:>>FOO='bar'=>"bar">>FOO='baz'(irb):2:warning:alreadyinitializedconstantFOO=>"baz"有没有办法强制Ruby抛出异常而不是打印警告?很难弄清楚为什么有时会发生重新分配。 最佳答案

  2. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  3. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  4. ruby - 如何测试正在使用 RSpec 和 Mocha 调用的混合类方法? - 2

    我有一个模块:moduleMyModuledefdo_something#...endend由类使用如下:classMyCommandextendMyModuledefself.execute#...do_somethingendend如何验证MyCommand.execute调用了do_something?我已经尝试使用mocha进行部分模拟,但是当未调用do_something时它不会失败:it"callsdo_something"doMyCommand.stubs(:do_something)MyCommand.executeend 最佳答案

  5. ruby-on-rails - Rails - Carrierwave 进程抛出 ArgumentError : no images in this image list - 2

    在尝试实现应用auto_orient的过程之后!对于我的图片,我收到此错误:ArgumentError(noimagesinthisimagelist):app/uploaders/image_uploader.rb:36:in`fix_exif_rotation'app/controllers/posts_controller.rb:12:in`create'Carrierwave在没有进程的情况下工作正常,但在添加进程后尝试上传图像时抛出错误。流程如下:process:fix_exif_rotationdeffix_exif_rotationmanipulate!do|image|

  6. ruby - Ruby 脚本如何检测到它正在 irb 中运行? - 2

    我有一个定义类的Ruby脚本。我希望脚本执行语句BoolParser.generate:file_base=>'bool_parser'仅当脚本作为可执行文件被调用时,而不是当它被irbrequire(或通过-r在命令行上传递)时。我可以用什么来包装上面的语句,以防止它在我的Ruby文件加载时执行? 最佳答案 条件$0==__FILE__...!/usr/bin/ruby1.8classBoolParserdefself.generate(args)p['BoolParser.generate',args]endendif$0==_

  7. ruby-on-rails - 模型范围正在破坏 rake db :migrate - rails 3. 2.3 postgres 9.1.3 - 2

    我在新的Rails应用程序(3.2.3)中运行迁移时遇到了问题。我们正在使用postrgres9.1.3和-pg(0.13.2)-当我运行rakedb:create,然后运行​​rakedb:migrate,我得到->1.9.3-p194(master)rakedb:migrate--trace**Invokedb:migrate(first_time)**Invokeenvironment(first_time)**Executeenvironmentrakeaborted!PG::Error:ERROR:relation"roles"doesnotexistLINE4:WHEREa

  8. javascript - jQuery 的 jquery-1.10.2.min.map 正在触发 404(未找到) - 2

    我看到有关未找到文件min.map的错误消息:GETjQuery'sjquery-1.10.2.min.mapistriggeringa404(NotFound)截图这是从哪里来的? 最佳答案 如果ChromeDevTools报告.map文件的404(可能是jquery-1.10.2.min.map、jquery.min.map或jquery-2.0.3.min.map,但任何事情都可能发生)首先要知道的是,这仅在使用DevTools时才会请求。您的用户不会遇到此404。现在您可以修复此问题或禁用sourcemap功能。修复:获取文

  9. ruby - 使用 cucumber/aruba/timecop : How to inject the context 测试命令行应用程序 - 2

    以下场景几乎概括了我的问题:Scenario:problemswithsubprocessesGiventhedateis01/01/201210:31WhenIrun`ruby-e"putsTime.now"`Thentheoutputshouldcontain"10:31"它归结为当我运行ruby​​-e"putsTime.now"时启动一个子进程,从而使我所有的Timecop.freezestub无效,因为他们只在主要过程中工作。我需要以某种方式将当前上下文“注入(inject)”到运行的命令中,但我似乎无法想出任何东西。我在这里尝试不可能的事情吗?步骤:require'time

  10. ruby-on-rails - Heroku 正在为 Rails 5 应用程序提供旧 Assets - 2

    我在Heroku上部署了一个新版本的Rails5应用程序,在cedar-14堆栈上运行。它在部署时没有预编译,所以我手动执行了herokurunrakeassets:precompile。不过,我可以看到它包含旧Assets,同时需要css和js文件。我的文件在app/assets中,所以该目录不可能不在Assets编译路径中。我在application.rb和production.rb上的配置:config.assets.compile=true#Icheckedtheenvironmentvariable,itrespondsto'enabled',#whichwouldretur

随机推荐