AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |
Back to Blog
Apptracker android7/31/2023 ![]() Free to use for creating 20 envelopes, one account user on up to two devices, one year of transaction history, debt tracking and community support.Investing +More All Investing Best IRA Accounts Best Roth IRA Accounts Best Investing Apps Best Free Stock Trading Platforms Best Robo-Advisors Index Funds Mutual Funds ETFs Bonds Help for Low Credit Scores +More All Help for Low Credit Scores Best Credit Cards for Bad Credit Best Personal Loans for Bad Credit Best Debt Consolidation Loans for Bad Credit Personal Loans if You Don't Have Credit Best Credit Cards for Building Credit Personal Loans for 580 Credit Score Lower Personal Loans for 670 Credit Score or Lower Best Mortgages for Bad Credit Best Hardship Loans How to Boost Your Credit Score Taxes +More All Taxes Best Tax Software Best Tax Software for Small Businesses Tax Refunds ![]() Small Business +More All Small Business Best Small Business Savings Accounts Best Small Business Checking Accounts Best Credit Cards for Small Business Best Small Business Loans Best Tax Software for Small Business Personal Finance +More All Personal Finance Best Budgeting Apps Best Expense Tracker Apps Best Money Transfer Apps Best Resale Apps and Sites Buy Now Pay Later (BNPL) Apps Best Debt Relief Best Mortgages for Average Credit Score.Best Loans to Refinance Credit Card Debt.Is there a dexer option to say don't check this rule? The method we extracted is only going to be called by advice on the constructor, so it will be running in the context of construction (so not violating immutability) but how we tell the deer that. However, I'm not sure what could be done in AspectJ to work around this. So I think I'm onto something but I don't understand it completely. I then removed the invoke virtual:Īnd now the immutable error goes away. This still produced the same error, I have no idea why. (bytecode index is wrong but you get the idea). However.I changed AspectJ to prevent the inclusion of the putfields, producing this: This is the byte code in the init$_aroundBody0:ĩ: invokevirtual #19 // Method com/apptracker/android/module/AppAd.getAllowSkip:()I This byte code was extracted from the constructor because around advice was placed on the constructor (pulling it out of there into something separate enables it to be run on proceed calls from any advice applying there). My thought was that it was complaining that the class is supposed to be immutable but there is byte code in the init$_aroundBody0 method that is modifying object fields. Shame the android tooling doesn't have a better description of the errors somewhere. Just run the run.cmd file and you will get the error.įor your convenience, there is also a folder inside the zip called "Weaved versus Original" where you can find the problematic class - AppVideoView - in its original version and after weaving. I'm attaching all the files to reproduce the problem. ![]() Looking at the bytecode after weaving myself I couldn't understand what's wrong with it, but you will probably figure it out :-) while processing com/apptracker/android/advert/AppVideoView.class ![]() while processing init$_aroundBody0 (Lcom/apptracker/android/advert/AppVideoView Landroid/content/Context Lcom/apptracker/android/module/AppAd )V while working on method init$_aroundBody0:(Lcom/apptracker/android/advert/AppVideoView Landroid/content/Context Lcom/apptracker/android/module/AppAd )V Locals: Lcom/apptracker/android/module/AppAd Locals: Lcom/apptracker/android/advert/AppVideoView Running ajc on an SDK called AppTracker with a specific pointcut creates a bytecode that, when running with Android's Dexer - results in the Dexer complaining about an "immutable instance": Zip file containing all files to reproduce the problem
0 Comments
Read More
Leave a Reply. |