jjzjj

android - Osmdroid map 未加载到我的设备上

coder 2023-12-26 原文

我有一台阿尔卡特 One Touch 7040,当我在上面测试我的 osmdroid 样本时, map 无法呈现。我在其他设备上测试过, map 在其中正确渲染,只有在这个设备上他们没有。我以为我的设备内存不足,所以我从设备中删除了一些应用程序,但仍然没有任何改善,有人可以告诉我可能是什么原因吗?

以下是我的logcat(由于超出字数限制,部分内容已被删除):

10-17 23:03:27.688 26424-26424/marine.com.osmsample I/OsmDroid: Using tile source: Mapnik
10-17 23:03:27.702 26424-26424/marine.com.osmsample E/OsmDroid: unable to create a nomedia file. downloaded tiles may be visible to the gallery. open failed: ENOENT (No such file or directory)
10-17 23:03:27.715 26424-26424/marine.com.osmsample E/SQLiteLog: (14) cannot open file at line 30202 of [00bb9c9ce4]
10-17 23:03:27.715 26424-26424/marine.com.osmsample E/SQLiteLog: (14) os_unix.c:30202: (2) open(/storage/sdcard0/osmdroid/tiles/cache.db) - 
10-17 23:03:27.729 26424-26424/marine.com.osmsample E/SQLiteDatabase: Failed to open database '/storage/sdcard0/osmdroid/tiles/cache.db'.
                                                                      android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
                                                                          at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
                                                                          at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209)
                                                                          at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
                                                                          at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
                                                                          at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
                                                                          at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
                                                                          at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
                                                                          at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
                                                                          at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
                                                                          at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:709)
                                                                          at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:702)
                                                                          at org.osmdroid.tileprovider.modules.SqlTileWriter.<init>(SqlTileWriter.java:44)
                                                                          at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:76)
                                                                          at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:50)
                                                                          at org.osmdroid.views.MapView.<init>(MapView.java:170)
                                                                          at org.osmdroid.views.MapView.<init>(MapView.java:200)
                                                                          at java.lang.reflect.Constructor.constructNative(Native Method)
                                                                          at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
                                                                          at android.view.LayoutInflater.createView(LayoutInflater.java:587)
                                                                          at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
                                                                          at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
                                                                          at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
                                                                          at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
                                                                          at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
                                                                          at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:285)
                                                                          at android.app.Activity.setContentView(Activity.java:1882)
                                                                          at marine.com.osmsample.MainActivity.onCreate(MainActivity.java:55)
                                                                          at android.app.Activity.performCreate(Activity.java:5121)
                                                                          at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1146)
                                                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358)
                                                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2446)
                                                                          at android.app.ActivityThread.access$600(ActivityThread.java:165)
                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:107)
                                                                          at android.os.Looper.loop(Looper.java:194)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5434)
                                                                          at java.lang.reflect.Method.invokeNative(Native Method)
                                                                          at java.lang.reflect.Method.invoke(Method.java:525)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:834)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
                                                                          at dalvik.system.NativeStart.main(Native Method)
10-17 23:03:27.731 26424-26424/marine.com.osmsample E/OsmDroid: Unable to start the sqlite tile writer. Check external storage availability.
                                                                android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
                                                                    at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
                                                                    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209)
                                                                    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
                                                                    at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
                                                                    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
                                                                    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
                                                                    at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
                                                                    at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
                                                                    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
                                                                    at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:709)
                                                                    at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:702)
                                                                    at org.osmdroid.tileprovider.modules.SqlTileWriter.<init>(SqlTileWriter.java:44)
                                                                    at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:76)
                                                                    at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:50)
                                                                    at org.osmdroid.views.MapView.<init>(MapView.java:170)
                                                                    at org.osmdroid.views.MapView.<init>(MapView.java:200)
                                                                    at java.lang.reflect.Constructor.constructNative(Native Method)
                                                                    at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
                                                                    at android.view.LayoutInflater.createView(LayoutInflater.java:587)
                                                                    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
                                                                    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
                                                                    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:285)
                                                                    at android.app.Activity.setContentView(Activity.java:1882)
                                                                    at marine.com.osmsample.MainActivity.onCreate(MainActivity.java:55)
                                                                    at android.app.Activity.performCreate(Activity.java:5121)
                                                                    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1146)
                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358)
                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2446)
                                                                    at android.app.ActivityThread.access$600(ActivityThread.java:165)
                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373)
                                                                    at android.os.Handler.dispatchMessage(Handler.java:107)
                                                                    at android.os.Looper.loop(Looper.java:194)
                                                                    at android.app.ActivityThread.main(ActivityThread.java:5434)
                                                                    at java.lang.reflect.Method.invokeNative(Native Method)
                                                                    at java.lang.reflect.Method.invoke(Method.java:525)
                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:834)
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
                                                                    at dalvik.system.NativeStart.main(Native Method)
10-17 23:03:27.732 26424-26424/marine.com.osmsample D/dalvikvm: create interp thread : stack size=128KB
10-17 23:03:27.732 26424-26424/marine.com.osmsample D/dalvikvm: create new thread
10-17 23:03:27.732 26424-26424/marine.com.osmsample D/dalvikvm: new thread created
10-17 23:03:27.732 26424-26424/marine.com.osmsample D/dalvikvm: update thread list
10-17 23:03:27.732 26424-26944/marine.com.osmsample D/dalvikvm: threadid=17: interp stack at 0x5f42b000
10-17 23:03:27.732 26424-26944/marine.com.osmsample D/dalvikvm: threadid=17: created from interp
10-17 23:03:27.732 26424-26424/marine.com.osmsample D/dalvikvm: start new thread
10-17 23:03:27.733 26424-26944/marine.com.osmsample D/dalvikvm: threadid=17: notify debugger
10-17 23:03:27.733 26424-26944/marine.com.osmsample D/dalvikvm: threadid=17 (Thread-2646): calling run()
10-17 23:03:27.733 26424-26944/marine.com.osmsample D/dalvikvm: threadid=17: exiting
10-17 23:03:27.733 26424-26944/marine.com.osmsample D/dalvikvm: threadid=17: bye!
10-17 23:03:27.739 26424-26424/marine.com.osmsample I/OsmDroid: sdcard state: mounted
10-17 23:03:27.745 26424-26424/marine.com.osmsample I/OsmDroid: sdcard state: mounted
10-17 23:03:27.746 26424-26424/marine.com.osmsample E/SQLiteLog: (14) cannot open file at line 30202 of [00bb9c9ce4]
10-17 23:03:27.746 26424-26424/marine.com.osmsample E/SQLiteLog: (14) os_unix.c:30202: (2) open(/storage/sdcard0/osmdroid/tiles/cache.db) - 
10-17 23:03:27.749 26424-26424/marine.com.osmsample E/SQLiteDatabase: Failed to open database '/storage/sdcard0/osmdroid/tiles/cache.db'.
                                                                      android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
                                                                          at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
                                                                          at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209)
                                                                          at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
                                                                          at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
                                                                          at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
                                                                          at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
                                                                          at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
                                                                          at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
                                                                          at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
                                                                          at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:709)
                                                                          at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:702)
                                                                          at org.osmdroid.tileprovider.modules.SqlTileWriter.<init>(SqlTileWriter.java:44)
                                                                          at org.osmdroid.tileprovider.modules.MapTileSqlCacheProvider.<init>(MapTileSqlCacheProvider.java:57)
                                                                          at org.osmdroid.tileprovider.modules.MapTileSqlCacheProvider.<init>(MapTileSqlCacheProvider.java:63)
                                                                          at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:88)
                                                                          at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:50)
                                                                          at org.osmdroid.views.MapView.<init>(MapView.java:170)
                                                                          at org.osmdroid.views.MapView.<init>(MapView.java:200)
                                                                          at java.lang.reflect.Constructor.constructNative(Native Method)
                                                                          at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
                                                                          at android.view.LayoutInflater.createView(LayoutInflater.java:587)
                                                                          at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
                                                                          at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
                                                                          at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
                                                                          at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
                                                                          at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
                                                                          at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:285)
                                                                          at android.app.Activity.setContentView(Activity.java:1882)
                                                                          at marine.com.osmsample.MainActivity.onCreate(MainActivity.java:55)
                                                                          at android.app.Activity.performCreate(Activity.java:5121)
                                                                          at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1146)
                                                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358)
                                                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2446)
                                                                          at android.app.ActivityThread.access$600(ActivityThread.java:165)
                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:107)
                                                                          at android.os.Looper.loop(Looper.java:194)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5434)
                                                                          at java.lang.reflect.Method.invokeNative(Native Method)
                                                                          at java.lang.reflect.Method.invoke(Method.java:525)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:834)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
                                                                          at dalvik.system.NativeStart.main(Native Method)
10-17 23:03:27.753 26424-26424/marine.com.osmsample E/OsmDroid: Unable to start the sqlite tile writer. Check external storage availability.
                                                                android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
                                                                    at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
                                                                    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209)
                                                                    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
                                                                    at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
                                                                    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
                                                                    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
                                                                    at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
                                                                    at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
                                                                    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
                                                                    at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:709)
                                                                    at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:702)
                                                                    at org.osmdroid.tileprovider.modules.SqlTileWriter.<init>(SqlTileWriter.java:44)
                                                                    at org.osmdroid.tileprovider.modules.MapTileSqlCacheProvider.<init>(MapTileSqlCacheProvider.java:57)
                                                                    at org.osmdroid.tileprovider.modules.MapTileSqlCacheProvider.<init>(MapTileSqlCacheProvider.java:63)
                                                                    at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:88)
                                                                    at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:50)
                                                                    at org.osmdroid.views.MapView.<init>(MapView.java:170)
                                                                    at org.osmdroid.views.MapView.<init>(MapView.java:200)
                                                                    at java.lang.reflect.Constructor.constructNative(Native Method)
                                                                    at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
                                                                    at android.view.LayoutInflater.createView(LayoutInflater.java:587)
                                                                    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
                                                                    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
                                                                    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:285)
                                                                    at android.app.Activity.setContentView(Activity.java:1882)
                                                                    at marine.com.osmsample.MainActivity.onCreate(MainActivity.java:55)
                                                                    at android.app.Activity.performCreate(Activity.java:5121)
                                                                    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1146)
                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358)
                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2446)
                                                                    at android.app.ActivityThread.access$600(ActivityThread.java:165)
                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373)
                                                                    at android.os.Handler.dispatchMessage(Handler.java:107)
                                                                    at android.os.Looper.loop(Looper.java:194)
                                                                    at android.app.ActivityThread.main(ActivityThread.java:5434)
                                                                    at java.lang.reflect.Method.invokeNative(Native Method)
                                                                    at java.lang.reflect.Method.invoke(Method.java:525)
                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:834)
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
                                                                    at dalvik.system.NativeStart.main(Native Method)  
10-17 23:03:39.774 26424-27015/marine.com.osmsample D/OsmDroid: Unable to store cached tile from Mapnik /14/9291/6359, database not available.
10-17 23:03:39.792 26424-27015/marine.com.osmsample I/System.out: [CDS]rx timeout:0
10-17 23:03:39.819 26424-27003/marine.com.osmsample D/OsmDroid: Unable to store cached tile from Mapnik /14/9292/6359, database not available.
10-17 23:03:39.823 26424-27003/marine.com.osmsample I/System.out: [CDS]rx timeout:0
10-17 23:03:39.846 26424-27015/marine.com.osmsample D/OsmDroid: Unable to store cached tile from Mapnik /14/9290/6359, database not available.
10-17 23:03:39.852 26424-27015/marine.com.osmsample I/System.out: [CDS]rx timeout:0

最佳答案

设备的 API 级别是什么?这可能是权限问题。有时 android 也会将 Environment.getExternalStorageDir() 挂载为只读,这是错误的。总有一天我会通过变通办法来解决这个问题。

osmdroid 提供的示例应用程序是否有效?你不仅要启动它,你还得放大一点。示例应用附带了一些缓存的磁贴。

查看堆栈跟踪,Environment.getExternalStorageDir() 正在返回一个只读挂载点。因此,唯一合理的解决方案是告诉 osmdroid 在该类型的设备上使用不同的缓存位置。它可以很容易地完成,但必须在创建 map View 之前完成。此链接包含使用 osmdroid 进行的 API 调用

Using osmdroid without getting access to external storage

这个答案https://stackoverflow.com/a/15612964/1203182有一些很棒的代码可以返回可写的挂载点/路径列表。提示用户询问缓存存储位置可能是个好主意

编辑:在 osmdroid 5.6 中添加,添加了我讨论的解决方法,以及示例应用程序“打开 map ”中的示例,向您展示如何使用它。 osmdroid 5.6 及以上版本的默认缓存位置是最大的可写存储分区。然后这将被保存为首选项(再次参见示例应用程序)

关于android - Osmdroid map 未加载到我的设备上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40100080/

有关android - Osmdroid map 未加载到我的设备上的更多相关文章

  1. ruby - 如何在续集中重新加载表模式? - 2

    鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende

  2. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  3. ruby-on-rails - 使用 config.threadsafe 时从 lib/加载模块/类的正确方法是什么!选项? - 2

    我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co

  4. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  5. ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载 - 2

    我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty

  6. 安卓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,打开命令窗口,并将路

  7. ruby-on-rails - 禁用设备的 :confirmable on-the-fly to batch-generate users - 2

    Devise是一个Ruby库,它为我提供了这个User类:classUser当写入:confirmable时,注册时会发送一封确认邮件。上周我不得不批量创建300个用户,所以我在恢复之前注释掉了:confirmable几分钟。现在我正在为用户批量创建创建一个UI,因此我需要即时添加/删除:confirmable。(我也可以直接修改Devise的源码,但我宁愿不去调和它)问题:如何即时添加/删除:confirmable? 最佳答案 WayneConrad的解决方案:user=User.newuser.skip_confirmation

  8. ruby-on-rails - 使用 gmaps4rails 动态加载谷歌地图标记 - 2

    如何只加载map边界内的标记gmaps4rails?当然,在平移和/或缩放后加载新的。与此直接相关的是,如何获取map的当前边界和缩放级别? 最佳答案 我是这样做的,我只在用户完成平移或缩放后替换标记,如果您需要不同的行为,请使用不同的事件监听器:在你看来(index.html.erb):{"zoom"=>15,"auto_adjust"=>false,"detect_location"=>true,"center_on_user"=>true}},false,true)%>在View的底部添加:functiongmaps4rail

  9. ruby-on-rails - 是否可以让 ActiveRecord 为使用 :joins option? 加载的行创建对象 - 2

    我需要做这样的事情classUser'User',:foreign_key=>'abuser_id'belongs_to:gameendclassGame['JOINabuse_reportsONusers.id=abuse_reports.abuser_id','JOINgamesONgames.id=abuse_reports.game_id'],:group=>'users.id',:select=>'users.*,count(distinctgames.id)ASgame_count,count(abuse_reports.id)asabuse_report_count',:

  10. ruby - 运行 rackup private_pub.ru -s thin -E production 命令时无法加载此类文件 -- thin (LoadError) - 2

    我指的是pubrailscasttutorial并已正确执行所有步骤,但在运行最后一个命令时,即rackupprivate_pub.ru-sthin-Eproduction为了架设faye服务器,我收到以下错误:/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in`require':cannotloadsuchfile--thin(LoadError)from/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in`require'from/var/lib/gems/1.9.1/gems

随机推荐